OpenCV C++, получение области интереса (ROI) с помощью cv:: Mat
Я очень новичок в OpenCV (начал использовать его два дня назад), я пытаюсь вырезать изображение руки из изображения глубины, полученного от Kinect, мне нужно изображение руки для распознавания жестов. У меня есть изображение как cv::Mat
тип. Мои вопросы:
- есть ли способ, чтобы преобразовать
cv::Mat
доcvMat
Так что я могу использоватьcvGetSubRect
метод, чтобы получить область интереса? - есть ли какие-либо методы в
cv::Mat
что я могу использовать для получения части изображение?
Я хотел использовать IplImage
но я где-то читал, что cv::Mat
в настоящее время является предпочтительным способом.
2 ответов
вы можете использовать перегруженный вызов функции оператор cv::Mat
:
cv::Mat img = ...;
cv::Mat subImg = img(cv::Range(0, 100), cv::Range(0, 100));
Регистрация документация OpenCV для получения дополнительной информации и для перегруженной функции, которая принимает cv::Rect
. Обратите внимание, что при использовании этой формы среза создается новый заголовок матрицы, но данные не копируются.
возможно, другой подход может быть:
//Create the rectangle
cv::Rect roi(10, 20, 100, 50);
//Create the cv::Mat with the ROI you need, where "image" is the cv::Mat you want to extract the ROI from
cv::Mat image_roi = image(roi)
Я надеюсь, что это может помочь.