opencv函数学习
目录
4、createTrackbar --创建滑动条 getTrackbarPos --获取滑动条的值
0、Mat
Mat 是opencv的基础类型,表示一张图片
1、构造函数
这个用到的时候再去查
2、向外提供的函数以及变量
1、dims --变量
int cv::Mat::dims;
返回图像矩阵的维度,大于等于2
2、channels()
int cv:: Mat :: channels()const
返回图像的通道数
3、cols 、rows
int cv::Mat::cols;
返回矩阵的列数
int cv::Mat :: rows;
返回矩阵的行数
4、size
MatSize cv::Mat::size
返回矩阵大小
1、imread函数
Mat imread(const string& filename,int flag=IMREAD_COLOR);
filename 是图片的路径,flag是可选参数,表示读入的方式
具体的flag可自行百度,太多了,而且一般用默认的就好了
2、resize函数
void resize(InputArray src , OutputArray dst , Size dsize , double fx=0 , double fy =0 , int interpolation = INTER_LINEAR)
src、dst是输入、输出图像。
dsize 表示输出图像的大小,如果为0,则使用后面的 fx,fy 来决定输出图像的大小
fx 沿x轴的放缩系数,fy沿y轴的放缩系数
参数interpolation 表示插值方式,有一下几种:
INTER_NEAREST -最近邻插值
INTER_LINEAR -线性插值(默认)
INTER_AREA -区域插值
INTER_CUBIC -三次样条插值
INTER_LANCZOS4 -Lanczos插值
3、Size结构
构造函数
Size() = 默认
Size (int width , int height)
Size(const cv::Size &other)
4、createTrackbar --创建滑动条 getTrackbarPos --获取滑动条的值
int createTrackerbar(const string& trackerbarname , const string winame , int *value , int count , TrackbarCallback onChange=0 , void *userdata =0);
参数解释
trackerbarname --轨迹条的名字
winame --窗口的名字,轨迹条会依附在这个窗口上
value –一个指向整形的指针,表示滑块的位置,在创建时,滑块的初始位置就是该变量当前的值
count --滑块可以达到的最大位置的值,滑块最小位置的值始终为0
onChange --指向回调函数的指针,每次滑块位置改变时,这个函数都会进行回调。并且这个函数的原型必须是 void 函数名(int , void*) 。其中第一个参数是轨迹条的位置,第二个参数是用户数据。 如果回调函数是NULL指针,则表示没有回调函数的调用,仅参数value有变化,这个参数一般用默认值就可以了。
userdata –用户传给回调函数的数据,用来处理轨迹条事件。如果使用的value实参是全局变量,可以不去管userdata参数
int getTrackbarPos(const string& trackbarname , const string& winname)
参数解释
trackbarname --轨迹条名字
winname --轨迹条的父窗口名称
返回滑动条当前的值
5、namedWindow --新建一个显示窗口
void namedWindow(const string& winname , int flags = WINDOW_AUTOSIZE);
参数解释
winname –新建窗口的名字
flags --窗口表示,有以下几个值
WINDOW_AUTOSIZE --窗口大小自动适应图片大小,并且不可以手动更改
WINDOW_NORMAL --用户可以改变窗口大小
WINDOW_OPENGL --窗口创建的时候会支持OpenGL
6、cvtColor --颜色空间转换
cvtColor(InputArray src , OutputArray dst , int code ,int dstCn=0)
参数解释
src --输入图像,既要进行颜色空间变换的原图像,可以是Mat类
dst --输出图像,即进行颜色变换后存储的图像,可以是Mat 类
code --转换的代码或标识,用以说明将什么制式的图片转成什么制式的图片
dstCn --目标图像通道数,如果为0,则由src和code决定
code常用参数
BGR2GRAY --灰度化,注意的是,opencv的rgb图像默认是BGR排序
7、threshold --二值化
double threshold( InputArray src , OutputArray dst , double thresh , double amxval , int type)
参数解释
src --输入图像,可以为8位的灰度图,也可以为32位的彩色图像。
dst --输出图像
thresh --阈值
maxval –dstt图像中的最大值
type --阈值类型,可以具体类型如下:
8、getStructuringElement()
这个函数可以用来获取形态学操作所需要的核,原型如下:
Mat getStructuringElement(int shape , Size esize , Point anchor = Point(-1,-1));
参数解释
shape --这个参数表示内核的形状,有三种形状可以选择
MORPH_RECT 矩形
MORPH_CORSS 交叉形
MORPH_ELLIPSE 椭圆形
9、膨胀
膨胀就是求局部最大值的操作。从数学的角度来说,就是将图像与核进行卷积,计算核壶盖区域的像素点的最大值,并把这个最大值赋值给参考点指定的元素。这样就会使图像中的高亮区域逐渐增长。
Void dilate(const Mat& src , Mat& dst , const Mat& element , Point anchor = Point(-1,-1), int iterations =1, int borderType = BORDER_CONSTANT , const Scalar& borderValue = morphologyDefaultBorderValue());
参数解释
src --原图
dst --输出图
element --腐蚀操作的内核,如果不指定,默认为一个简单的3x3矩阵。否则,我们就要明确指定它的形状,可以使用函数getStructuringElement()。
anchor --默认为Point(-1,-1),内核的中心点,省略时为默认值。
iterations --腐蚀的次数。省略时为默认值1.
borderType --推断边缘类型,具体参见borderInterpolate函数,默认为BORDER_DEFAULT,缺省时为默认值。
borderValue --边缘值,具体可参见createMorphoogyFilter函数,可省略。
10、腐蚀
腐蚀和膨胀是相反的操作,腐蚀是求局部最小值的操作。腐蚀操作会使图像中的高亮区域逐渐减小。
Void erode(const Mat&src,Mat& dst ,const Mat& element , Point anchor = Point(-1,-1), int iterations = 1 , int borderType = BORDER_CONSTANT , const Scalar& borderValue = morphologyDefaultBorderValue() );
参数解释
src --原图
dst --输出图
element --腐蚀操作的内核,如果不指定,默认为一个简单的3x3矩阵。否则,我们就要明确指定它的形状,可以使用函数getStructuringElement()。
anchor --默认为Point(-1,-1),内核的中心点,省略时为默认值。
iterations --腐蚀的次数。省略时为默认值1.
borderType --推断边缘类型,具体参见borderInterpolate函数,默认为BORDER_DEFAULT,缺省时为默认值。
borderValue --边缘值,具体可参见createMorphoogyFilter函数,可省略。
11、开运算
开运算是先腐蚀后膨胀,主要用于消除小物体,在纤细点处分离物体,并且在平滑较大物体的边界同时不明显改变其面积,同时抑制比结构元小的亮细节。
void morphologyEx(InputArray src , OutputArray dst , int op , InputArray kernel , Point anchr =Point(-1,-1) ,intiterations =1, int borderType =BORDER_CONSTANT, const Scalar& borderValue = morphologyDefaultBorderValue());
参数解释
src 是输入的图像,即源图像
dst 是输出图像
op是表示符,这个参数指定进行的操作,如下:
MORPH_OPEN 开运算
MORPH_CLOSE 闭运算
MORPH_GRADIENT 形态学梯度
MORPH_TOPHAT 顶帽
MORPH_BLACKHAT 黑帽
kernel 形态学运算的内核,如果为NULL,表示的是使用参考点位于中心的3x3的核。
anchor 锚的位置,默认值(-1,-1),表示锚位于中心。
iterations 迭代的次数,默认为1
boderType 用于推断图像外部像素的某种边界模式,默认值BORDER_CONSTANT。
borderValue 当边界为常数时的边界值,有默认值morphologyDefaultBorderValue(),一般不去使用,可以在createMorphologyFilter()函数中得到解释。
12、闭运算
闭运算是先膨胀后腐蚀,用来填充物体内细小的空洞、连接邻近物体、平滑其边界的同时并不明显改变其面积,同时抑制比结构元小的暗细节。