世界一簡単な「プログラムで間違いを探す」

先日、以下のTweetをしました。
前から気にはなっていましたが、サイゼリアの間違い探しをプログラムで発見できるのか…。
さっそく検索しました。
しかし、手軽に書いたプログラムでは全問正解に到達できないようです。
(1件だけ大企業のシステムが全問正解してました)
そこで、簡単な絵だったらプログラムで間違いを発見できるのか?
世界で一番簡単な間違い探しのチュートリアルをエントリーします。

簡単な間違い探しなら可能なのか?

2枚の画像には「2つの違い」があります。
とても簡単ですね。
みなさん秒殺だと思います。

イメージ1
イメージ2

今回、この「2つの違い」をプログラムで探し当てたい!
プログラムの学習を始めた人には、面白いネタだと思います。
「プログラムでこんなこともできるのか!」
..と一人でも多くの人がモチベーションアップすれば幸いです。

世界で一番簡単な「間違い探し」プログラム

前提条件は以下です。

  • プログラムの学習を開始した。
  • 簡単なUnixコマンドがわかる。(cd, ls)
  • プログラムの基本はなんとなくわかった。
  • Pythonをinstallした。

事前準備は以下です。

  • numpyをインストール
  • matplotlibをインストール
  • opencv-pythonをインストル

上の2枚の画像をPCに保存します。
ターミナルを起動して画像を保存したディレクトリに移動します。

1行目 画像を保存したディレクトリに移動する。
2行目 保存した2枚の画像を確認。
3行目 numpy ライブラリを読み込む
4行目 opencv-pythonライブラリを読み込む
5行目 matplotlibライブラリを読み込む
6行目 画像を読み込む(7行目も)
9行目 2枚の画像の差分を取得します。
10行目 差分画像をセット
11行目 画像の表示

表示された差分画像は以下です。
簡単な違いであれば確実に取得できました。
2枚の絵と見比べてみると、違うのある場所が浮かび上がってます。

2枚の絵の「2つの違い」を発見した!
イメージ1
イメージ2

間違い探しの画像やアプリを作成するのはとても楽しいです。
しかし自分で作った間違い探しを自分で作ったプログラムに攻略させることも楽しいです。
「こんな簡単に作れるの?」と驚いた方。
ぜひ研究してサイゼリアや我々の間違い探しをプログラムで攻略してみてください。