
お世話になっております。
OpenCVのエラーが解決せず困っています。
グレースケール画像170×170を
11×11枠のウィンドウで画像処理をして行きたいのですが
変数 x の2回目のループでエラーが発生してしまいます。
「型 'System.Runtime.InteropServices.SEHException' のハンドルされていない例外が
sample.exe で発生しました
追加情報: 外部コンポーネントが例外をスローしました。」
ROIの入れ物 dst_img をリセットしてみたり
あれこれやってみたのですがどうもうまくいきません。
2回目でコケるというのも情けなく。
どこを修正すればいいか、ぜひアドバイスいただけたら助かります。
よろしくお願い致します。
dst_img = cvCreateImage(cvSize(11,11), IPL_DEPTH_8U, 1);
int x, y, i;
i = 1;
for (y = 0; y < src_img_gray-> height; y = y +11*(i-1)+1) // y 座標を 11ピクセルずつ進める
{
for (x = 0; x < src_img_gray->width; x = x + 11*(i-1)+1) // x 座標を 11ピクセルずつ進める
{
dst_img = cvCreateImage(cvSize(12, 12), IPL_DEPTH_8U, 1);
cvSetImageROI(dst_img, cvRect(y, x, 11, 11));
//出力先指定
↓xの2ループ目で、ここでエラーが発生します。
out_img = cvCloneImage(dst_img);
cvReleaseImage(&dst_img);
i = i + 1;
}
}
cvDestroyWindow("ROI");
No.2ベストアンサー
- 回答日時:
そうではありません。
x=x+23
ということは、現在のxに+23したものが、次のxになります。
iの変化が、i=i+1だけだとすると
ループ開始
x=0
終了直前
i=i+1 /* i=1+1=2 になる */
forの式3の評価
x=x+11*(i-1)+1
/* x= 0 + 11*(2-1)+1 =0+12=12になる */
次のループ開始
x=12
終了直前
i=i+1 /* i=2+1=3 になる */
forの式3の評価
x=x+11*(i-1)+1
/* x= 12 + 11*(3-1)+1 =12+23=35になる */
...
となっています。
よく見たら、いろいろと間違ってますね。
cvSetImageROI(dst_img, cvRect(y, x, 11, 11));
は、 dst_img の 横y,縦xの位置から11x11のROIを設定して、以降、cvClomeImage(dst_img)等としたときに、dst_imgが、そのROIで指定した範囲だけの画像のように扱われる、というものです。
2回目では、x=12なので「 dst_img = cvCreateImage(cvSize(12, 12), IPL_DEPTH_8U, 1); で確保した 12x12(横0~11,縦0~11)の画像dst_img」の 座標(0,12)から11x11画素を抜き出した画像、という意味になるので、エラーになるのも当り前です。
コメントありがとうございます。
そもそも、ROIで元画像のサイズそのものを指定するべきだったのですね。
細かく見てすぐにアドバイスくださって、いつも本当にありがとうございます。
今回も大変助かりました。
またぜひよろしくお願い致します。
No.1
- 回答日時:
これが原因かはわかりませんが
http://opencv.jp/opencv-2.1/c/basic_structures.h …
説明になんと書いてありますか?
> x = x + 11*(i-1)+1) // x 座標を 11ピクセルずつ進
そうなってますか?
x,yの値を追ってみましょう
例えば
i=3 だと
x = x+11*2+1
で, +23
されてますよ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数画像のランダム複数表示(...
-
マウスオーバー時に画像切り替え
-
MFCで画像を表示させているので...
-
画像ファイルをアップロードす...
-
色の変更
-
javascriptの勉強中しはじめた...
-
MAX関数を使ってからLEFT JOIN...
-
IFRAMEの表示/非表示を切り替え...
-
c++std::string型をTCHARに変換...
-
javascriptテキストBOX色を元に...
-
固定ナビのJqueryのアコーディ...
-
JavaScriptとチェックボックス...
-
Gifアニメ、最後のコマに行った...
-
jQueryプラグインの併用について
-
CSSで(3)段組のページを作り...
-
jQueryで電卓を作っているのですが
-
カウントダウンJavascript
-
jQueryの重複クリック回避につ...
-
Jquery の slide.toggle で要素...
-
ページ遷移後のcssプロパティ保持
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
HTMLからimgのsrcのみを正規表...
-
複数画像のランダム複数表示(...
-
外部javascriptの重複を防ぐには
-
JavaScriptで変更した属性の元...
-
libjpegライブラリの使い方につ...
-
javaScriptでリンク画像のラン...
-
MFCで画像を表示させているので...
-
画像ファイルをアップロードす...
-
OpenCVで固定枠で画像を操作す...
-
外部ファイルにしたら文字化け...
-
複数の画像をフェードイン・ア...
-
OpenCV での画素値の比較について
-
pythonのpygameでキャラクター...
-
OpenCVでの画像処理について
-
"lightbox"の"CLOSE"ボタンクリ...
-
画像をフィルターを使って入れ...
-
openCVでの白黒画像読み込み
-
createElementによる空要素の生...
-
pythonで、tkinterとpillowの組...
-
jQueryで、画像クリック→フェー...
おすすめ情報