[英]Resizing BayerRG8 image using PySpin(FLIR) changes it to grayscale
我正在使用 FLIR Blackfly S BFS-PGE-31S4C 收集視頻並使用 python 編寫視頻,使用 PySpin 包。 我想添加一個實時視頻預覽,這樣我就可以看到正在錄制的內容,並想縮小圖像的大小,這樣我就可以輕松地在屏幕上看到整個幀。 以下是我當前的代碼:
im = cam.GetNextImage(PySpin.EVENT_TIMEOUT_INFINITE if wait else PySpin.EVENT_TIMEOUT_NONE)
im = im.GetNDArray()
resize_factor = 2
cv2.imshow("test1",cv2.cvtColor(im, cv2.COLOR_BAYER_RG2RGB))
cv2.waitKey(0)
im = im[::resize_factor,::resize_factor]
cv2.imshow("test2",cv2.cvtColor(im, cv2.COLOR_BAYER_RG2RGB))
cv2.waitKey(0)
攝像機以 Bayer RG8 格式記錄。 PySpin 有一個 .GetNDArray() 方法,可以將圖像轉換為 numpy 數組(我相信仍然是bayer RG8 格式,因為值是uint8
)。 當我在調整大小之前查看 numpy 數組的類型(type(im),type(im[0]),type(im[0][0]))
時,它是一個包含numpy.uint8
值的2D numpy.ndarray
,在我調整圖像大小后也是如此。 當我顯示第一張圖像(轉換前)時,它是彩色的。 當我顯示第二張調整大小的圖像時,它是灰度的,只是忽略了 cv2.cvtColor() 調用。
我認為這可能與原始圖像的 BayerRG8 格式有關,但不確定為什么調整大小會以這種方式影響它,因為我對該圖像格式不太了解。 任何關於我的問題的建議或改進問題的建議都將不勝感激!
調整拜耳圖像的大小非常棘手。 請記住,顏色分量是交錯的:
R G R G R G ...
G B G B G B ...
R G R G R G ...
您的簡單抽取不會尊重像素值。 如果你抽取 2,你最終會得到 R 平面。 您應該使用圖像庫來調整大小,而不僅僅是抽取,並且可能應該首先轉換為 RGB。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.