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

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

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

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

OpenCV

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

Q&A

解決済

3回答

16492閲覧

「ハンドルされない例外が発生しました」

Suginori1996

総合スコア24

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

OpenCV

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

0グッド

0クリップ

投稿2016/01/15 08:41

###c++を用いたプログラム
写真から赤色の部分と青色の部分を抽出するプログラムを作っています.
実行したところ,以下のようなエラーが発生し,デバッグできません.
ご協力をお願いします.

###エラーメッセージ
エラー
###ソースコード
//#include <stdafx.h>
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\imgproc\imgproc.hpp>

using namespace cv;

int main(int argc, char* argv[])
{
//-----------------原画像----------------------
Mat src_image = imread("IMG_2941.JPG");
namedWindow("原画像");
imshow("原画像", src_image);

int width = src_image.cols; int height = src_image.rows; //--------HSV擬似画像への変換------------------ Mat hsv_image; cvtColor(src_image, hsv_image, CV_BGR2HSV); uchar hue, sat, val; Mat red_image = Mat(Size(width, height), CV_8UC1); Mat blue_image = Mat(Size(width, height), CV_8UC1); for (int y = 0; y < height; y++) for (int x = 0; x < width; x++) { //---------------H,S,Vへの分解----------- hue = hsv_image.at<Vec3b>(y, x)[0]; sat = hsv_image.at<Vec3b>(y, x)[1]; val = hsv_image.at<Vec3b>(y, x)[2]; //----------------赤の検出--------------- if ((hue < 8 || hue > 168) && sat > 100) red_image.at<uchar>(y, x) = 0; else red_image.at<uchar>(y, x) = 255; //----------------赤の検出--------------- if ((hue < 97 || hue > 117) && sat > 100) blue_image.at<uchar>(y, x) = 0; else blue_image.at<uchar>(y, x) = 255; } namedWindow("赤検出画像"); imshow("赤検出画像", red_image); namedWindow("青検出画像"); imshow("青検出画像", blue_image); waitKey(0); destroyAllWindows(); return 0;

}

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

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

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

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

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

guest

回答3

0

まずは怪しい部分の前後全てにAfxMessageBox()を入れて、どの行でエラーが起きてるか特定するのがいいでしょう。。

単純・力技・古典的な方法ですが、原因が想定できないエラーには結局これが一番効果的だと思います。

投稿2016/01/15 19:01

mike

総合スコア118

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

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

0

ベストアンサー

こんにちは。

たまたま近い環境をもっていたのでやってみました。
下記で読み込もうとしているファイルが無い時、似た例外が発生しました。

Mat src_image = imread("IMG_2941.JPG");

適切なところにjpgファイルを置いて走らせれば例外も発生せず、それっぽい画像が表示されましたよ。

恐らく、プログラムがIMG_2941.JPGを見つけるのに失敗しているのだと思います。
"IMG_2941.JPG"をフル・パスで指定すると良いと思います。

投稿2016/01/15 09:49

Chironian

総合スコア23272

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

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

Suginori1996

2016/01/16 03:12

ありがとうございます. つまりC:の所に写真を入れた時は, 「 Mat src_image = imread("C:\IMG_2941.JPG"); 」 としたら良いのでしょうか?
Chironian

2016/01/16 03:45

新たな質問へ回答したように「 Mat src_image = imread("C:\\IMG_2941.JPG"); 」とすればよいです。(こちらに気づくのが遅かったですね。teratailのコメントが付きましたの通知が遅いのですよ。つい今しがた通知があったのです。)
guest

0

画面を見ただけではまったくわかりません。
しかし例外は、OpenCVの関数が投げているものと思います。
OpenCVの関数に渡している値に間違いがないか確認してください。
デバッグのやりかたがわからなければ、printfなどでも十分です。
x,yの値で範囲を超えたアクセスを指定していないかなど、確認してみてください。

投稿2016/01/15 09:25

eulick

総合スコア21

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問