1. 程式人生 > >將numpy.ndarray轉換為OpenCV影象/新建影象

將numpy.ndarray轉換為OpenCV影象/新建影象

需求

將型別為numpy.ndarrayr,g,b值轉換成OpenCV影象

環境

python3.6.3
opencv: 3.4.1 (已安裝opencv-contrib)

關鍵點

numpy.ndarray中的每個元素的dtype應該為numpy.uint8

驗證過程

首先驗證一個事情,OpenCV的基礎資料型別為numpy.ndarray
基礎資料型別

正確程式碼如下:

import cv2
import numpy as np

# 圖片的解析度為200*300,這裡b, g, r設為隨機值,注意dtype屬性
b = np.random.randint(0
, 255, (200, 300), dtype=np.uint8) g = np.random.randint(0, 255, (200, 300), dtype=np.uint8) r = np.random.randint(0, 255, (200, 300), dtype=np.uint8) # 合併通道,形成圖片 img = cv2.merge([b, g, r]) # 顯示圖片 cv2.imshow('test', img) cv2.waitKey(0) cv2.destroyWindow('test')

最終結果如下:
正確釋放

但是,當不指定numpy.ndarray``中每個元素的dtype`屬性時,顯示出來的圖片是下面這樣的:
錯誤示範

結論

結論是顯而易見的,將numpy.ndarray轉換為OpenCV影象的關鍵點就是numpy.ndarray中的每個元素的dtype應該為numpy.uint8。當然這樣做也相當於新建了影象哈。簡單方便。