將numpy.ndarray轉換為OpenCV影象/新建影象
阿新 • • 發佈:2019-01-22
需求
將型別為numpy.ndarray
的r,g,b
值轉換成OpenCV影象
環境
python: 3.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
。當然這樣做也相當於新建了影象哈。簡單方便。