Python OpenCV / たった5行で画像の差分を表示する方法

まくまく
まくまく
プラグラミング言語「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値化して白黒反転すれば、差分のみが白背景に黒線で表示されます。



タイトルとURLをコピーしました