!!! サイト改修中のため表示が乱れる場合があります(1月末頃まで) !!!
画像処理

14-9. 画像差分で間違い探しを解く

やること

イタリアンレストランの間違い探しが子ども向けとは思えないほど難しかったので、画像差分を用いて解いてみます。Pythonならゆったり書いても40行ちょっとで済みます。

実行環境

WinPython3.6をおすすめしています。

WinPython - Browse /WinPython_3.6/3.6.7.0 at SourceForge.net
Portable Scientific Python 2/3 32/64bit Distribution for Windows

Google Colaboratoryが利用可能です。

Google Colab

問題1

羊キャラが消えてラム肉が登場したことで界隈がざわついたこちらの問題です。

pip

必要なパッケージをインストールします。

pip install opencv-python
pip install opencv-contrib-python
pip install matplotlib

ソースコード

とっても短いです。

import cv2
import matplotlib.pyplot as plt

#=============================
# パラメータ
#=============================
#画像1
img_path_1 = '14-16_1.png'

#画像2
img_path_2 = '14-16_2.png'

#=============================
# 画像表示関数
#=============================
def show(img):
    plt.figure(figsize=(10, 10))
    plt.imshow(img, vmin = 0, vmax = 255)
    plt.show()
    plt.close()

#=============================
# 画像読み込み
#=============================
img_1 = cv2.imread(img_path_1)
img_1 = cv2.cvtColor(img_1, cv2.COLOR_BGR2RGB)
img_2 = cv2.imread(img_path_2)
img_2 = cv2.cvtColor(img_2, cv2.COLOR_BGR2RGB)

#=============================
# 画像の差分
#=============================
#準備
fgbg = cv2.bgsegm.createBackgroundSubtractorMOG(history=2)

#差分マスクの計算
fgmask = fgbg.apply(img_1)
fgmask = fgbg.apply(img_2)
show(fgmask)

#画像1を暗くして差分マスクを重ねる
img_1 = img_1 // 4
img_1[fgmask==255] = (255, 0, 0)
show(img_1)

10箇所見つかりました!そこ変わってるんかい。。。

問題2

こちらの問題もやってみます。

結果

こちらも10箇所見つかりました!解散!

さいごに

これでもうサイゼリヤは怖くないです。

サイゼリ「ア」かサイゼリ「ヤ」か分からなくなってしまう人は、ドリ「ア」の逆!と覚えてください。

なおこれで私は「ドリア?ドリヤ?」となって無事死亡しました。

リアクションのお願い

「参考になった!」「刺激された!」と思ったらぜひリアクションをしましょう。エンジニアの世界はGive and Takeによって成り立っています。これからも無料で良質な情報にアクセスできるよう、Giveする人への感謝をリアクションで示しましょう!

この記事をシェアする

自身のブログ等で使用する場合は引用を忘れずに!

また、寄付も受け付けています。コーヒー1杯でとても喜びます(*˘︶˘*)

 Amazonでギフト券(アマギフ)を贈る

こちらのリンク から金額を指定してお贈りください。(デフォルトで10000円になっているのでご変更ください)

配送:Eメール
受取人:staffあっとvigne-cla.com
贈り主:あなたのお名前やニックネーム
メッセージ:◯◯の記事が参考になりました。など

のようにご入力ください。見返りはありませんのでご了承ください。

 Amazonで食事券(すかいらーく優待券)を贈る

500円 1000円 2000円 5000円 からお贈りください。

配送:Eメール
受取人:staffあっとvigne-cla.com
贈り主:あなたのお名前やニックネーム
メッセージ:◯◯の記事が参考になりました。など

のようにご入力ください。見返りはありませんのでご了承ください。

 その他、ギフト券やクーポン券をメールで贈る

デジタルのギフト券/クーポン券はメールアドレス(staffあっとvigne-cla.com)までお送りください。受領の返信をいたします。
紙のギフト券/クーポン券は 「郵便物はこちらへ」の住所 まで送付してください。名刺やメールアドレスを同封していただければ受領の連絡をいたします。
余った株主優待券等の処理におすすめです。
いずれも見返りはありませんのでご了承ください。

不明点はSNSでお気軽にご連絡ください

ビネクラのTwitter・Youtubeでコメントをください!


Slack・Discordの場合はこちらの公開グループに参加してShoya YasudaまでDMをください!


※当ブログに関することは何でもご相談・ご依頼可能です。

この記事を書いた人
Yasuda

博士(理学)。専門は免疫細胞、数理モデル、シミュレーション。米国、中国で研究に携わった。遺伝的アルゴリズム信者。物価上昇のため半額弁当とともに絶滅寸前。

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