Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.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 - Fatal编程技术网

C++ 获取cv::Mat的源ROI坐标

C++ 获取cv::Mat的源ROI坐标,c++,opencv,C++,Opencv,在opencv中,图像和图像的ROI之间没有区别。cv::Mat对象可以是: cv::Mat img = cv::imread(fileName); cv::Mat imgROI(img,cv::Rect(1,2,30,40)); 我的问题是如何提取原始图像中的原始ROI坐标,即执行以下功能的函数: cv::Rect originalROIcoords = roiLocationInOriginalImg(imgROI); cv::Rect originalROIcoords2 = roiL

在opencv中,图像和图像的ROI之间没有区别。cv::Mat对象可以是:

cv::Mat img = cv::imread(fileName);
cv::Mat imgROI(img,cv::Rect(1,2,30,40));
我的问题是如何提取原始图像中的原始ROI坐标,即执行以下功能的函数:

cv::Rect originalROIcoords  = roiLocationInOriginalImg(imgROI);
cv::Rect originalROIcoords2 = roiLocationInOriginalImg(img );
原始图像坐标应为(1,2,30,40),而原始图像坐标2应为(0,0,w,h),其中w和h分别为原始图像的宽度和高度

谢谢


Ohad

要知道原始矩阵中子矩阵的坐标,可以使用函数
Mat::locateROI

// locates matrix header within a parent matrix
void locateROI( Size& wholeSize, Point& ofs ) const;

小心ROI的ROI,因为locateROI返回与根图像相关的偏移量,而与ROI父级无关

cv::Mat img(100,100,CV_8UC1);               // the root image
cv::Mat imgROI(img,cv::Rect(10,10,60,60));  // a ROI in the root image
cv::Mat roiROI(imgROI,cv::Rect(5,5,30,30)); // a ROI into a ROI

Point offset;
Size wholesize;
获取第一个ROI的偏移量:

imgROI.locateROI(wholesize,offset);
cout << "imgRoi Offset: " << offset.x <<","<< offset.y << endl;
imgROI.locateROI(批发、抵消);

要知道原始矩阵中子矩阵的坐标,不能使用函数Mat::locateROI?//在父矩阵void locateROI(大小和批发、点数和ofs)常量中定位矩阵头;我认为这个答案比公认的要好得多。因为它提供了使用的例子,以及一些注意事项的指南+1.
roiROI.locateROI(wholesize,offset);
cout << "roiRoi Offset: " << offset.x <<","<< offset.y << endl;