Лучший способ подсчитать количество «белых пятен» в пороговом IplImage в OpenCV 2.3.0 - PullRequest
1 голос
/ 24 ноября 2011

Мне нужно посчитать количество белых пятен на пороговом изображении. Я считаю маленькие квадраты на маркере. Но из-за низкого качества изображения веб-камеры эти квадраты не отображаются в виде квадратов. Вот почему я решил использовать обнаружение Blob. Это для приложения дополненной реальности. Правильно ли мое решение?

Камера размещена возле маркера

enter image description here

Камера расположена далеко от маркера

enter image description here

Ответы [ 3 ]

3 голосов
/ 23 января 2013

А как насчет функции cvFindContours?Прошло много времени с тех пор, как я его использую, но я думаю, что вы можете затем перебрать CvSeq найденных контуров и работать с ними так, как вам нравится.

Я знаю, что это старая ветка, но, возможно, она может вам помочь!

2 голосов
/ 24 ноября 2011

Как насчет использования cvBlobsLib . Он обнаруживает подключенные регионы, которые вы легко сможете просчитать, и получает дополнительную информацию, такую ​​как их размер.

1 голос
/ 13 августа 2014

Я использовал функцию findContours. Вот кусок кода:

    std::vector<std::vector<cv::Point> > contours;      

    cv::findContours(m, contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);
    for( unsigned int i = 0; i < contours.size(); i++ )
    { 
        if( contours[i].size() < 3  ) // at least a triangular area?
            continue;

        double area = cv::contourArea(Mat(contours[i]) );
        if ( (area > min * min) && ( area < max * max ) )
        {
           //... use or count blob
...