我想加載彩色圖像,將其轉換爲灰度,然後反轉文件中的數據。在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