2014-04-01 3 views
1

Я совершенно новый в OpenCV и Xcode.hough circle opencv iOS

Я пытаюсь найти дорожный знак, используя цвет и определение круга. Это то, что я сделал до сих пор:

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

спасибо за отредактированный трассировщик .. по пути, любая идея, почему он не обнаружит правильный круг..я преуспею, используя тот же метод в окнах opencv .. thatats почему iam путают – user3485564

ответ

1

Если у вас есть представление о том, какой размер окружности, которую вы ищете, то это было бы лучше, чтобы установить min_radius и max_radius соответственно. В противном случае он вернет любой круговой график любого размера.

Параметры 1 и 2 не влияют на точность как таковую, большую надежность.

  • Параметр 1 установит чувствительность; насколько сильны края окружностей. Слишком высокий, и он ничего не обнаружит, слишком низко, и он найдет слишком много беспорядка.
  • Параметр 2 задает, сколько точек края ему нужно найти, чтобы объявить, что он нашел круг. Опять же, слишком высокое не обнаружит ничего, слишком низко объявит что-либо кругом. Идеальное значение параметра 2 будет связано с окружностью окружностей.
Смежные вопросы