计算机视觉之OpenCV库常用库函数总结-基于C++编程(持续更新中)

本文总结了OpenCV库中一系列常用的C++函数,包括图像拷贝、saturate_cast、setTo、Scalar、图像相加、图像通道处理、图像重映射、范数计算、帧差法、阈值处理、满水填充算法、计时函数、比较函数、色度空间转换、多通道二值化、直方图统计、查找表、直方图均衡化和归一化等,旨在帮助读者快速理解和应用这些函数。
摘要由CSDN通过智能技术生成

最近一直在更新,想说一下自己写这篇博客的目的在于应用,让你通过简单的看OpenCV的一些函数原型,就能立马去使用这个函数。

1、图像的拷贝和深层次复制—copyTo()和clone()

(1)、copyTo() 方法也是深拷贝,但是会不会去申请新的内存空间,取决于dst矩阵头中的大小信息是否与src一至,若一致则只深拷贝并不申请新的空间,否则先申请空间后再进行拷贝.注意:评判的准则是,大小一不一致

(2)、clone 是最简单的深复制方法,在使用这个方法的时候,会在内存中申请新的空间

用法:
Mat A  = Mat::ones(4,5,CV_32F);
Mat B = A.clone()     //clone 是完全的深拷贝,在内存中申请新的空间,与A独立
Mat C;
A.copyTo(C)    //此处的C矩阵大小与A大小不一致,则申请新的内存空间,并完成拷贝,等同于clone()
Mat D = A.col(1);
A.col(0).copyTo(D); //此处D矩阵大小与A.col(0)大小一致,因此不会申请空间,而是直接进行拷贝,
                      相当于把A的第1列赋值给第二列。
2、saturate_cast( )方法

saturate_cast< uchar > : 此处为溢出保护,此处相当于在对数值进行剪切,使得只保留自己规定范围内的数值。

比如在这里, 溢出保护的范围我们定的是 <uchar>
因此,saturate_cast<uchar>( )方法就会对括号里面的数值进行剪切
    (1)、当 (***)  > 255时,赋值为255;
    (2)、当 (***)  <  0时,赋值为0;
3、setTo( ) 函数的使用

首选,setTo( )函数的原型是:Mat& setTo(InputArray value, InputArray mask=noArray());
解析:
1、功能:把矩阵mask中元素不为0的点全部变为value值;

2、当默认不添加mask的时候,表明mask是一个与原图尺寸大小一致的且元素值全为非0的矩阵,因此不加mask的时候,会将原矩阵的像素值全部赋值为value;

4、Scalar( )函数的使用

Scalar是一个由长度为4的数组作为元素构成的结构体,Scalar最多可以存储四个值,没有提供的值默认是0。
e.g. Scalar(1,2) 当用到的时候,就会在相应的像素里面赋值两个通道,里面数值为:(1,2)。

5、图像的简单运算之图像相加函数 addWeighted( )

首先来看一下,官方给的函数原型

      void addWeighted(InputArray src1, double alpha, InputArray src2,
                              double beta, double gamma, OutputArray dst, int dtype = -1);

解析: src1 和src2 就是两个输入图片,dst 是最后相加得到的目标图片, 其中 alpha、beta和gamma这几个参数是表示相应的权值,具体如下:

(1)、alpha – Weight for the first array elements.
(2)、beta – Weight for the second array elements.
(3)、gamma – Scalar added to each sum.
(4)、dtype – Optional depth of the destination array. When both input arrays have the same
(5)、The function addWeighted calculates the weighted sum of two arrays as follows:
(6)、dst(I) = saturate(src1(I) alpha + src2(I) beta + gamma)  ===>   dst = src1*alpha + src2*beta + gamma
6、分割图像通道 split( )函数和 merge( )函数

首先来看一下,官方给的函数原型

         void  split(InputArray m, OutputArrayOfArrays mv);

解析: m:表示的是输入的图像,mv:表示的是,创建的一个三通道向量。
注意:

(1)、使用这个函数的时候,首先应该建立一个 三
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值