Почему python openCV не меняет цвета фона так, как я ожидаю? - PullRequest
0 голосов
/ 24 июня 2019

Я только начинаю с opencv в python3.7.

Я пытаюсь изменить каждый цветовой пиксель серого изображения. например, пиксель со значением 1 ،, равным 254, или пиксель со значением 30, равным (255-30) = 225 и т. д. мой код работает правильно, но одна вещь неверна: фон моей картинки темный и черный Я ожидаю, что после выполнения кода фон будет светлым и белым. но фон не меняется.

import cv2 as cv
img2 = cv.imread('2.JPG')
print(img2.shape)
image2 = img2[0::2, 0::2]
for i in range(image2.shape[0]):
    for j in range(image2.shape[1]):
        for k in range(256):
            if image2[i, j, 2] == k:
                image2[i, j] = 255 - k

cv.imwrite('img2.JPG', image2)
cv.imshow('img2', image2)
cv.waitKey()

1 Ответ

2 голосов
/ 24 июня 2019

Судя по логике, вы хотите инвертировать изображение в градациях серого. Вы можете использовать image2 = 255 - image2 или image2 = cv2.bitwise_not(image2).

import cv2 as cv

img2 = cv.imread('2.jpg', 0)
image2 = img2[0::2,0::2] #downsampling
image2 = 255 - image2
# image2 = cv.bitwise_not(image2)
cv.imwrite('img2.JPG', image2)
cv.imshow('img2', image2)
cv.waitKey()
...