CvBOX2D Обработка - PullRequest
       8

CvBOX2D Обработка

1 голос
/ 20 ноября 2010

Я уже получил свой ROI (тип CvBOX2D) по серии обработки контуров, теперь я просто хочу сосредоточиться на части изображения в области ROI, например: передать эту часть в другую функцию обработки, как я могу это сделать? Я знаю, что есть CvSetImageROI, но тип CvRect, поэтому я должен сначала преобразовать CvBox2D в CvRect? Или каким-нибудь образом наложить маску на нее с областью за пределами поля, установленной в 0?

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

Ответы [ 2 ]

1 голос
/ 27 декабря 2010

В OpenCV напрямую поддерживаются только ориентированные на оси области интереса (CvRect или IplROI). Это потому, что они позволяют прямой доступ к буферу памяти изображений.

Существует два способа работы с не ориентированной по оси ROI в OpenCV. Ни один из них не так эффективен, как использование ориентированных на оси областей интереса.

  1. Поверните свое изображение или ограничивающий прямоугольник, чтобы ваша область интереса теперь выровнялась по оси в результирующем повернутом изображении.
    Примечание: поворот немного размыт ваше изображение.

  2. Использование маски. Нарисуйте свою область интереса в виде белого прямоугольника на черном фоновом изображении того же размера, что и изображение, и дайте своим функциям обработки эту маску в качестве дополнительного параметра. Примечание: не все функции поддерживают маски.

Я бы порекомендовал вариант 1, если вы действительно должны оставаться в точных пределах вашей ROI. В противном случае просто используйте ограничивающий прямоугольник.

0 голосов
/ 20 ноября 2010

Используйте c ++ api opencv. шутки в сторону. сделай это.

cv::Rect roi = cv::RotatedRect(box).boundingRect();
Mat_<type> working_area(original_mat, roi);
// now operate on working_area

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...