簡體   English   中英

如何解決在 Python 中合並 OpenCv 中的頻道的問題?

[英]How can I fix my problem with merging channels in OpenCv in Python?

我只是導入了一張圖片。 我想將每個 BGR 通道與零 arrays 合並,然后顯示它們。 我編寫了如下代碼:

import cv2
import numpy as np
image = cv2.imread('./images/input.jpg')

B, G, R = cv2.split(image)

zeros = np.zeros((image.shape[:2]), dtype = 'int8')

cv2.imshow("Red", cv2.merge([zeros1, zeros1, R]))
cv2.imshow("Green", cv2.merge([zeros, G, zeros]))
cv2.imshow("Blue", cv2.merge([B, zeros, zeros]))

cv2.waitKey(500)
cv2.destroyAllWindows()

運行此代碼后,我收到以下錯誤。

error                                     Traceback (most recent call last)
<ipython-input-13-9252d63ed763> in <module>
      7 zeros = np.zeros((image.shape[:2]), dtype = 'int8')
      8 
----> 9 cv2.imshow("Red", cv2.merge([zeros1, zeros1, R]))
     10 cv2.imshow("Green", cv2.merge([zeros, G, zeros]))
     11 cv2.imshow("Blue", cv2.merge([B, zeros, zeros]))

error: OpenCV(4.1.1) C:\projects\opencv-python\opencv\modules\core\src\merge.dispatch.cpp:129: error: (-215:Assertion failed) mv[i].size == mv[0].size && mv[i].depth() == depth in function 'cv::merge'

這對我來說似乎是正確的。 有什么問題,我該如何解決?

這是錯誤:


zeros = np.zeros((image.shape[:2]), dtype = 'int8')

dtype 應該與圖像相同,因此uint8

順便說一句,我認為您只想顯示圖像而不關心合並?

然后,您可以使用單個通道進行從 GREY 到 BGR 的轉換:

cv2.imshow("Red", cv2.cvtColor(R, cv2.COLOR_GRAY2BGR))
cv2.imshow("Green", cv2.cvtColor(G, cv2.COLOR_GRAY2BGR))
cv2.imshow("Blue", cv2.cvtColor(B, cv2.COLOR_GRAY2BGR))

在這一行:

zeros = np.zeros((image.shape[:2]), dtype = 'int8') 

dtype更改為'uint8'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM