opencv基础(二)

本小节,我们来讲解一下,图像的掩模操作,说得高大上,其实就是矩阵与矩阵之间的操作。是为了提高图片的对比度。

如图:

左边是图像,右边是掩模矩阵,然后两个矩阵对应上的元素相乘并相加并得到一个值。

有两种方法来求取图像的掩模:

1、获取图像像素值,然后根据上面公式进行计算。

      首先我们要来说说图像的像素值怎么获取:

            Mat.ptr<uchar>(int i=0)获取像素矩阵的指针,索引i表示第几行,从0开始计算

            Mat src;

            const uchar* current=src.ptr<urchar>(0);

            当前像素点的像素值p(col,row)=current[col];

扫描二维码关注公众号,回复: 5069266 查看本文章

             还有一个知识点需要了解。

                   saturate_cast<uchar>

                  当saturate_cast<uchar>(-100),返回0;

                    saturate_cast<uchar>(288),返回255;

                    saturate_cast<uchar>(100),返回100

             这个函数可以保证像素值在0-255之间。

   那么计算我们知道如何获取像素值了,则可以利用上述公式进行掩膜的计算。

   2、使用Opencv提供给我们的filter2D()来进行计算。

           

           参数一:输入图像;

           参数二:输出图像;

            参数三:输出图像矩阵中元素的一个通道的数据类型。

            一般只用到前三个。

      接下来看看分别使用两种方式的代码实现。

结果如下:

从结果我们可以看出使用掩模操作确实能够增加图像的对比度,而使用Filter2D和直接计算掩模得出来的效果基本一样。

总结一下:

这小节我们讲了以下几点。

1、掩模的概念和作用:提高对比度。

2、通过像素值来进行掩模计算。

3、通过opencv提供的filter2D进行掩模计算。

猜你喜欢

转载自blog.csdn.net/qq_34062754/article/details/86591959
今日推荐