Как мне преобразовать cv :: Mat в cv :: Rect

0

У меня есть изображение в cv :: Mat как лицо, мне нужно все изображение в объекте cv :: Rect, я не мог найти, как это делается. Это или, если возможно, создание Rect из образа в моем каталоге

Теги:
opencv
rect

3 ответа

8

вы не конвертируете cv :: Mat в cv :: Rect.

вы хотите часть изображения внутри этого Rect?

Mat roi = Mat(img,rect);

даст вам обрезанный регион

  • 0
    Я имел в виду, мне нужно получить все содержимое Mat в Rect, все изображение
  • 0
    опять все изображение внутри прямоугольника? это оно.
3

cv :: Mat не может напрямую предоставить вам cv :: Rect, но вы можете создать свой собственный, используя метод size() cv :: Mat, и предположив, что начальная точка cv :: Rect равна (0, 0)

cv::Mat image;//load your image into the cv::Mat...//now create the cv::Rect from the cv::Mat cv::Rect rect = cv::Rect(0, 0, image.size().width, image.size().height);

  • 1
    Другой синтаксический сахарный способ - это cv::Rect rect = cv::Rect(cv::Point(0, 0), image.size()); , Лично для меня этот конструктор более логично группирует части cv :: Rect, то есть точку привязки и размеры.
  • 0
    Почему вы используете image.size().width image.cols вместо image.cols ?
1

Хотя, как говорит @berak, вы не можете преобразовать cv :: Mat в cv :: Rect, я предполагаю, что вы хотите что-то вроде этого (untested).

cv::Mat face;   // you already have this with some data in it
cv::Mat image;  // you already have this with some data in it
cv::Rect rect(x, y, w, h); // some place in image where you want face

// copy face into rectange within image
cv::resize(face, image(rect), cv::Size(rect.width, rect.height));

Ещё вопросы

Сообщество Overcoder
Наверх
Меню