前提・実現したいこと
画像を読み込んで、全画素を補色に変更したく、pythonでプログラムを作っています。
簡単に言うとネガポジ反転の補色バージョンみたいな感じにしたいです。
下に示した問題を解決できるようにご教授願います。
補色の計算式は以下の通りです。ここでいうmax、minはR,G,Bの中の最大値と最小値です。
R’=(Max+Min)-R
G’=(Max+Min)-G
B’=(Max+Min)-B
発生している問題・エラーメッセージ
現在、1×1pxの画像なら変換できるのですが、RGBの中身が複数あることによってこのプログラムじゃダメ見たいです。
1×1px以外の普通の画像でも全体を補色に変換できるにはどうすればよいか、
どんなアプローチをしていけばいいか、ご協力をお願いします。
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
該当のソースコード
python
1import cv2 2import numpy as np 3 4img = cv2.imread('C:/Users/potatato/Desktop/aaa.png') # 画像読み込み 5b,g,r = cv2.split(img) # 色分解 6 7max_rgb = max(r,g,b) #RGB最大 8min_rgb = min(r,g,b) #RGB最小 9 10#補色計算 11r = (max_rgb+min_rgb)-r 12g = (max_rgb+min_rgb)-g 13b = (max_rgb+min_rgb)-b 14 15img_hosyoku = cv2.merge((b, g, r)) # bgr順に色結合 16 17cv2.imwrite("C:/Users/potatato/Desktop/hosyoku.png",img_hosyoku) #保存
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。