• 締切済み

同じ画像検索プログラム

私は今、同じ画像を探し出すプログラムを作っています。 大体の手順としては、 同じ画像を探したい画像ファイル名を手動で入力し読み込み、 その後FindFirstFileで指定したディレクトリにある同じ拡張子を探して、 手動で指定した画像のデータと同じかどうかを比べ、 さらにその後FindNextFileを用いてディレクトリ内の画像ファイルを次々と調べていくというようなものです。 プログラムを大体以下のよう作り実行してみたところ、 一枚目の比較はうまくいくのですが、 二枚目以降の比較になると何故か手動で入力した画像ファイルのデータが変化してしまいます。 具体的には輝度値がFindFirstFileで収得した一枚目との比較のときは100であったのに、 FindNextFileで収得した二枚目以降との比較になると-1になってしまうという感じです。 すなわち、同じ画像を二枚続けて収得しても、 一枚目の画像は同じ、二枚目の画像は異なっていると認識してしまうのです。 この説明では分かりにくいかもしれませんが、 どのような原因、解決法が考えられるか分かる方がいらっしゃったら教えてください。 以下は私が作成したプログラムの大体の内容です HANDLE hFind; WIN32_FIND_DATA fd; 同じ画像を探したい画像ファイル読み込み部 hFind = FindFirstFile("指定ディレクトリ", &fd); do { 収得ファイル読み込み部 画像比較部 }while(FindNextFile(hFind, &fd));

みんなの回答

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

あのう・・・ >以下は私が作成したプログラムの大体の内容です 検索部分のソースを書き込まれてますが、 hirasyanさんは、何がおかしいと予測されてるのですか? FindFirstFile等がおかしいと思われているのですか? このAPIはファイル名しか取得してこないんですから どう考えても「収得ファイル読み込み部」、「画像比較部」がおかしいと考えるのが筋ではないのですか?

hirasyan
質問者

補足

アドバイスありがとうございます。 このアドバイスの返事を考えてる間に自分でまちがえに気づきました。 「同じ画像を探したい画像ファイル読み込み部」で読み込んだ画像をFindFirstFileで全画素一度参考にして比較しているのに、 比較し終えた状態そのままで、 手動で入力したファイルとFindNextFileで収得したファイルを比較していることが原因でした。 doのブロックの先頭にもう一度、手動で入力したファイルを読み込みなおすことで解決いたしました。 本当に申し訳ありませんでした&アドバイスありがとうございました

関連するQ&A

専門家に質問してみよう