質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

0回答

992閲覧

ノイズ除去プログラム利用時のハンドルエラー

nigg_1513

総合スコア16

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2019/06/25 12:15

編集2019/06/25 12:21

###実現したいこと
体積中心位置の算出
その過程で、ノイズ除去も利用したい。
###発生している問題
cv::morphologyExを利用している際にハンドルエラーが起きてしまう
以下該当コードになります。

RopeSideVision

1void RopeSideVision::Compute() { 2 cv::cvtColor(_frame, _frame, CV_RGB2GRAY); 3 cv::cvtColor(_frame, _decorated_frame, CV_GRAY2BGR); 4 cv::threshold(_frame, _binary, 50, 255, cv::THRESH_BINARY); 5 cv::Mat _noiseRemoval; 6 cv::morphologyEx(_binary, _noiseRemoval, cv::MORPH_CLOSE, _kernel); //←ここでハンドルエラーが発生 7 8 cv::Canny(_noiseRemoval, _canny, 50, 200, 3); 9     10    //以下、体積中心位置の検出プログラム 11}

エラーコード
イメージ説明
###関連するソースコード

RopeSideVision

1class RopeSideVision 2{ 3public: 4 //// Ctor/Dtor 5 //// Getters / Setters 6 7 // Public method 8 void Compute(); 9private: 10 // Private members 11 cv::Mat _canny; 12 cv::Mat _binary; 13 cv::Mat _kernel; //cv::getStructuringElement(cv::MORPH_RECT, cv::Size(19, 19))と定義 14 15 cv::Point2f _upsidemc; 16 cv::Point2f _bottomsidemc; 17};

###試したこと
cv::Point2f _upsidemc;
cv::Point2f _bottomsidemc;
以上をコメント化し、問題コードのcv::Cannyまでを実行すると、エラーは起こりませんでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tiitoi

2019/06/25 12:18

エラーの内容を記載できますか? 質問欄のコードからわかる範囲では、cv::morphologyEx() で _upsidemc、_bottomsidemc は使っていないので、関係ないと思いますがいかがでしょうか。
nigg_1513

2019/06/25 12:24

ありがとうございます。エラーコードを記載させていただきました。 私もそのように感じるのですが、コメント化を行うことによってエラーが回避できるため、 なんらかの関わりがあるのではないかと考えています。 また、逆にcv::morphologyEX()のみをコメント化した場合でも実行可能でした。
tiitoi

2019/06/25 12:32 編集

一応確認ですが、 _kernel はちゃんと値は入っていますでしょうか。 そこが問題なければ、なにか他の部分のコードで未初期化の変数や不正なメモリにアクセスしている部分があって、それがたまたまそのメンバ変数を定義したことによって顕在化しただけの気がします。 C/C++ はそのような不正なアクセス等のコードを書いても動作未定義なので、直ちにエラーになるわけではないので、直接の原因究明が難航することがままあります。 質問のコードに出てくる変数等に問題がなければ、他の部分もチェックしてみてください。
nigg_1513

2019/06/25 12:45

ありがとうございます!! 確認したところ、_kernelに値は入っておりました。 なるほど、そういう場合があるのですか。 他部分についても探ってみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問