Вопрос по c++ – Скопируйте cv :: Mat внутри ROI другого

49

Мне нужно скопироватьcv::Mat изображение (источник) для ROI другого (назначение)cv::Mat образ.

я нашелэта ссылка, но, похоже, это не работает для моего случая. Есть ли у вас какие-либо указания, как я могу сделать это с помощью интерфейса OpenCV C ++?

Ваш Ответ

3   ответа
6

У меня получилось так:

Mat imgPanel(100, 250, CV_8UC1, Scalar(0));
Mat imgPanelRoi(imgPanel, Rect(0, 0, imgSrc.cols, imgSrc.rows));
imgSrc.copyTo(imgPanelRoi);

imshow("imgPanel", imgPanel);
waitKey();

Я использую Opencv 2.4.9 Основано на ответе Андрея.

7

если вы хотите скопировать меньшую область открытыхMat другомуMat, ты должен сделать:

src(Rect(left,top,width, height)).copyTo(dst);
72

OpenCV 2.4:

src.copyTo(dst(Rect(left, top, src.cols, src.rows)));

OpenCV 2.x:

Mat dst_roi = dst(Rect(left, top, src.cols, src.rows));
src.copyTo(dst_roi);
Это dst_roi, указатель на определенную часть конечного изображения? Я думаю, это должно быть так ..
src.copyTo(dst(Rect(left, top, src.cols, src.rows)); 3x "(" и 2x ")"Mat dst_roi = dst(Rect(left, top, src.cols, src.rows);  2x "(" и 1x ")" Не проверенный код?
В чем разница между предыдущей версией opencv? почему код отличается?
Урожайностьno matching function for call to ‘cv::Mat::copyTo(cv::Mat)’ viewtest2.cpp:172:61: note: candidates are: /usr/include/opencv2/core/core.hpp:1651:10: note: void cv::Mat::copyTo(cv::OutputArray) const в OpenCV 2.4.6. Второе решение, однако, работает, но в результате получается изображение только с src.
Спасибо! Я сделал это так и прекрасно работает: bboxImage.copyTo (destImage.colRange (startCol, startCol + bboxImage.cols) .rowRange (startRow, startRow + bboxImage.rows)); theosem

Похожие вопросы