OpenCV - ValueError: слишком много значений для распаковки (ожидается 2) - PullRequest
0 голосов
/ 30 сентября 2019

Я новичок, работающий над проектом 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()


1 Ответ

0 голосов
/ 30 сентября 2019

Код image[0:500,0:500] дает вам один массив (часть изображения), а не два значения, которые вы можете присвоить двум переменным x,y.

Но поскольку cv использует массив numpy, вы можете изменять пиксели в этой части изображения, не используя x,y и for -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()
...