2014-04-01 58 views
1

我是全新的OpenCV和Xcode。hough circle opencv iOS

我想通過使用顏色和ough圓檢測來找到一些交通標誌。這是我迄今所做的:

cv::cvtColor(cvImage, cvGrayImage, CV_RGB2HSV); 
cv::Mat cvThresh; 
cv::inRange(cvGrayImage,cv::Scalar(170,160,10),cv::Scalar(180,255,256),cvThresh); 
//cv::dilate(cvThresh,cvThresh, cv::Mat(),cv::Point(-1,-1),2,1,1); 
cv::GaussianBlur(cvThresh, cvThresh, cv::Size(9,9), 2,2); 

cv::vector<cv::Vec3f> circles; 
cv::HoughCircles(cvThresh, circles, CV_HOUGH_GRADIENT, 1,cvThresh.rows/4,200,30); 
// NSLog(@"Circles: %ld", circles.size()); 

for(size_t i = 0; i < circles.size(); i++) 
{ 
    cv::Point center((cvRound(circles[i][0]), cvRound(circles[i][2]))); 
    int radius = cvRound(circles[i][2]); 
    cv::circle(cvImage, center, 3, cv::Scalar(255,0,0), -1, 8, 0); 
    cv::circle(cvImage, center, radius, cv::Scalar(0,0,255),3,8,0); 
} 

這是我的結果,但我也沒辦法了.. 任何想法或建議,或示例代碼,將不勝感激。

Result

+0

感謝編輯tracer..by的方式,任何想法,爲什麼它沒有檢測到正確的circle..i成功在OpenCV中windows..thats用同樣的方法爲什麼IAM困惑 – user3485564

回答

1

如果你有一個想法是什麼尺寸的圈子,那麼要找的,那麼這將是最好設置min_radiusmax_radius相應。否則,它將返回任何尺寸的任何圓形。

參數1和2不會影響精度,因此可靠性更高。

  • 參數1將設置靈敏度;圓圈的邊緣需要多強。太高,它不會檢測到任何東西,太低,它會發現太多混亂。
  • 參數2將設置它需要找到多少個邊緣點來聲明它找到一個圓。再次,太高會檢測到任何東西,太低會宣稱任何東西是一個圓圈。參數2的理想值將與圓的周長有關。