![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
はじめまして。今回皆様のお力をお借りしたく質問させて頂きました。
どうぞ宜しくお願いします。
私は今OpenCV1.1を使って、2枚のエッジ処理して2値化された画像の差分を取り、変化しているビット数をカウントして表示させるというプログラムを作っています。
しかし、デバッグするとエラーが出てしまい、失敗してしまいます。
どこに問題があるのでしょうか?
プログラム初心者のため、初歩的なミスをしているのかもしれません。
開発環境はMicrosoft Visual C++ 2010です。
以下にプログラムを載せておきます。
#include "stdafx.h"
#include <cv.h>
#include <highgui.h>
#pragma comment(lib,"cv.lib")
#pragma comment(lib,"cxcore.lib")
#pragma comment(lib,"highgui.lib")
/* 背景画像のファイル名 */
#define INPUT_FILE1 "5×5medcanny.bmp"
/* 対象画像のファイル名 */
#define INPUT_FILE2 "Fire5×5medcanny.bmp"
/* 差分画像のファイル名 */
#define OUTPUT_DIFF_FILE "diff.bmp"
#define WIDTH 352
#define HEIGHT 288
int _tmain(int argc, _TCHAR* argv[])
{
// 画像変数宣言
IplImage *img_in1, *img_in2, *img_diff;
cvNamedWindow("期待値画像");// 表示ウィンドウの作成
cvNamedWindow("比較画像");
cvNamedWindow ("差分画像", CV_WINDOW_AUTOSIZE);
img_in1 = cvLoadImage(INPUT_FILE1); // 画像ファイルの読み込み
img_in2 = cvLoadImage(INPUT_FILE2);
if(img_in1 == NULL || img_in2 == NULL)// ファイルが読み込めない場合
{
printf("ファイルが読み込めません。\n");
cvWaitKey(0);// キー入力待機
return -1;
}
// 画像領域の確保
img_diff = cvCreateImage(cvSize(img_in1->width, img_in1->height), IPL_DEPTH_8U, 1);
// 期待値画像と比較画像の差分
cvAbsDiff(INPUT_FILE1, INPUT_FILE2, OUTPUT_DIFF_FILE);
// 差分画像ファイルの読み込み
img_diff = cvLoadImage(OUTPUT_DIFF_FILE);
// 差分画像の画素数の取得
IplImage img_hdr;
IplImage *dst_img = cvGetImage (img_diff, &img_hdr);
// 差分画像の画素数のカウント
int count = 0;
count += cvCountNonZero(dst_img);
printf("%d\n",count);
cvShowImage("期待値画像", img_in1);// 表示ウィンドウに画像を表示
cvShowImage("比較画像", img_in2);
cvShowImage("差分画像", img_diff);
cvSaveImage("Image_diff.bmp", img_diff);// 出力画像の保存
cvWaitKey(0);// キー入力待機
cvDestroyAllWindows();// すべての表示ウィンドウの破棄
cvReleaseImage(&img_in1);// 画像領域の解放
cvReleaseImage(&img_in2);
cvReleaseImage(&img_diff);
cvReleaseImage(&dst_img);
return 0;
}
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
> // 期待値画像と比較画像の差分
> cvAbsDiff(INPUT_FILE1, INPUT_FILE2, OUTPUT_DIFF_FILE);
http://opencv.jp/opencv-1.1.0/document/opencvref …
cvAbsDiffの引数は「ファイル名」ではありません。
> // 差分画像ファイルの読み込み
> img_diff = cvLoadImage(OUTPUT_DIFF_FILE);
ファイルに書き出されないのですから、読むのは無意味です。
また、この前で cvCreateImage した領域へのポインタが、ここの処理で上書きされてしまうめ、cvReleaseImageすることができなくなります。
> // 差分画像の画素数の取得
> IplImage img_hdr;
> IplImage *dst_img = cvGetImage (img_diff, &img_hdr);
何を意図したものか不明。「差分画像の画素数の取得」とは書いてあるけど。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
libjpegライブラリの使い方につ...
-
画像が表示でnull; this.src
-
JavaScriptで変更した属性の元...
-
OpenCVでのビット数のカウント
-
onclickで画面が固まる・・・ら...
-
画像処理 C言語 元画像の幅...
-
リンク先を動的に変更する
-
MAX関数を使ってからLEFT JOIN...
-
背景色を透明化
-
読み込んだQRコードをフォーム...
-
【CSS】floatで左右に並べた...
-
jQueryで同じクラス名のものを...
-
javascriptでEnterキーをtabキ...
-
オンマウス時に別画像を上に重...
-
jQuery FlexSliderのカルーセ...
-
画面が真っ白になるのはどうして?
-
getElementByIdの戻り値がnull...
-
Ctrl+F(検索)の窓を出したいの...
-
javascriptでオブジェクトの重...
-
<li>タグの順番を入れ替える方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JavaScriptで変更した属性の元...
-
MFCで画像を表示させているので...
-
Vb.net2005での画像の合成方法
-
HTMLからimgのsrcのみを正規表...
-
条件分岐でキーが入力されてい...
-
画像が表示でnull; this.src
-
error LNK2019 未解決のシンボ...
-
ダイアログから画像ファイルは...
-
外部javascriptの重複を防ぐには
-
複数画像のランダム複数表示(...
-
【OpenCV】二値画像後、白の部...
-
onclickで画面が固まる・・・ら...
-
libjpegライブラリの使い方につ...
-
色の変更
-
html内にスライドショーを複数設置
-
javaScriptでリンク画像のラン...
-
jqueryスライドショーをストッ...
-
javascriptでのパスについて
-
IplImageのBmp変換。
-
OpenCV での画素値の比較について
おすすめ情報