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

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

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

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

C++

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

Q&A

解決済

1回答

3869閲覧

標準ライブラリーのみのC/C++で円検出ができるコードを教えて下さい

退会済みユーザー

退会済みユーザー

総合スコア0

C

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

C++

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

0グッド

0クリップ

投稿2017/11/01 01:10

###前提・実現したいこと
opencvを使わない標準ライブラリーのみのC/C++で、円検出ができるコードを探しています。
ご教授お願いします。組み込み機器に実装したいので、処理の軽いアルゴリズムがベターです。

###発生している問題・エラーメッセージ
http://opencv.jp/opencv-2svn/cpp/feature_detection.html

lang

1int main(int argc, char** argv) 2{ 3 Mat img, gray; 4 if( argc != 2 && !(img=imread(argv[1], 1)).data) 5 return -1; 6 cvtColor(img, gray, CV_BGR2GRAY); 7 // 平滑化を行います.これがないと誤検出が起こりやすくなります. 8 GaussianBlur( gray, gray, Size(9, 9), 2, 2 ); 9 vector<Vec3f> circles; 10 HoughCircles(gray, circles, CV_HOUGH_GRADIENT, 11 2, gray->rows/4, 200, 100 ); 12 for( size_t i = 0; i < circles.size(); i++ ) 13 { 14 Point center(cvRound(circles[i][0]), cvRound(circles[i][1])); 15 int radius = cvRound(circles[i][2]); 16 // 円の中心を描画します. 17 circle( img, center, 3, Scalar(0,255,0), -1, 8, 0 ); 18 // 円を描画します. 19 circle( img, center, radius, Scalar(0,0,255), 3, 8, 0 ); 20 } 21 namedWindow( "circles", 1 ); 22 imshow( "circles", img ); 23 return 0; 24}

で円検出は出来ましたが、
http://akigamyl.web.fc2.com/Clang/ip_hough.html
のopencvを使用しないCコードでは、円検出出来ませんでした。(チューニングはせず)

###試したこと
googleで、「ハフ変換 円検出 C++」などで検索しましたが、
opencvを使用しないC/C++のコードは見つけられませんでした。

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

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

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

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

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

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

fiveHundred

2017/11/01 05:03

「opencvを使わない」とのことですが、なぜ使いたくないのでしょうか?。また、ここでいう「組み込み機器」とはどういうものでしょうか?
yumetodo

2017/11/01 08:03

OpenCVの実装は素人が手出しできない程度には十分最適化されていますので、おとなしくOpenCVを利用されるべきかと思われます。
guest

回答1

0

ベストアンサー

opencvを使用しないC/C++のコードは見つけられませんでした。

"Hough transform code" + "C"/"C++" などのキーワードで検索してみてください。

[...]で円検出は出来ましたが、[...]
のopencvを使用しないCコードでは、円検出出来ませんでした。(チューニングはせず)

ここでの"チューニング"は何を意味していますか?(もし処理高速化というニュアンスであれば、かなり的外れと言わざるを得ません。)

前提として「ハフ変換」処理それ単体で、あなたの望む結果になることはまずあり得ません。つまり、円検出ハフ変換にかける前の 事前処理 (グレイスケール化/2値化、ノイズ除去、エッジ検出、etc)や、ハフ変換後の 特徴量(="円"らしさ)抽出 判定閾値や判定ロジックの方がずっと重要なファクタです。

投稿2017/11/02 16:18

yohhoy

総合スコア6191

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

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

退会済みユーザー

退会済みユーザー

2017/11/05 03:22

ご教授、有難うございました。 ”チューニング”は、”事前処理&特徴量抽出”のことです。 アルゴリズム実装をしてチューニングしてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問