ページ 11

opencvでの画像ファイルへのアクセス

Posted: 2012年1月17日(火) 18:17
by イナバ
IplImage *img_check; // 画像変数宣言

for(i = 0; i <= 99; i++){

img_check = cvLoadImage("img_%01d.jpg");

for(y = 0; y < img_check->height; y++){
for(x = 0; x < img_check->width; x++){
uchar b = img_check->imageData[img_check->widthStep * y + x * 3];
uchar g = img_check->imageData[img_check->widthStep * y + x * 3 + 1];
uchar r = img_check->imageData[img_check->widthStep * y + x * 3 + 2];

if (r == 0 && g == 0 && b == 255) {
p++;
break;
}
}
}
}

画像ファイルimg_0~99(mg_%01d.jpg)全てに対してimg_check変数を上書きし続けて
指定ピクセルへアクセスして画素値が(0,0,255)に当たれば
それをカウントするプログラムを製作しています。

実行しようとすると
「0xC0000005: 場所 0x0000002c を読み込み中にアクセス違反が発生しました。」とアクセス違反が出てしまいます。
どうすればいいでしょうか?

Re: opencvでの画像ファイルへのアクセス

Posted: 2012年1月17日(火) 18:52
by beatle
cvLoadImage()はprintfみたいに整形してはくれませんので,"img_%01d.jpg"という名前のファイルを探しに行ってしまいます.当然そんなファイルは無いでしょうから,画像が読み込めずエラーになるのです.
sprintf()という標準関数を調べてみてください.

それから,ソースコードを貼り付けるときは,codeタグを使って下さい.投稿する前に必ずプレビューして下さい.

Re: opencvでの画像ファイルへのアクセス

Posted: 2012年1月17日(火) 21:22
by h2so5
不要になった画像はcvReleaseImageで解放していかないと、
どんどんメモリを食いますから注意してください。