カラー画像を読み込み、グレースケールに変換してから、ファイル内のデータを反転したいと考えています。
必要なもの: 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 になろうとしています)。白い背景の 1 つの画像が黒くなっていることがわかりますが、これだけでは、他の色が (もしあれば) 大きく変化しているようには見えません。