openCV-相关概念理解和应用

  • 图像掩模
    在OPENCV中,掩模可以用于图像处理的叠加,比如将一个logo标志图标放置在一副图片上,可以用addweight()函数,也可以用mask掩模的方式;
    下面分析一段添加掩模来处理图像的代码:
#include "opencv2/features2d/features2d.hpp"
#include "opencv2/highgui/highgui.hpp"
#include 
#include
#include 
#include 
using namespace cv;
using namespace std;

int main()
{
    Mat image1= imread("1.jpg", 1);
    Mat image2 = imread("2.jpg", 1);
    cout << image1.size() << endl;
    cout << image2.size() << endl;
    //system("pause");
    Mat dstImage;
    resize(image1, dstImage, Size(), 0.2, 0.2);
    //下面这句话将自己定义大小的RIO区域和原图像联系起来(就是要在原图的RIO区域加入新图)
    Mat imageROI = image1(Rect(0, 0, dstImage.cols,dstImage.rows));
    //Mat imageROI = image1(Rect(100, 100, image2.rows, image2.cols));//写成这样不行,后边的表示长度和高度,不能写反

    //加载出一个掩模(灰度图)????
    //Mat mask = imread("2.jpg", 0);//将待插入图变成掩模
    Mat mask;
    cvtColor(dstImage, mask, CV_BGR2GRAY);
    imshow("ss", mask);
    //image2.copyTo(imageROI, mask);//将mask对应的原图复制到自己定义的imageRIO区
    //上面的image2为什么不能换成mask,就是插入灰度图?????
    dstImage.copyTo(imageROI,mask);

    imshow("利用RIO区叠加图片", image1);
    //imshow("RIO", imageROI);
    waitKey(0);
    return 0;
}

上面核心就是mask存储的是一副灰度图,将logo传入图像中,靠的是这一条语句:dstImage.copyTo(imageROI,mask);

下面是我百度的掩模的主要用途:
数字图像处理中,掩模为二维矩阵数组,有时也用多值图像。数字图像处理中的图像掩模主要用于:
①提取感兴趣区,用预先制作的感兴趣区掩模与待处理图像相乘,得到感兴趣区图像,感兴趣区内图像值保持不变,而区外图像值都为0。
②屏蔽作用,用掩模对图像上某些区域作屏蔽,使其不参加处理或不参加处理参数的计算,或仅对屏蔽区作处理或统计。
③结构特征提取,用相似性变量或图像匹配方法检测和提取图像中与掩模相似的结构特征。
④特殊形状图像的制作。

  • 怎么理解指针访问图像元素。
    openCV-相关概念理解和应用_第1张图片

  • 怎么理解Vec3b(Vec是opencv 的一个模板类)
    openCV-相关概念理解和应用_第2张图片

  • 怎么理解直方图的维数
    直方图维度就是对应图片的通道数,每一维度的长度就是通道对应的灰度级。
    比如一维直方图就是灰度图的直方图,直方图的尺寸是256.
    高维直方图可以理解为图像在每个维度上(也就是每个通道上)灰度级的直方图openCV-相关概念理解和应用_第3张图片

你可能感兴趣的:(图像处理,opencv,图像处理,openCV)