Какой тип маркера лучше всего определить с помощью OpenCV, и как я могу найти 2D-местоположение в реальном времени на iPhone? - PullRequest
1 голос
/ 17 марта 2011

Я пишу приложение для iPhone, чтобы использовать OpenCV для определения 2D-местоположения в камере iPhone какого-либо предопределенного маркера (только один).Какой тип маркера самый лучший?Круг?Площадь?Цвет?Какой самый быстрый способ обнаружить этот маркер?Кроме того, алгоритм обнаружения должен работать почти в режиме реального времени.

Я пробовал обнаружение круга openCV, но я получил 1 кадр / с (изображение 640x480):

Mat gray;
vector<Vec3f> circles;

CGPoint findLargestCircle(IplImage *image) {
    Mat img(image);
    cvtColor(img, gray, CV_BGR2GRAY);
    // smooth it, otherwise a lot of false circles may be detected
    GaussianBlur( gray, gray, cv::Size(9, 9), 2, 2 );
    HoughCircles(gray, circles, CV_HOUGH_GRADIENT,
                             2, gray.rows/4, 200, 100 );
    double radius=-1;
    size_t ind;
    for( size_t i = 0; i < circles.size(); i++ ) {
        if(circles[i][2] > radius) {
            radius = circles[i][2];
            ind = i;
        }
    }
    if(ind == -1) {
        return CGPointMake(0, 0);
    }else {
        return CGPointMake(circles[ind][0], circles[ind][1]);
    }
}

Любой совет или кодбыть полезным.

Заранее спасибо.

1 Ответ

0 голосов
/ 18 марта 2011

Может быть, вы можете попробовать какой-то определенный цветной маркер, а затем принять во внимание цветовую фильтрацию. Другой, объект с определенной ориентированной текстурой - также хороший выбор.

...