Я хочу загрузить цветное изображение, преобразовать его в оттенки серого, а затем инвертировать данные в файле.
Что мне нужно: перебрать массив в OpenCV и изменить каждое значение с помощью этой формулы (это может быть неправильно, но мне кажется разумным):
img[x,y] = abs(img[x,y] - 255)
но я не понимаю, почему он не работает:
def inverte(imagem, name):
imagem = abs(imagem - 255)
cv2.imwrite(name, imagem)
def inverte2(imagem, name):
for x in np.nditer(imagem, op_flags=['readwrite']):
x = abs(x - 255)
cv2.imwrite(name, imagem)
if __name__ == '__main__':
nome = str(sys.argv[1])
image = cv2.imread(nome)
gs_imagem = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
inverte(gs_imagem, "invertida.png")
inverte2(gs_imagem, "invertida2.png")
Я не хочу делать явный цикл (я пытаюсь быть более питоническим). Я вижу, что на одном изображении, получившем белый фон, он стал черным, но только это не похоже на то, что другие цвета имеют много изменений (если они есть).