• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:opencvのコード、エラー発生)

opencvのコード、エラー発生

このQ&Aのポイント
  • 問題がわからないため、ご指導をお願いします。
  • 画像処理のためのopencvコードでエラーが発生しています。
  • 質問のコードを実行するとエラーが出てしまいます。

質問者が選んだベストアンサー

  • ベストアンサー
noname#208507
noname#208507
回答No.4

> ご回答ありがとうございます。 > なれど、実行の結果は > Unhandled exception at at 0x76C8C41F in ConsoleApplication9.exe: Microsoft C++ exception: > cv::Exception at memory location 0x0016F1D8. メモリ関係の例外であることは分かりますが、アドレスの情報は他の人には無意味ですし、これ以上のアドバイスは難しいです。一応、わたしの手元の環境では正常に動作していますし。 それと基本的なことですが、まず全てを確認をされた方がよいでしょう。マニュアルなどをきちんと見て。at()の引数のような単純ミスが他にありませんか? それでも分からなければ、デバッグモードでコンパイルしてどこで例外が起きているか、その時の座標値がどうなっているか、デバッガで追跡されるのがよいでしょう。

okboy1
質問者

お礼

ご回答ありがとうございます!!!!!! 「あなたの手元の環境では正常」この言葉が大きなヒントです。 ヘッドファイルが足りないのが原因です。 やっと3週間と戦ってきた問題とさよならです。 ありがとう!!!!!!!!!!!!!

okboy1
質問者

補足

ご回答ありがとうございます。 実は、今までずっとデバッグモードでコンパイルしています。 あなたの手元の環境では正常ということは、コード自体が問題ありませんか?

すると、全ての回答が全文表示されます。

その他の回答 (3)

noname#208507
noname#208507
回答No.3

#2さんの指摘もありますが、それ以前に at() の引数のx座標とy座標が逆のようです。 また imread() でカラー画像として test.png ファイルを開いているようですが、グレー画像のように画素にアクセスしています(at<uchar>でuchar型の輝度1つごと)。 ところで、そもそも何をされたいのでしょう。3x3の平滑化でしょうか。だとすれば ll < 1 と mm < 1 の判定もおかしいです。2x2になってしまいます。 下のようなことをされたいのではないでしょうか? for( int y = 0; y < image.rows; y++ ) { for( int x = 0; x < image.cols; x++ ) { for( int ll = -1; ll <= 1; ll++ ) { for( int mm = -1; mm <= 1; mm++ ) { if (x+ll >= 0 && x+ll < image.cols && y+mm >= 0 && y+mm < image.rows) { Vec3b &ff1 = image.at<Vec3b>(y+mm, x+ll); new_image.at<Vec3b>(y,x)[0] += ff1[0] / 9; new_image.at<Vec3b>(y,x)[1] += ff1[1] / 9; new_image.at<Vec3b>(y,x)[2] += ff1[2] / 9; } } } } }

okboy1
質問者

補足

ご回答ありがとうございます。 なれど、実行の結果は Unhandled exception at at 0x76C8C41F in ConsoleApplication9.exe: Microsoft C++ exception: cv::Exception at memory location 0x0016F1D8.

すると、全ての回答が全文表示されます。
  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.2

>uchar ff1 = image.at<uchar>(x+ll,y+mm); で、画像のピクセル値あたりを取得しているんでしょうかね? 画像の座標でX座標が-1、Y座標が-1っていう指定だとドコになるのかがまずギモンですが。 左上が原点だとすると、さらにそこより左家のピクセルですかね? # っていうか、-1,-1って座標指定したからオーバーフローしているだけなんじゃないですか?

okboy1
質問者

補足

ご回答ありがとうございます。 たしかにオーバーフローやもしれぬのですね、気付かなかったのです

すると、全ての回答が全文表示されます。
  • naoja
  • ベストアンサー率9% (2/21)
回答No.1

エラーコードやエラー内容なども提示される方が良いと思いますよ。

okboy1
質問者

補足

Unhandled exception at at 0x7599C41F in ConsoleApplication9.exe: Microsoft C++ exception: cv::Exception at memory location 0x0040F370.

すると、全ての回答が全文表示されます。

関連するQ&A