gpt4 book ai didi

python - 如何解决在 Python 中合并 OpenCv 中的 channel 的问题?

转载 作者:行者123 更新时间:2023-12-02 16:33:06 24 4
gpt4 key购买 nike

我只是导入了一张图片。
我想将每个 BGR channel 与零数组合并,然后显示它们。
我编写了如下代码:

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 .

顺便说一句,我认为您只想显示图像而不关心合并?

然后,您可以使用单个 channel 进行从 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))

关于python - 如何解决在 Python 中合并 OpenCv 中的 channel 的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62167729/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com