【问题标题】:Understanding region of interest in openCV 2.4了解 openCV 2.4 中的感兴趣区域
【发布时间】:2012-10-03 09:43:40
【问题描述】:

我知道在 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 函数给出,尺寸等于他们要添加的小标志的尺寸。

然后 thsi 让我感到困惑:cv::addWeighted(imageROI,1.0,logo,0.3,0.,imageROI); 这里 addWeighted 的源 1 是 ROI 尺寸集,源 2 是徽标,目标也是 ROI 尺寸集。它是否正确?还是我错过了什么?

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

在问这里之前,我想自己尝试一下代码,以帮助澄清情况。但我收到此错误,因为无法识别 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;

}

【问题讨论】:

    标签: c++ opencv


    【解决方案1】:
    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)。顺便说一句,你不应该忘记先阅读你的大图!

    【讨论】:

    • 太好了。非常感谢。这就是我感到困惑的原因,我认为图像是一个功能,并没有发现任何提及大图像。感谢您清除它。关于这个主题的最后一个问题是,我如何找到矩形顶点的像素位置。我的意思是假设我想将我的徽标添加到 src 1 的左上角,那么在src1(Rect(385,270,logo.cols,logo.rows)); 中,我应该给出什么位置来代替所说的 385,270?有没有简单的方法可以找到这个?谢谢
    • 您可以使用 ROI 内的坐标,即图像中的 385,270 对应于 ROI 中的 0,0。只要您使用 cv::Mat 的访问器,这将起作用,例如 Mat::at(int row, int col)。如果直接使用原始数据,要注意ROI中的实际数据布局是原始图像的数据布局
    猜你喜欢
    • 2013-03-03
    • 1970-01-01
    • 2012-04-25
    • 1970-01-01
    • 2013-02-28
    • 2017-09-28
    • 2011-08-10
    • 1970-01-01
    相关资源
    最近更新 更多