C++ 将cv::Mat复制到另一个的ROI中
我需要将一个C++ 将cv::Mat复制到另一个的ROI中,c++,opencv,copy,roi,C++,Opencv,Copy,Roi,我需要将一个cv::Mat图像(源)复制到另一个(目标)cv::Mat图像的ROI 我发现了,但它似乎不适合我的情况。 你有什么指针吗?我怎么能用OpenCV C++接口来做这个?< /P> < P> OpenCV 2.4:< /P> 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.copyT
cv::Mat
图像(源)复制到另一个(目标)cv::Mat
图像的ROI
我发现了,但它似乎不适合我的情况。
你有什么指针吗?我怎么能用OpenCV C++接口来做这个?< /P> < P> OpenCV 2.4:< /P>
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);
我的工作就是这样的:
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
根据Andrey的答案。除了上述答案或更正,如果您想将打开的
Mat
的较小区域复制到另一个Mat
,您应该执行以下操作:
src(Rect(left,top,width, height)).copyTo(dst);
谢谢我这样做,效果很好:bboxImage.copyTo(destImage.colRange(startCol,startCol+bboxImage.cols).rowRange(startRow,startRow+bboxImage.rows));生成调用viewtest2.cpp:172:61:注意:候选函数为:/usr/include/opencv2/core/core.hpp:1651:10:注意:void cv::Mat::copyTo(cv::OutputArray)const,不匹配函数。第二个解决方案确实有效,但是它会生成一个只包含src的图像。与以前版本的opencv有什么区别?为什么代码不同?
src.copyTo(dst(Rect(left,top,src.cols,src.rows));
3x'('and 2x')?Mat dst_roi=dst(Rect(left,top,src.cols,src.rows);
2x'('and 1x')?未测试的代码?valgrind在我使用OpenCV 3.2执行此操作时报告内存泄漏。但它可以工作^^