Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将cv::Mat复制到另一个的ROI中_C++_Opencv_Copy_Roi - Fatal编程技术网

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执行此操作时报告内存泄漏。但它可以工作^^