VC++にてOpenCVを使って画像処理を行っています。
cvHoughCircles関数を使ってハフ変換による円検出をしているのですが、
「Null pointer(NULL array pointer is passed)
in function cvGetMat,C\User\VP\opencv\cxcore\src\cxarry.cpp(2780)
Press"Abort"to terminate application.
Press"Retry"to debug(if the app is running under debugger).
Press"Ignore"to continue(this is not safe).」
というエラーが出てしまいます。
これはいったいどういったエラーなのでしょうか?
プログラムは以下の通りです。
//--------------------------------------------------
#include <stdio.h>
#include <cv.h>
#include <highgui.h>
int
main (int argc, char **argv)
{
int i;
float *p;
IplImage *src_img = 0, *src_img_gray = 0;
CvMemStorage *storage;
CvSeq *circles = 0;
char *filename = "lena.jpg";
IplImage *image;
//画像の読み込み・平滑化・二値化
image = cvLoadImage(filename, 0); // 0: グレイスケールで読み込む
// (2)ハフ変換のための前処理(画像の平滑化を行なわないと誤検出が発生しやすい)
cvSmooth (src_img_gray, src_img_gray, CV_GAUSSIAN, 11, 11, 0, 0);
storage = cvCreateMemStorage (0);
// (3)ハフ変換による円の検出と検出した円の描画
circles = cvHoughCircles (src_img_gray, storage, CV_HOUGH_GRADIENT,
1, 100, 20, 50, 10, MAX (src_img_gray->width, src_img_gray->height));
for (i = 0; i < circles->total; i++) {
p = (float *) cvGetSeqElem (circles, i);
cvCircle (src_img, cvPoint (cvRound (p[0]), cvRound (p[1])), 3, CV_RGB (0, 255, 0), -1, 8, 0);
cvCircle (src_img, cvPoint (cvRound (p[0]), cvRound (p[1])), cvRound (p[2]), CV_RGB (255, 0, 0), 3, 8, 0);
}
// (4)検出結果表示用のウィンドウを確保し表示する
cvNamedWindow ("circles", 1);
cvShowImage ("circles", src_img);
cvWaitKey (0);
cvDestroyWindow ("circles");
cvReleaseImage (&src_img);
cvReleaseImage (&src_img_gray);
cvReleaseMemStorage (&storage);
return 0;
}
//-----------------------------------------------------
解決方法など分かりましたら、よろしくお願いいたします。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
こんばんは。
>>これはいったいどういったエラーなのでしょうか?
cvSmooth (src_img_gray, src_img_gray, CV_GAUSSIAN, 11, 11, 0, 0);
の中で起こしています。src_img_grayにイメージが割り当てられていないので、「NULLのポインタを渡した」と、文句を言われているのではないでしょうか。
ファイルから読み込んだイメージをsrc_imgに入れ、dst_imgにも同じサイズを持ったイメージを割り当て、dst_imgに向かって関数を通して画像処理結果を出力する様に、扱うのではないでしょうか。
以下で動作しました。
int
main (int argc, char **argv)
{
int i;
float *p;
CvMemStorage *storage;
CvSeq *circles = 0;
char *filename = "lena.jpg";
IplImage *src_img = 0, *dst_img = 0;
//画像の読み込み・平滑化・二値化
src_img = cvLoadImage(filename, 0); // 0: グレイスケールで読み込む
//ココでdst_imgにも同じ容量を割り当てる(面倒なのでクローンする)
dst_img = cvCloneImage(src_img);
// (2)ハフ変換のための前処理(画像の平滑化を行なわないと誤検出が発生しやすい)
cvSmooth (src_img, dst_img, CV_GAUSSIAN, 11, 11, 0, 0);
storage = cvCreateMemStorage (0);
// (3)ハフ変換による円の検出と検出した円の描画
circles = cvHoughCircles (dst_img, storage, CV_HOUGH_GRADIENT, 1, 100, 20, 50, 10, MAX (dst_img->width, dst_img->height));
for (i = 0; i < circles->total; i++)
{
p = (float *) cvGetSeqElem (circles, i);
cvCircle (dst_img, cvPoint (cvRound (p[0]), cvRound (p[1])), 3, CV_RGB (0, 255, 0), -1, 8, 0);
cvCircle (dst_img, cvPoint (cvRound (p[0]), cvRound (p[1])), cvRound (p[2]), CV_RGB (255, 0, 0), 3, 8, 0);
}
// (4)検出結果表示用のウィンドウを確保し表示する
cvNamedWindow ("circles", 1);
cvShowImage ("circles", dst_img);
cvWaitKey (0);
cvDestroyWindow ("circles");
cvReleaseImage (&dst_img);
cvReleaseImage (&src_img);
cvReleaseMemStorage (&storage);
return 0;
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画像が表示でnull; this.src
-
MFCで画像を表示させているので...
-
dtで横並び
-
期間指定
-
複数画像のランダム複数表示(...
-
VideoBoxのカスタマイズ
-
「jQuery」アコーディオンメニ...
-
textareaに画像を表示したい
-
MAX関数を使ってからLEFT JOIN...
-
HPで写真をクリックすると次の...
-
jQueryを使ってランダムに表示
-
iframe内のリンクが飛ばないの...
-
JAVAスクリプトについて
-
フッター上部に謎の隙間
-
jquery 3の倍数のliだけ色を変える
-
画像とコメントの同時表示をし...
-
画像をクリックしたら別ウイン...
-
指定位置に要素を追加する
-
背景色を透明化
-
htmlの記述で link rel=styles...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JavaScriptで変更した属性の元...
-
画像が表示でnull; this.src
-
外部javascriptの重複を防ぐには
-
libjpegライブラリの使い方につ...
-
MFCで画像を表示させているので...
-
条件分岐でキーが入力されてい...
-
【OpenCV】二値画像後、白の部...
-
外部ファイルにしたら文字化け...
-
error LNK2019 未解決のシンボ...
-
jqueryスライドショーをストッ...
-
Vb.net2005での画像の合成方法
-
複数の画像をフェードイン・ア...
-
複数画像のランダム複数表示(...
-
ラズパイでno module named zbar
-
OpenCV 2値化について
-
リンク先を動的に変更する
-
HTMLからimgのsrcのみを正規表...
-
nodejsの画像表示は特別なこと...
-
jqueryのスライドショー。html...
-
onclickで画面が固まる・・・ら...
おすすめ情報