了解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