python - OpenCV - ValueError:解包的值太多(预期 2)
问题描述
我是第一次从事 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()
解决方案
代码image[0:500,0:500]
为您提供单个数组(图像的一部分),而不是您可以分配给两个变量的两个值x,y
。
但是因为使用 numpy 数组,所以您可以在不使用and -loopcv
的情况下更改这部分图像中的像素x,y
for
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()
推荐阅读
- sql - 解析 r 中的列(或其他语言,如 SQL)
- c++ - C++ 多态继承问题的优雅解决方案
- java - 对范围使用 if/else 语句
- angular - 如何在一系列 API 调用中正确链接 observables
- javascript - 滚动到底部不在非活动标签中工作
- bash - 在 Bash for Windows 和 Powershell 中,如何设置热键以在提示的路径上交替前进/后退 \?
- docker - 如何通过 Docker Compose 初始化 Splunk HTTP 事件收集器并将其与 splunk 日志记录驱动程序一起使用
- c# - 用户是否看过某条推文?推特 API
- python - 从列表中删除换行符
- reactjs - 如何从 React 中的对象中获取数据