Android OpenCV 円検出
前回の記事 直線検出では直線の検出をしましたが今回は円の検出をしたいと思います。円の検出には以下の関数を用いることでできます。(OpenCV リファレンス参照)
Imgproc.HoughCircles(Mat image, Mat circles, int method, double dp, double minDist, double param1, double param2, int minRadius, int maxRadius)
直線の時は輪郭(エッジ)の画像に変換してから直線を取得しましたが円検出の場合はぼかし(平滑化)を行ってから検出するほうが誤検出起こりにくいみたいです。ですが、実際にやってみた結果あまり変化がないというよりは平滑化するとほぼ円を認識しなくなり確かに誤検出は減りますが円を認識してもらわないと困るので誤検出が多い場合のみ使用したほうがよさそうです。 /*----------------------------------------------------------------------- Mat src; Mat dst; Imgproc.cvtColor(src, dst, Imgproc.COLOR_RGB2GRAY); GaussianBlur( dst, dst, Size(9, 9), 2, 2 );//←別になくてもよい Mat image = dst; Mat lines; Imgproc.HoughLinesP(image, lines, Imgproc.CV_HOUGH_GRADIENT, 2, 10, 160, 50, 50, 120); --------------------------------------------------------------------------------------------------*/ |
0 件のコメント:
コメントを投稿