電子書籍の厳選無料作品が豊富!

Iplimageについて

プログラムを組み立てた際,
以下のエラー文がでてきます。

Null pointer(NULL array pointer is passed)
in function cvGetMat,
C:\user\VP\opencv\cxcore\src\cxarray.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).

これが、 空のポインタを渡したとき
出るエラー文だとわかったのですが、以下のように組むと
cvSaveImageのときにエラー文が発生します。
また、cvShowImageではエラー文は出ません。
(ただ、cvShowImageの場合、画像の大きさがディスプレイよりも
大きいために調整して出力されるので全体が見えません・・・)

IplImage *src_img = 0, *dst_img = 0;
src_img = cvLoadImage ("a.jpg", CV_LOAD_IMAGE_COLOR); //画像読み込み
dst_img = cvCloneImage(src_img);

//dst_imgを黒画像に
for(int y = 0; y < dst_img->height ; y++)
{
for(int x = 0; x < dst_img->width ; x++)
{

dst_img->imageData[dst_img->widthStep * y + x * 3] = 0x00;
dst_img->imageData[dst_img->widthStep * y + x * 3 + 1] = 0x00;
dst_img->imageData[dst_img->widthStep * y + x * 3 + 2] = 0x00;

}
}

cvSaveImage("test.jpg",dst_img);

空のポインタはcvCloneImageをすることで
回避できているのではと考えたのですが・・・

なぜエラーが発生するのかご教授よろしくお願いします。

A 回答 (1件)

こちらでやってみたところ、エラーにはならず、まっくろな画像もできました。


コンパイル忘れとかではないですか?(デバグビルドしてリリース版を実行とか)
あるいは、これに書いてない処理が入っているとか

この回答への補足

回答有難うございます。
cvShowImageの後、cvSaveImageをいれていたんですが、
その順序が悪かったようです。
cvSaveImageを先に入れるとエラーがなくなりました!
有難うございました!

補足日時:2010/06/23 13:00
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!