
まくまく
プラグラミング言語「PYTHON」を使ってみよう!!業務自動化・効率化の実例を踏まえ、解説できればと思っています。対象は、プログラムを学び始めた初心者向けとなります。今回はopenCVを用いて2枚の画像の差分を抽出してみようと思います。
使用するのはopenCV
使用するのは、画像処理ライブラリのopenCVです。ここではopenCVがインストールされているのを前提として書き進めていきます。
サンプルコード
import cv2
img_1 = cv2.imread('sabuntest1.jpg',0)
img_2 = cv2.imread('sabuntest2.jpg',0)
img_diff = cv2.absdiff(img_1, img_2)
cv2.imwrite('sabun-result.jpg',img_diff)
コメント
- 1行目 OpenCVをインポート
- 2行目「img = imread〜」1枚目の画像を読み込み
- 3行目「img = imread〜」2枚目の画像を読み込み
- 4行目「cv2.absdiff 〜」で差分を抽出
- 5行目 差分画像を保存
元画像
1枚目の画像
2枚目の画像
これらの画像の差分を抽出します。見ての通りこの2枚の画像の違いは「雲と蝶々」だけです。
処理後
上のプログラムで処理すると、うまく「雲と蝶々」だけを抽出することができました。
別バージョン:差分画像 白黒反転
import cv2
img_1 = cv2.imread('sabuntest1.jpg',0)
img_2 = cv2.imread('sabuntest2.jpg',0)
img_diff = cv2.absdiff(img_1, img_2)
canny_img = cv2.Canny(img_diff, 50, 100)
canny_img2 = cv2.bitwise_not(canny_img)
cv2.imwrite('sabun-result.jpg',canny_img2)
2値化して白黒反転すれば、差分のみが白背景に黒線で表示されます。