Region of Interest(ROI)

Posted a-cock

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Region of Interest(ROI)相关的知识,希望对你有一定的参考价值。

创建一个ROI Mat,包含 50 X 50像素,起点(25,25)

Mat roi(image, Rect(25, 25, 50, 50));

在表征Mat的范围的时候,顺序是 row 然后是 col (先高后宽)。若使用此方法获取ROI,那么在ROI上的操作将直接作用到原图像上。创建的ROI并没有做一个深度copy,如果想要一个真正的copy,使用clone函数

Mat imageCopy = image.clone();

如果想要把感兴趣区域高亮一下,用这样的骚操作

Mat roi(image, Rect(500, 138, 65, 65));
roi = Scalar(0);

这样你的roi就成了一块儿黑炭了。

这里给出一个在图像上放置一个黑色十字的例子

#include <QCoreApplication>
#include "opencv2/opencv.hpp"

using namespace cv;

void crossTrape(Mat &rSrcImage);

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    Mat srcImage = imread("c:/users/administrator/desktop/cat.jpg");
    crossTrape(srcImage);

    imshow("output", srcImage);

    return a.exec();
}

void crossTrape(Mat &rSrcImage)
{
    Mat centralCols = rSrcImage.colRange(rSrcImage.cols / 2 - 10, rSrcImage.cols / 2 + 10);
    Mat centralRows = rSrcImage.rowRange(rSrcImage.rows / 2 - 10, rSrcImage.rows / 2 + 10);
    centralCols = Scalar(0);
    centralRows = Scalar(0);
}

技术分享图片

效果图

遍历所有像素,整体增亮函数:

void darker(Mat &rSrcImage)
{
    for(int i = 0; i < rSrcImage.rows; i++)
    {
        for(int j = 0; j < rSrcImage.cols; j++)
        {
            rSrcImage.at<Vec3b>(i, j)  = rSrcImage.at<Vec3b>(i, j) * 1.2;
        }
    }
}

技术分享图片

效果可以说是很明显了。

OpenCV 提供了一种更加便捷的遍历像素的方法,以后再补充吧,忒难了。

 

以上是关于Region of Interest(ROI)的主要内容,如果未能解决你的问题,请参考以下文章

ROI PoolingROI Pooling层详解(转)

基于opencv的感兴趣区域ROI的操作

在 Xcode for iOS 中导入 Points of Interest 仪器的路标代码名称

region/XLD的数据结构

Risk and term structure of interest rate

期刊要求的 Conflict of Interest(利益冲突)怎么写? 模板来了!