カラーイメージを読み込んでグレースケールに変換し、ファイル内のデータを反転したいとします。OpenCVを使ってPythonでイメージを反転する
私は必要なもの: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で標準がunsigned intであることを知りませんでした... – Mansueli
きちんとした、これは簡単だとは思わなかった、ありがとう。 – Nit
本当にする必要がある場合を除き、ホイールを再発明しないでください。データを反転するには、[Not](http://docs.opencv.org/2.4/modules/core/doc/operations_on_arrays.html#bitwise-not)(別名 'bitwise_not')を使用してください。 – vaxquis