二枚の画像があり、一枚目の画像で黒(0,0,0)の箇所をもう一枚の画像で黒く塗るコードをpythonで作成したいのですがどのようにすればよろしいでしょうか?。
二枚の画像の大きさは同じです。
###作成したコード
python
1import cv2 2import numpy as np 3 4img1 = cv2.imread('1.png') 5img2 = cv2.imread('2.png') 6 7comparison=np.where(img1 == 0, 0, 1) 8 9difference=np.array(img2*comparison,dtype = np.uint8) 10 11cv2.imwrite('difference.png',difference)
下記のサイトを参考にしてしています。
https://tat-pytone.hatenablog.com/entry/2019/03/20/195949
カラー画像で抜き出したいのでカラーで読み込み、img1が黒の場合に0、それ以外の場合1にしてimg1で黒色以外の場合の箇所はimg2で色を保持したいのですが元の色が保持できない場合があり困っています。
pythonバージョン ・3.6.8
> 一枚目の画像で黒(0,0,0)の箇所
一枚目の画像は、黒以外は何があるのでしょうか?
黒以外は白だけですか?
白と黒以外もあるのですか?
黒以外の複数の色があります。
> カラー画像で抜き出したいのでカラーで読み込み
をしないといけないのはimg2だけですよね
img1もカラーで読むと、RGB全部0かを判定しないといけないので、img1はグレースケールで読んだ方が簡単だと思います
参考
https://qiita.com/Zumwalt/items/fb2e7c20d935803126c7