博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OpenCV常用函数
阅读量:6657 次
发布时间:2019-06-25

本文共 1900 字,大约阅读时间需要 6 分钟。

这里对opencv里面的一些比较常见的函数做了一个归纳,有C接口的,也有C++接口的;更多函数可以查询最新的

1.cvNormalize

功能:根据某种范数或者数值范围归一化数组.
void cvNormalize( const CvArr* src, CvArr* dst, double a=1, double b=0, int norm_type=CV_L2,const CvArr* mask=NULL );
src: 输入数组
dst: 输出数组,支持原地运算
a: 输出数组的最小/最大值或者输出数组的范数
b:输出数组的最大/最小值
norm_type: 归一化的类型
可以有以下的取值:
CV_C - 归一化数组的C-范数(绝对值的最大值)
CV_L1 - 归一化数组的L1-范数(绝对值的和)
CV_L2 - 归一化数组的(欧几里德)L2-范数
CV_MINMAX - 数组的数值被平移或缩放到一个指定的范围
mask 操作掩膜,用于指示函数是否仅仅对指定的元素进行操作
该函数归一化输入数组使它的范数或者数值范围在一定的范围内
对于不同的norm_type, 根据(mask=null)的时候, a,b(a>b)起的作用结果如下:
norm_type=CV_C时, src 被重新"缩放"(rescale)到dst, 使得dst的值是线性映射到[0,1]区间.(a,b其实无作用)
norm_type=CV_L1,或者 CV_L2时, 得到L1,L2规范化的dst.(a,b其实无作用)
norm_type=CV_MINMAX时, src会被缩放(rescale)和移动(translation)到dst,使得dst的值是线性映射到[b,a]区间.

2.cvConvert

 因为 IplImage 里的数据,你只能用uchar的形式存放,当你需要这些图像数据看作数据矩阵来运算时,0~255的精度显然满足不了要求;

 然而CvMat里却可以存放任意通道数、任意格式的数据,这个机制方便了研究中的这种需求,转化为矩阵就可以进行更自由的计算;

1  void Show(CvMat* mat)   2  {    3    CvSize size = cvSize(mat->width,mat->height);    4    IplImage* imgBuf = cvCreateImage(size,IPL_DEPTH_8U,1);                           5    cvConvert(mat,imgBuf);      6    cvNamedWindow("mat",CV_WINDOW_AUTOSIZE);    7    cvShowImage("image",mat);    8     cvWaitKey(0);    9     cvReleaseImage(&imgBuf);  10  }

3.cvCopy

void cvCopy( const CvArr* src, CvArr* dst, const CvArr* mask=NULL );
在使用这个函数之前,你必须用cvCreateImage()一类的函数先开一段内存,然后传递给dst。cvCopy会把src中的数据复制到dst的内存中。

4.cvCloneImage

IplImage* cvCloneImage( const IplImage* image );
在使用函数之前,不用开辟内存。该函数会自己开一段内存,然后复制好image里面的数据,然后把这段内存中的数据返回给你。

5.cvFilter2D

对图像做卷积

void cvFilter2D( const CvArr* src, CvArr* dst, const CvMat* kernel, CvPoint anchor=cvPoint(-1,-1));

src 输入图像. dst 输出图像. kernel 卷积核, 单通道浮点矩阵. 如果想要应用不同的核于不同的通道,先用cvSplit函数分解图像到单个色彩通道上,然后单独处理。 anchor 核的锚点表示一个被滤波的点在核内的位置。 锚点应该处于核内部。缺省值 (-1,-1) 表示锚点在核中心。 本函数对图像进行线性滤波,支持 In-place 操作。当核运算部分超出输入图像时,函数从最近邻的图像内部象素差值得到边界外面的象素值。

转载于:https://www.cnblogs.com/Jack-Lee/p/3643269.html

你可能感兴趣的文章
进栈顺序为abcd则出栈顺序为_矫正做题顺序,搞定行测高分
查看>>
为什么me域名不能备案_注册域名后要做解析吗?怎么操作?
查看>>
一秒钟世界上会发生多少事_这一秒钟,却不止一秒钟
查看>>
typescript的基本结构_Vue 3.0前的 TypeScript 最佳入门实践
查看>>
tp5指向public_TP5和VUE同域名, 宝塔二级域名配置
查看>>
git pull 是到工作区还是暂存区_打好地基Git学习
查看>>
win10删除多余账户_【凡凡经验05】win10进入安全模式的三种方法
查看>>
命令及串口命令_单片机很好玩5,花三分钟,学会使用电脑发送“命令”控制单片机...
查看>>
里写注释 postman_5步学完spring boot单元测试,与postman有什么优点?
查看>>
提取一行数据列表_实例30_一键往Word文档的表格中填写数据
查看>>
例子 write_浅谈关于Linux内核write系统调用操作的原子性
查看>>
5传递参数丢失_为什么阿里巴巴不建议使用Intent传递大的数据
查看>>
顶部有一道线_蓄势待发!揭开S1线永中站的神秘面纱
查看>>
应用实例_一个栅格系统应用的实例分享
查看>>
程序怎么启动vasp_【你怎么看】两名游客故宫内抽烟还发视频炫耀 警方启动调查程序...
查看>>
12伏的蓄电池有几个单格组成_蓄电池的构造
查看>>
八段锦八个动作名称_八段锦自编口诀版,先收藏了再说
查看>>
威帝股份有无人驾驶概念吗_可转债短线战法(九) 威帝转债实战解析
查看>>
万能平板刷机软件_万能手机刷机软件下载
查看>>
await js 报错_js await 返回值
查看>>