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で質問しましょう!
似たような質問が見つかりました
- Perl 画像が表示でnull; this.src 1 2022/04/19 11:31
- JavaScript jQueryで同じクラス名のものを別物として扱いたい 1 2022/06/17 14:14
- HTML・CSS 【HTML】【CSS】【Swiper】 元の画像は横1200×縦600なのですが、実際のサイト上に反 5 2022/07/16 13:57
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- PHP PHP echo バックスラッシュの使い方 img要素 2 2023/01/08 22:46
- PHP 共通の処理をまとめる方法がわからないのでアドバイスお願いします。 1 2022/12/19 20:20
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- HTML・CSS flex の各子要素を横幅 100% にしたい 1 2022/09/22 21:25
- PHP 画像が表示出来ません。 1 2023/02/02 16:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JavaScriptで変更した属性の元...
-
複数画像のランダム複数表示(...
-
MFCで画像を表示させているので...
-
error LNK2019 未解決のシンボ...
-
imgボタンにfocusの当て方
-
jQueryで、画像クリック→フェー...
-
OpenCV での画素値の比較について
-
jQuery 複数のfind()
-
セクトボックスの連携の仕方。
-
以下のタグはクリックすると画...
-
画像処理 C言語 元画像の幅...
-
Javaの正規表現でimgタグのalt...
-
画像が表示でnull; this.src
-
MAX関数を使ってからLEFT JOIN...
-
javascriptテキストBOX色を元に...
-
jqueryのsortableで一部ソート...
-
removeEventListenerについて
-
Slick.jsのオプションrtlについて
-
どの<li><a> が押されたか判別...
-
クリックで色変更後に既に変更...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JavaScriptで変更した属性の元...
-
MFCで画像を表示させているので...
-
画像が表示でnull; this.src
-
error LNK2019 未解決のシンボ...
-
Vb.net2005での画像の合成方法
-
onclickで画面が固まる・・・ら...
-
リンク先を動的に変更する
-
(javascript)HTMLで指定した...
-
【OpenCV】二値画像後、白の部...
-
jQuery 複数のfind()
-
ラズパイでno module named zbar
-
外部javascriptの重複を防ぐには
-
条件分岐でキーが入力されてい...
-
かぶらないランダム画像
-
HTMLからimgのsrcのみを正規表...
-
pythonで、tkinterとpillowの組...
-
OpenCV での画素値の比較について
-
imgボタンにfocusの当て方
-
指定したフォルダの画像を一括...
-
OpenCVでサンプルコードを使う...
おすすめ情報