我想加载彩色图像,将其转换为灰度,然后反转文件中的数据。在Python中使用OpenCV反转图像
我需要什么:迭代在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")
我不想做一个显式循环(我想要更pythonic)。我可以看到,在一张白色背景的图像中,它变成了黑色,但只有它看起来不像其他颜色有很多(如果有的话)变化。
谢谢你! 我不知道,在Python中的标准将是无符号int ... – Mansueli
整洁,没想到它会这么简单,谢谢。 – Nit
除非你真的需要,否则不要重新发明轮子;要反转数据,请改用[Not](http://docs.opencv.org/2.4/modules/core/doc/operations_on_arrays.html#bitwise-not)(又名'bitwise_not')。 – vaxquis