Pythonで2枚の画像を比較し、差異を表示したい
Teratailでの初質問です。不適切な点があるかもしれませんが、ご容赦ください。
やりたいこと
大まかにはタイトルの通りですが、フローは次のようなものを想定しております。
- 画像を2枚読み込む
- 2枚の画像を”色”で比較する
- 比較した結果を保存
- 3のデータをもとに色に差が無いならグレー、差が小さければ水色、差が大きくなるにつれ赤色で表示
現状は画像を読み込む段階までで、「画像を比較」からその結果をもとに「画像を作成」することができておりません。
Python
1import cv2 2import Numpy 3img1 = cv2.imread(“img1.jpg”) 4img2 = cv2.imread(“img2.jpg”)
Pythonは以前Seleniumで少し使ったのみのため全体像を捉えられておらず、何の用途でどんなライブラリ等を使うのかといったものが分かりません。
参考になる考え方やサイト、記事等がありましたらご教授頂けないかと思います。
10/6 15:44追記
どうにも低評価が付けられているようですが、現在OpenCVのドキュメントを読みながら試行錯誤中です...。
10/6 20:59追記
難しいですね。
画像を読み込みグレイスケールにしたあと2枚の画像を比較。その結果から画像を作成し色味を適応。そうして画像は出来たのですが、それには次の問題がありました。
- 色が同じなら「白」にしたいが「青色」になる
- (1)の色と、差分を表示する「青色」の部分の区別が付かない
原因は差分が入っているimg_diffをapplyColorMapで「青色」の色味に調整しているためだと思われます。
ここを独自に「同じ色なら白」にし、「色の差が小さければ水色で、大きければ赤に」といった処理を行うものに書き換えれば目的とする結果が得られるのでは無いかと思いました。
しかし、それをどうやって実装したら良いものか非常に頭を悩ませています。。
Python
1import cv2 2import Numpy 3img1 = cv2.imread(“img1.jpg”) 4img2 = cv2.imread(“img2.jpg”) 5img_diff = cv2.absdiff(img1, img2) 6img3 = cv2.applyColorMap(img_diff, cv2.COLORMAP_JET) 7cv2.imwrite(“img3”, img3)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。