ダーク/ライト切り替え

【python】2枚の画像の違いを検出する方法【初心者】

投稿日2023-02-15

Picture of the logo


目次

目次を読み込み中...

個人的に2つの画像を比較して違いを見分けるアプリが欲しかったので作ってみました。同様のものは既に多数あるかと思いますが初心者でも簡単に作れるので紹介します。

# opencvをインストール

必要な人はpip install opencv-contrib-pythonコマンドでインストールして下さい。

# コードを実行

cv2.absdiff関数を使用して2つの画像の絶対差を計算し、しきい値を適用して大幅に異なるピクセルを特定します。サンプルコードは次のとおりです。

このコードでは、まず 2 つの画像 ('image1.jpg' と 'image2.jpg') を読み込み、cv2.cvtColor関数を使用してグレースケールに変換します。次に、cv2.absdiff関数を使用して 2 つの画像の絶対差を計算します。cv2.threshold関数を使用して差分画像にしきい値を適用します。この関数は、特定の値を下回るすべてのピクセルを 0 に設定し、その値を超えるすべてのピクセルを 255 に設定します。次に、cv2.findContours関数を使用して、しきい値処理された画像の有意差の輪郭を識別し、描画します。関数を使用して、これらの違いを四角形で囲みますcv2.rectangle。最後に、cv2.imshow関数を使用して出力画像を表示します。

# 画像を比較

下の画像には間違いが3つあります。

画像1

image1

画像2

image2

わかりましたでしょうか?結果は ↓

result
赤枠で囲われたところが違いになります。

# 文書を比較

文書を比較する事もできます。試しにchat-GPTで適当なショートストーリーを書いてもらいました。

文書1

story1

文書2

story2

文書2は数カ所単語を弄っています。内容には特に意味はありません。これも上記のプログラムにかけてみると、

result

ちゃんと検出してくれるようです。説明によるとドット単位で色の違いを見分けているようです。






関連記事

Django Restを使って管理しているブログにアクセスカウンタを秒で設置する【初心者】

blog

ブログのバックエンドにDjango Restを使い、ページビューのたびに1ずつ増えるカウンタを作る方法を備忘録も兼ねて書き残しておきます。

【初心者】Pythonで大量の文字列の重複チェックをする方法【備忘録】

blog

Pythonで文字列の配列、リストから重複の有無をチェックする簡単な方法を紹介します

【python】Youtube動画を自分のパソコンにダウンロードして保存する方法

blog

YouTube動画をローカルPCにダウンロードするプログラムの自作方法を紹介します。

【Python】英語から日本語への翻訳と音声出力【初心者】

blog

Pythonを利用した英語翻訳と日本語読み上げを簡単に実装する方法を紹介します。

Django4にdjango-dbbackupでAWS S3を保存先にしたらハマったので・・・

blog

djangoフレームワークでデータベースのバックアップにdjango-dbbackupを使う人は多いと思いますが、Djangoバージョン4などの比較的新しいバージョンにdjango-dbbackupやbotoをインストールした場合、そのままでは動かない可能性が高いので解決法を書き残しておきます。

Djangoフレームワークで国別アクセス制限を実装する方法

blog

サーバーを運用していると、特定の国からのアクセスを制限したいと思うことはありませんか?例えば、セキュリティの理由や、ビジネスの対象地域を限定したい場合などです。Djangoを使っている場合、簡単に特定の国からのアクセスを制限できる方法があります。この記事では、Djangoで国別アクセス制限を実装する方法を紹介します。

Django Rest FrameworkでTaggitによるフィルタリングを最速で実装する

blog

このブログサイトにも利用しています。Django Restに特化した解説が見つからなかったので備忘録も兼ねて書き残しておきます。

【Python】最強のパスワードの作り方わかったw【超初心者向け】

blog

pythonの標準モジュールでUUIDというモジュールを使うと簡単に強度な乱数を生成できます。32桁の16進数とそれを4つの-(ハイフン)で区切られた合計36文字の文字列をランダムで生成します。これだけで2^128とおりのパターンがあるので一意の固有の識別番号と言っても過言ではないでしょう。今回はそれを2つ並べます。

【備忘録】2023年版Djangoのstatic保存先をAWS S3にする

blog

Djangoの静的ファイルをS3に保存する手順。2023年1月にAWSに仕様変更が入り、追加の手続きが必要になったので、個人的備忘録を兼ねて書き残しておきます。

【Unity】複数のシーンがあるアプリでシーン遷移を軽くするための工夫

blog

Unityでゲームアプリを作る際にシーンをまたぐ時に少しでもシーン遷移を軽くする方法を個人的備忘録も兼ねて書き残しておきます。


スポンサーリンク

このサイトをシェアする