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

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

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

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

Q&A

2回答

905閲覧

ハフ変換のプログラムのデバッグ中にエラーが出る

rasukaru3027

総合スコア4

OpenCV

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

0グッド

0クリップ

投稿2020/01/25 22:03

前提・実現したいこと

こちら(http://ishidate.my.coocan.jp/opencv_8/opencv_8.htm)のサイトのハフ変換のプログラムをwindowwで動かしたいのですが、デバッグすると補足の画像のようなエラーが出てうまくいきません。どうすればいいでしょうか?

発生している問題・エラーメッセージ

ビルドは成功しているのですがエラーのようなものがいっぱい出ています。

1>------ すべてのリビルド開始: プロジェクト:hough, 構成:Debug x64 ------ 1> hough1.cpp 1>c:\opencv3.1.0\build\include\opencv2\core\mat.hpp(1965): warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 1>c:\opencv3.1.0\build\include\opencv2\core\persistence.hpp : warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 1>c:\opencv3.1.0\build\include\opencv2\core\utility.hpp : warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 1>c:\opencv3.1.0\build\include\opencv2\core\utility.hpp : warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 1>c:\users\1432004\documents\visual studio 2015\projects\hough1\hough\hough1.cpp(38): warning C4244: '引数': 'float' から 'int' への変換です。データが失われる可能性があります。 1>c:\users\1432004\documents\visual studio 2015\projects\hough1\hough\hough1.cpp(39): warning C4244: '引数': 'float' から 'int' への変換です。データが失われる可能性があります。 1> hough.vcxproj -> C:\Users\1432004\documents\visual studio 2015\Projects\hough1\x64\Debug\hough.exe 1> hough.vcxproj -> C:\Users\1432004\documents\visual studio 2015\Projects\hough1\x64\Debug\hough.pdb (Full PDB) ========== すべてリビルド: 1 正常終了、0 失敗、0 スキップ ==========

該当のソースコード

C++

1#include <opencv2\highgui\highgui.hpp> 2#include <opencv2\imgproc\imgproc.hpp> 3using namespace cv; 4using namespace std; 5 6int main() 7{ 8 //----原画像を読み込む -- 9 Mat src_image = imread("hough,jpg"); 10 //----------- GaussianBlurを実施 ------ 11 GaussianBlur(src_image, src_image, Size(5, 5), 0); 12 namedWindow("Blur原画像"); 13 imshow("Blur原画像", src_image); 14 //----------- RGB分解Cannyを実施 ------- 15 Mat channels[3]; 16 split(src_image, channels); 17 Mat canny_r, canny_g, canny_b, canny_image; 18 Canny(channels[2], canny_r, 60.0, 180.0, 3); 19 Canny(channels[1], canny_g, 60.0, 180.0, 3); 20 Canny(channels[0], canny_b, 60.0, 180.0, 3); 21 bitwise_or(canny_r, canny_g, canny_image); 22 bitwise_or(canny_image, canny_b, canny_image); 23 namedWindow("RGB分解-Canny"); 24 imshow("RGB分解-Canny", canny_image); 25 //------------ HoughLinesを実施 -------- 26 vector<Vec2f> lines; 27 HoughLines(canny_image, lines, 1, CV_PI / 180, 100); 28 float rho, theta, ct, st; 29 int z = canny_image.cols; 30 Mat src_image1 = src_image.clone(); 31 for (auto it = lines.begin(); it != lines.end(); ++it) 32 { 33 rho = (*it)[0]; 34 theta = (*it)[1]; 35 ct = cos(theta); 36 st = sin(theta); 37 line(src_image1, Point(rho*ct - z*st, rho*st + z*ct), 38 Point(rho*ct + z*st, rho*st - z*st), Scalar(0, 255, 255), 2); 39 } 40 namedWindow("HoughLines結果"); 41 imshow("HoughLines結果", src_image1); 42 //houghLinesPを実施 43 vector<Vec4i>lines_p; 44 Vec4i pt; 45 HoughLinesP(canny_image, lines_p, 1, CV_PI / 180, 60, 40, 5); 46 Mat src_image2 = src_image.clone(); 47 for (auto it = lines_p.begin(); it != lines_p.end(); ++it) 48 { 49 pt = *it; 50 line(src_image2, Point(pt[0], pt[1]), Point(pt[2], pt[3]), 51 Scalar(0, 255, 255), 2, CV_AA); 52 } 53 namedWindow("HoughLinesP結果"); 54 imshow("HoughLinesP結果", src_image2); 55 56 waitKey(0); 57 destroyAllWindows(); 58 return 0; 59}

試したこと

画像を表示させるだけのプログラムはちゃんと動いたのでパスの設定などはあっていると思います。

補足情報(FW/ツールのバージョンなど)

イメージ説明

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

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

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

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

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

guest

回答2

0

デバッガの出力を見れば、src_imagerows が0なので、imread で画像が読み込めていないことがわかります。

cpp

Mat src_image = imread("hough,jpg");

ファイル名がおかしいです。`hough.jpg` では?

投稿2020/01/26 06:54

yuki23

総合スコア1448

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

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

0

そのエラーメッセージ(というかワーニングメッセージですが)を読みましょう。
で、エラーが出るのはおそらくそのワーニングとは関係ありません。

まずは、そのエラーがどの行で出るのか、ステップ実行させるなどして特定してみてはどうでしょう。

投稿2020/01/25 23:47

y_waiwai

総合スコア87774

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問