OpenCv基础知识梳理总结

通过一些小例子,来学习下OpenCv的基本知识。

由于OpenCv的c++类和函数都是定义在命名空间cv中的,因此在使用OpenCv的一些类和函数的时候要加上cv::命名空间,还可以选择在程序中OpenCv函数的调用之前使用:

using namespace cv; 来确定命名空间,为了后面程序中OpenCv函数的调用方便。

Mat类:是保存图像以及其他矩阵数据的数据结构,默认大小为0,OpenCv2.0以后,实现图片的载入和显示变得更加便捷。需要使用imread()和imshow()。

看例子学应用:

Mat image1 = imread("imagePath",0);//载入灰度图像

Mat image1 = imread("imagePath",> 0 );//载入3通道的彩色图像

Mat image1 = imread("imagePath",2|4);//载入无损源图像


imshow()函数:原型:inshow(const string& winname, InputArray mat);

第一个参数为:需要显示的窗口标识名;第二个参数为:需要显示的图像类型为Mat。


创建窗口的函数:namedWindow(const string& winname, int flags = WINDOW_AUTOSIZE);

第二个参数的值分为: WINDOW_NORMAL   : 无限制。

 WINDOW_AUTOSIZE :自适应。

 WINDOW_OPENGL:支持openGL。

在opencv2.0中可以 在上面属性的前面加CV_ 

namedWindow()函数的用途就是创建一个可以存放图片和进度条的容器窗口。

imwrite()函数:输出图像到文件。

imwrite(const string& filename, InputArray img, const vertor¶ms = vector());

第一个参数:需要写入的文件名,注意要带上后缀。

第二个参数:Mat类型的图像数据。

第三个参数:表示特定格式保存的参数编码,若填写按下面要求。

对于JPEG格式 参数[0 100] -表示图片质量,默认值值是95.

对于PNG格式 参数[0 9] -表示压缩级别 默认为3

对于PPM,PGM,PBM  - 表示一个二进制格式的标志,取值为01,默认为1.

图像的混合:addweighted();函数

 

图像处理中一个简单而有趣的点运算操作可以用以下的公式表示,可以实现两张图片的线性融合。

 g(x) = (1-α)f0(x) + αf1(x)

这里α 表示两种图片的融合比例,这个g(x) 表示 融合图片中的像素点,f0(x) f1(x) 分别表示背景和前景图片中的像素点。

下面为例程中的函数调用,

   beta = ( 1.0 - alpha );

   addWeighted( src1, alpha, src2, beta, 0.0, dst);

opencv 通过 addWeighted 函数实现图片的线性融合,这个函数在之前的例程中也有提到过。

这个函数的原型如下所示,可以看出这个函数最小需要6个参数。

1、 第1个参数,输入图片1 

2、第2个参数,图片1的融合比例

3、第3个参数,输入图片2

4、第4个参数,图片2的融合比例

5、第5个参数,偏差

6、第6个参数,输出图片


你可能感兴趣的:(计算机图形图像处理)