gpt4 book ai didi

python - 操作数无法与形状一起广播 (780,1080) (780,1080,3)

转载 作者:太空宇宙 更新时间:2023-11-03 23:00:39 27 4
gpt4 key购买 nike

我正在使用 opencv 和 numpy 进行图像处理。

我正在对图像进行阈值处理,然后对其进行一些处理,然后用原始图像对其进行 mask 。

我做这样的阈值(第 1 步):

    ret,thresh1 = cv2.threshold(gray,210,255,cv2.THRESH_TOZERO)

然后我将 thresh1 分配给 img(步骤 2):

    img = thresh1

然后我像这样屏蔽(第 3 步):

    final = img&cv2.cvtColor(less, cv2.COLOR_GRAY2BGR)

然而,我在第 3 步得到以下错误:

    operands could not be broadcast together with shapes (780,1080) (780,1080,3)

如果我将 step2 替换为:

    cv2.imwrite("2.png", thresh1)
img = cv2.imread("2.png")

然后一切正常。我无法理解实际保存然后从磁盘读取相同图像与仅将 img 分配给 thresh1

的区别

有什么方法可以避免从磁盘写入和读取图像?

最佳答案

至于为什么文件write/read让它起作用,img/thresh是单 channel 图像。当您将其写入 png 格式时,它会被转换为 RGB(或更确切地说是 BGR)。因此,当您重新加载它时,它现在是一个 BGR 图像,与您转换后的 less 图像的形状相匹配。

啊,正如 berak 所说,在将 less 转换为 RGB 之前,您可能对 img&less 没问题。

或者:

img = cv2.cvtColor(thresh1, cv2.COLOR_GRAY2BGR)

您的代码的其余部分应该可以工作。

关于python - 操作数无法与形状一起广播 (780,1080) (780,1080,3),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19346365/

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