了解openCV 2.4中感兴趣的区域

我知道在OpenCV 2.1中我们有一个函数来设置ROI:cvSetImageROI(),但是这个函数在2.4中不存在(或者至少我不能在它的手册和帮助部分中找到它)。

然而,这里是唯一有用的代码,我可以找到哪些使用opencv 2.4的法师投资回报率,但我无法理解它:

// define image ROI
cv::Mat imageROI;
imageROI= image(cv::Rect(385,270,logo.cols,logo.rows));
// add logo to image 
cv::addWeighted(imageROI,1.0,logo,0.3,0.,imageROI);

在这里,他们想要在原始图像右下角的大图像上添加一个非常小的日志。

所以我从这里理解的是,另一个矩阵是为了保持ROI而创建的。 它的尺寸是用rect函数给出的,尺寸和他们想要添加的小徽标相同。

然后,这是什么使我困惑: cv::addWeighted(imageROI,1.0,logo,0.3,0.,imageROI); 此处addWeighted的来源1是ROI维度集,来源2是徽标,目的地也是ROI维度集。 它是否正确? 或者我错过了什么?

在此之后,显示的结果是将徽标添加到大图像中。 包括这些命令在内的大图。

在问这里之前,我想亲自尝试一下代码,以帮助澄清情况。 但我得到这个错误,因为无法识别图像(): 'image': identifier not found

int _tmain(int argc, _TCHAR* argv[])
{
Mat src1, imageROI, logo;

logo = imread("c:car1.jpg", -1);

imageROI= image(Rect(385,270,logo.cols,logo.rows));

addWeighted(imageROI,1.0,logo,0.3,0.,imageROI);


namedWindow("meh", CV_WINDOW_AUTOSIZE);
imshow("meh", imageROI);
waitKey(0);


return 0;

}


cv::Mat imageROI;
imageROI= image(cv::Rect(385,270,logo.cols,logo.rows));

cv :: Mat构造函数需要一个矩形作为参数:

Mat::Mat(const Mat& m, const Rect& roi)

返回一个矩阵,该矩阵指向原始图像的ROI,位于矩形指定的位置。 所以imageROI实际上是原始图像“图像”的兴趣区域(或子图像/子矩阵)。 如果你修改了imageROI,它将会修改原来的更大的矩阵。

至于你的例子,问题是你从一个不存在的对象(图像)调用构造函数。 你应该替换:

imageROI= image(Rect(385,270,logo.cols,logo.rows));

通过:

imageROI= src1(Rect(385,270,logo.cols,logo.rows));

假设src1是您想要插入徽标的“大图像”(徽标是car1.jpg)。 顺便说一下,你不应该忘记首先阅读你的大图。

链接地址: http://www.djcxy.com/p/67003.html

上一篇: Understanding region of interest in openCV 2.4

下一篇: Accessing certain pixel RGB value in openCV