我知道在OpenCV 2.1中有一个设置ROI的函数:cvSetImageROI(),但是在2.4中不存在这样的函数(或者至少我在它的手册和帮助部分找不到)。
然而,这是我能找到的唯一使用opencv 2.4进行图像ROI的有用代码,但我很难理解它:
// 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函数给出,并且大小等于他们想要添加的小logo的大小。
然后让我困惑的是:cv::addWeighted(imageROI,1.0,logo,0.3,0.,imageROI);
在这里,addWeighted的第一个源是设置的ROI尺寸,第二个源是logo,目标也是设置的ROI尺寸。这正确吗?或者我漏掉了什么?
之后的结果显示了标有logo的大图像。在这些命令中,哪里包括了大图像呢?
在询问这个问题之前,我想自己尝试一下代码,以便可能帮助澄清情况。但是我遇到了这个错误,因为image()未被识别:'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;
}
src1(Rect(385,270,logo.cols,logo.rows));
中,我应该在所述385,270的位置给出什么位置?有没有简单的方法来找到这个位置?谢谢 - StuckInPhDNoMore