質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

763閲覧

ファルダ内の画像を2つずつ比較して、一致しない画素値の総数を出力したい

tiroha

総合スコア109

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/12/09 11:30

プログラムの機能
・指定した画像ファイルを2つ比較して、一致しない画素値の総数を出力する。

したいこと
・ファルダ内の画像を2つずつ比較して、一致しない画素値の総数を一気に出力する。

 例えば、
①376_OUT.jpgと377_OUT.jpgを比較して、一致しない画素値の総数を出力
②377_OUT.jpgと378_OUT.jpgを比較して、一致しない画素値の総数を出力
・・・
これをファルダ内の画像ファイルすべてに適用。
for文を使いそうな気がするのですが、、、

python

1import cv2 2import numpy as np 3 4# 画像を比較し、一致していない箇所を表示する 5 6# 元画像 7# 単一画像 8img_original = cv2.imread("a/376_OUT.jpg") 9 10#マルチスケール画像 11#r, img_original = cv2.imreadmulti('a.tif', [], cv2.IMREAD_ANYCOLOR) 12 13 14 15# 比較対象画像(単一画像) 16img_comparison1 = cv2.imread("a/377_OUT.jpg") 17#マルチスケール画像 18#r, img_comparison1 = cv2.imreadmulti('a.tif', [], cv2.IMREAD_ANYCOLOR) 19 20# 比較対象画像2枚目(違う画像) 21#r, img_comparison2 = cv2.imreadmulti('b.tif', [], cv2.IMREAD_ANYCOLOR) 22 23#比較画像の画素値が一致しない総数を出力 24print(sum(np.sum(img_original[i] != img_comparison1[i]) for i in range(len(img_comparison1)))) 25#print(sum(np.sum(img_original[i] != img_comparison2[i]) for i in range(len(img_comparison2)))) 26

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ppaulさんが紹介してくださったコマンドはやってみましたか。
itertoolsは知らなかったので挑戦してみました。
公式ドキュメントを見ても組み合わせのリストを取り出す方法がわからずググりまくりました。
なお、一致しない画素値の処理は未実装です。

Python

1import glob 2import itertools 3import os 4 5os.chdir("./a") 6files = glob.glob("*.jpg") 7print("ファイルの数:", len(files)) 8 9combinations = list(itertools.combinations(files, 2)) 10print("組み合わせの数:", len(combinations)) 11 12for image1, image2 in combinations: 13 result = "未実装" 14 print (f"{image1}{image2} の比較結果:{result}")

投稿2021/12/22 11:18

mo256man

総合スコア43

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

公式ドキュメント glob --- Unix 形式のパス名のパターン展開でフォルダ内の画像ファイル名のリストを取得し、公式ドキュメント itertools.combinationsを使って2個づつの組み合わせのループを回して、処理で処理で一致しない画素値の処理を行えばできます。

投稿2021/12/09 12:05

ppaul

総合スコア24666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問