OpenCV Python Numpy:ValueError:太多值无法解包(预期2)

尤纳斯·卡拉卡亚(Yunus Karakaya)

我正在尝试将图像裁剪到轮廓的边界。我从这个答案中找到了一个代码

mask = np.zeros_like(image)
cv2.drawContours(mask, [c], -1, 255, -1)
out = np.zeros_like(image)
out[mask == 255] = image[mask == 255]

(y, x) = np.where(mask == 255)
(topy, topx) = (np.min(y), np.min(x))
(bottomy, bottomx) = (np.max(y), np.max(x))
out = out[topy: bottomy + 1, topx:bottomx + 1]

crop_img = image[topy: bottomy + 1, topx:bottomx + 1]
cv2.imshow("croppedd", crop_img)

c轮廓在哪里

我收到如下错误:

Traceback (most recent call last):
  File "detect_shapes.py", line 66, in <module>
    (y, x) = np.where(mask == 255)
ValueError: too many values to unpack (expected 2)

我该如何解决我的问题?

  • Python 3.7版
  • OpenCV版本3.4.4

我认为这与我的形象无关,但这里是我的形象。

在此处输入图片说明

阿努巴夫·辛格

您上面所指的答案是grayscale使用

image = cv2.imread('...', 0)

这里0指的是cv2.IMREAD_GRAYSCALE标志。这很重要,因为在这种情况下,image将只有一个1通道。如果您以这种方式加载图像并运行代码,它将可以正常工作。我已经测试过了 在这种情况下,(y, x) = np.where(mask == 255)不会输出任何错误,因为输出np.where(mask == 255)是两个numpy数组的元组,因为它mask是一个2d数组(请使用进行检查mask.shape)。

但是,如果要加载你的形象image = cv2.imread('...'),而不是做这样的事情image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY),将其转换为灰度,那么在这种情况下,np.where(mask == 255)返回三个numpy的阵列的一个元组的mask3d这里数组这就是为什么您收到上述错误的原因。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Python opencv2“解包过多的值(预期2)”

OpenCV python:ValueError:太多值无法解包

Python ValueError:太多值无法解包

Pandas DataFrame apply()ValueError:太多值无法解包(预期2)

Django-ValueError:太多值无法解包(预期2)

python ValueError:太多值无法解包(预期...。)

Python ValueError:太多值无法解包(带有嵌套变量的For循环)

Python(烧瓶/棉花糖)ValueError:太多值无法解包(预期2)

ValueError:太多值无法解包:python列表操作

Sklearn管道引发ValueError:太多值无法解包(预期2)

Python ValueError:太多值无法用字典解包

python请求在数组中发送文件显示ValueError:太多值无法解包

Python DataFrame-ValueError:太多值无法解包(预期2)

ValueError:太多值无法解包-OpenCV Python HoughLines

Python语法错误:ValueError:太多值无法解包(预期2)

pygame:ValueError:太多值无法解包(预期2)

ValueError:太多值无法用Python中的元组列表解包(预期2)

Python列表推导“太多值无法解包”

OpenCV python:solvePnP ValueError:太多值无法解压

Python-ValueError:太多值无法解包-为什么?

Python ValueError:太多值无法在While循环中解包

MapReduce:ValueError:太多值无法解包(预期2)

如何在Python中修复“ ValueError:太多值以至无法解包(预期2)”

Python速记太多值无法解包错误

Python - ValueError:解包的值太多(预期为 2)

Python、Opencv、Imutils:ValueError:解包的值太多(预期为 2)

ValueError:在python3中解包的值太多(预期为2)

Python OpenCV 中的 ValueError - 没有足够的值来解包(预期 3,得到 2)

Python tuple to dict - ValueError: 太多值无法解包