обнаружить каплю над другой каплей - PullRequest
0 голосов
/ 30 июля 2011

Я использую библиотеки OpenCV и cvblob для игры с BLOB-объектами.

Теперь я хочу обнаружить blob в этом конкретном случае.

Проблема или трудность в этом случае в том, что есть два сгустка над большим и другой сгусток, которые перекрывают часть большего.

В библиотеке cvblob для обнаружения блоба вам необходимо иметь двоичное изображение.

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

Как я могу это сделать.

image

спасибо заранее

1 Ответ

1 голос
/ 24 января 2012

Я довольно новичок в OpenCV, но я полагаю, что в этом конкретном случае вам следует работать с cvFindContours с флагом CV_RETR_EXTERNAL (с CV_RETR_TREE, ваш желтый шарик будет в синем) вместо использования cvblob.

Это зависит от того, хотите ли вы отслеживать их или нет (cvblob предлагает быстрый и эффективный способ отслеживания больших двоичных объектов вместо необходимости использовать camshift).

CvMemStorage* storage = cvCreateMemStorage(0);
    CvSeq* firstContour = cvCreateSeq(CV_SEQ_ELTYPE_POINT, sizeof(CvSeq), sizeof(CvPoint), storage);

    cvFindContours(image, storage, &firstContour, sizeof(CvContour), CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE);




    // S'il y a un contour
    if(firstContour != 0) {

        for( CvSeq* c = firstContour; c != NULL; c = c->h_next ) {

                    for(int i = 0; i < c->total; ++i) {                    

                        // Get each point of the current contour
                        CvPoint* pt = CV_GET_SEQ_ELEM(CvPoint, c, i);

                        double x = pt->x;
                        double y = pt->y;

                    }
          }
      }

С помощью информации, предоставленной контуром, вы можете легко найти центроид, угол и ограничительную рамку вашего объекта.

Отслеживание этих BLOB-объектов может быть более сложным, так как cvblob не любит перекрывающиеся BLOB-объекты (как я вижу). Возможно, вам придется реализовать свой собственный метод отслеживания.

...