我是第一次从事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()
答案 0 :(得分:0)
代码image[0:500,0:500]
为您提供单个数组(图像的一部分),而不是可以分配给两个变量x,y
的两个值。
但是由于cv
使用numpy数组,因此您可以更改图像这一部分的像素,而无需使用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()