【问题标题】:OpenCV - ValueError: too many values to unpack (expected 2)OpenCV - ValueError:解包的值太多(预期 2)
【发布时间】:2019-10-01 03:22:04
【问题描述】:

我是第一次从事 Opencv 项目的初学者。我编写了下面的程序,将 RGB 图像中的白色像素转换为黑色像素,但出现了如标题所示的错误。如果您能向我解释出了什么问题以及我如何使它发挥作用,那就太好了。任何帮助表示赞赏。

import cv2
import numpy as np

image = cv2.imread("MAP.png")
print ("Your image has been opened.")

cv2.imshow("Image", image)

x,y = image [0:500,0:500]

print (image[297,365])

e = image[:,:,0]
r = image[:,:,1]
t = image[:,:,2]


image = [e,r,t]

for i in range (x,y):
    if [e,r,t] == [255,255,255]:
        [e,r,t] = [0,0,0]

print (image[297,365])

cv2.waitKey(0)
cv2.destroyAllWindows()


【问题讨论】:

  • 您需要包含图像和完整的 TraceBack。
  • 我敢打赌它是在x,y = image[0:500,0:500]... 不太确定作者在写这篇文章时的想法,没有真正的意义。
  • 总是将完整的错误消息(从单词“Traceback”开始)作为文本(不是屏幕截图)放在有问题的(不是评论)中。还有其他有用的信息。

标签: python opencv image-processing rgb


【解决方案1】:

代码image[0:500,0:500] 为您提供单个数组(图像的一部分),而不是您可以分配给两个变量x,y 的两个值。

但是因为cv 使用了numpy 数组,所以你可以在不使用x,yfor-loop 的情况下更改这部分图像中的像素

part_of_image = image[0:500,0:500]
part_of_image[ np.all(part_of_image == [255,255,255]) ] = [0,0,0]

顺便说一句:你必须记住cv 按顺序使用颜色B,G,R 而不是R,G,B


import cv2
import numpy as np

image = cv2.imread("MAP.png")

part_of_image = image[0:500,0:500]
part_of_image[ np.all(part_of_image == [255,255,255]) ] = [0,0,0]

cv2.imshow("Image", image)

cv2.waitKey(0)
cv2.destroyAllWindows()

【讨论】:

    猜你喜欢
    • 2021-07-05
    • 2017-08-29
    • 2018-05-22
    • 1970-01-01
    • 2014-07-31
    • 2017-12-14
    • 2017-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多