-PR-
締切済み

OpenCV

  • すぐに回答を!
  • 質問No.9343073
  • 閲覧数86
  • ありがとう数2
  • 気になる数1
  • 回答数1
  • コメント数0

お礼率 84% (60/71)

いつもお世話になっております。
添付の2値画像からハフ関数で直線抽出したいのですが、うまく行かず困っています。
エラーは表示されず、ただグレー 一色の出力です。
閾値、投票数、最小長さ、など値をいろいろ変えてみたのですがうまくいきません。
どなたか原因がおわかりであればぜひ教えてください。
よろしくお願い致します。
'==================================================
’void Sample(char *FilePath){
int i;
float *line, rho, theta;
double a, b, x0, y0;
IplImage *src_img_std = 0, *src_img_prob = 0, *src_img_gray = 0;
CvMemStorage *storage;
CvSeq *lines = 0;
CvPoint *point, pt1, pt2;
src_img_gray = cvLoadImage(FilePath, CV_LOAD_IMAGE_GRAYSCALE);
storage = cvCreateMemStorage(0);

// (3)標準的ハフ変換による線の検出と検出した線の描画
lines = cvHoughLines2(src_img_gray, storage, CV_HOUGH_PROBABILISTIC, 1, CV_PI / 180, 1, 1, 0);
for (i = 0; i <lines->total; i++) {
line = (float *)cvGetSeqElem(lines, i);
rho = line[0];
theta = line[1];
a = cos(theta);
b = sin(theta);
x0 = a * rho;
y0 = b * rho;
pt1.x = cvRound(x0 + 1000 * (-b));
pt1.y = cvRound(y0 + 1000 * (a));
pt2.x = cvRound(x0 - 1000 * (-b));
pt2.y = cvRound(y0 - 1000 * (a));
cvLine(src_img_std, pt1, pt2, CV_RGB(255, 0, 0), 3, 8, 0);
}
cvNamedWindow("Hough_line_standard", CV_WINDOW_AUTOSIZE);
cvShowImage("Hough_line_standard", src_img_std);
cvWaitKey(0);
cvDestroyWindow("Hough_line_standard");
通報する
  • 回答数1
  • 気になる1
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全1件)

  • 回答No.1
レベル11

ベストアンサー率 57% (85/149)

rosafilipes さん

2つ問題があります。

1つ目は、「標準的ハフ変換による線の検出と検出した線の描画」とコメントに書かれているのに、 CV_HOUGH_PROBABILISTIC が指定されていることです。
ちゃんと CV_HOUGH_STANDARD を指定してください。

2つ目は、こちらがより根本的な問題ですが、 src_img_std が初期化されていないために、何も描画されないし、ウィンドウにも何も表示されません。
例えば、 cvLoadImage の下の行に以下の2行を入れてみてください。
src_img_std = cvCreateImage(cvGetSize(src_img_gray), 8, 3);
cvSetZero(src_img_std);

1つ目の問題は、2つ目の問題が解決できなくて、当てずっぽうでごちゃごちゃとやってみた結果発生したのではないかと思いますが、プログラムというものは当てずっぽうで上手く動くことは決してありません。
おそらく将来的にはもっと高度な画像処理をしたいのだと思いますが、まともなプログラミング手法を覚えないと先には進めないでしょう。
お礼コメント
rosafilipes

お礼率 84% (60/71)

お礼が遅くなってしまいまして申し訳ありません。
また初歩的なミスがありすみませんでした。
教えて頂いた方法でやってみます。
ありがとうございました。
投稿日時 - 2017-07-01 18:27:02


このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


専門家があなたの悩みに回答!

-PR-

ピックアップ

-PR-
ページ先頭へ