码迷,mamicode.com
首页 > 其他好文 > 详细

Region of Interest(ROI)

时间:2018-03-18 20:03:01      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:遍历   png   user   inf   例子   range   rect   分享   图像   

创建一个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)

标签:遍历   png   user   inf   例子   range   rect   分享   图像   

原文地址:https://www.cnblogs.com/a-cock/p/8596789.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!