
お世話になっております。
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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Vb.net2005での画像の合成方法
-
iframe内のリンクが飛ばないの...
-
c++std::string型をTCHARに変換...
-
クリックすると下に説明文が出...
-
クリックするとテーブルの列の...
-
MAX関数を使ってからLEFT JOIN...
-
画像クリックした後別ウィンド...
-
img 上の任意の座標範囲の色を...
-
JSPでの画像ファイル表示
-
JavaScriptでの画像切り替えを...
-
Slick.jsのオプションrtlについて
-
javascriptでEnterキーをtabキ...
-
離れた場所にマウスオーバーで...
-
画像をフェードアウト&フェー...
-
thickbox 次の画像への移動の...
-
オフライン作業bootstrap
-
画像の切り替え。もっと効率の...
-
交互に入れ替わる画像を複数配置
-
javascriptテキストBOX色を元に...
-
【HP作成】クリックすると下...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JavaScriptで変更した属性の元...
-
ダイアログから画像ファイルは...
-
MFCで画像を表示させているので...
-
imageクラスからiconクラスに変...
-
メニューボタン画像のロールオ...
-
xmlとロールオーバー(jQuery1....
-
外部javascriptの重複を防ぐには
-
libjpegライブラリの使い方につ...
-
複数の画像をフェードイン・ア...
-
返信記事付きログファイルの表示
-
jsでサムネイルを拡大表示 複...
-
画像が表示でnull; this.src
-
HTMLからimgのsrcのみを正規表...
-
条件分岐でキーが入力されてい...
-
OpenCVの実行エラー
-
$(this)を変数に入れないと動作...
-
テキストリンクにオンマウスで...
-
WEBに音を付けたい
-
複数画像のランダム複数表示(...
-
こんにちは、javascriptにてボ...
おすすめ情報