У меня есть изображение в cv :: Mat как лицо, мне нужно все изображение в объекте cv :: Rect, я не мог найти, как это делается. Это или, если возможно, создание Rect из образа в моем каталоге
вы не конвертируете cv :: Mat в cv :: Rect.
вы хотите часть изображения внутри этого Rect?
Mat roi = Mat(img,rect);
даст вам обрезанный регион
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);
cv::Rect rect = cv::Rect(cv::Point(0, 0), image.size());
, Лично для меня этот конструктор более логично группирует части cv :: Rect, то есть точку привязки и размеры.
image.size().width
image.cols
вместо image.cols
?
Хотя, как говорит @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));