2013-12-10 3 views
0

У меня есть большое изображение (720 x 1290). Если я передаю непрерывные кадры для обнаружения лица, он задерживается, и дисплей с камеры отстает.Opencv Обнаружение лица медленнее

То, что я сделал, это изменение размера изображения (480 x 640). Обнаружение лица довольно приличное, и камера не отстает.

Мой вопрос здесь, я обнаружил лицо и получил координаты лица на изображении (480 x 640). Теперь мне нужно нарисовать прямоугольник в (720 x 1290), но у меня есть координаты лица только для (480 x 640).

Теперь с координатами поверхности, доступными для (720 x 1290), как рисовать прямоугольник в (480 x 640)?

Любой пример полезен.

+2

умножить на каждую шкалу масштаба измерения? – PlasmaHH

+0

Ох .. скажите мне, как вы решаете эту проблему «если одна оранжевая стоимость составляет 5 $, то какая стоимость составляет 10 апельсинов?» если размер прямоугольника в 480X640 равен HxW, тогда в 720X1290 будет 720/480 * H x 1290/640 * W, где W-ширина и высота H ... – G453

+0

http://docs.opencv.org/modules/imgproc/doc /geometric_transformations.html#resize – baci

ответ

1

Если местоположение лица хранится в cvRect faceRect, а исходное изображение сохраняется в cvMat OriginalImage, попробуйте следующее:

cvRect enlargedFrame; 
enlargedFrame.x = faceRect.x*originalImage.cols/720; 
enlargedFrame.y = faceRect.y*originalImage.rows/480; 
enlargedFrame.width = faceRect.width*originalImage.cols/720; 
enlargedFrame.height = faceRect.height*originalImage.rows/480; 

Теперь нарисуйте прямоугольник, используя координаты enlargedFrame.

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

Смежные вопросы