云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > OpenCV学习笔记

OpenCV学习笔记

  • 62 次阅读
  • 3 次下载
  • 2025/5/24 17:10:46

cvWaitKey()这个函数在一个给定的时间等待用户按键触发。cvWaitKey()可以接收0作为参数,在这种情况下,cvWaitKey()会无限期地等待,直到用户触发一个按键。

鼠标事件

鼠标事件相应采用回调函数的方式来处理,为了可以相应鼠标点击事件,首先必须创建一个回调函数,是鼠标点击事件发生时OpenCV可以调用这个函数。

回调函数的格式:

Void CvMouseCallback(int event,int x,int y,int flags, void*param);

第二个以及第三个参数会被设置成事件发生时鼠标位置的x,y坐标值。这些坐标代表窗口中图像的像素坐标,与窗口的大小没有关系。

第四个参数flags ,每一位指定了在事件发生时的不同状态。 Param可以用来以任何结构方式传递额外的参数信息

注册回调函数

Void cvSetMouseCallBack (

const char* window_name,/////指定回调函数要注册到的窗口 CvMouseCallback on_mouse, ///回调函数 void* param=NULL);////传递额外的信息给void* param 参数

Sliders ,Trackbars,和Switches

滑动条被指定了一个独立的名称(字符串形式),并且后面使用此名称来制定这个滑动条。

Int cvCreateTracker(

Const char* trackba_name,////滑动条的名字

Const char* widow_name,///滑动条附属的窗口名字

Int* value,///当滑动条被拖动时,OpenCV自动将当前位置所代表的值传给指针指向的整数 Int count ,/////滑动条所能表示的最大值

CvTrackbarCallback on_change///指向回滑函数的指针,当滑动条被拖动时,回滑函数会自动调用。 );

CvTrackCallback定义如下: Void(*callback)(intposition)

Int cvGetTrackbarPos(////用于读取滑动条value的值 const char* track_name, Const char* window_name );

Void cvSetTrackbarPos( const char* track_name,

Const char* window_name Int pos );

无按钮

用只有两个取值的滑动条来代替按钮,开关(switch)事实上就是只有两个状态的滑动条,这个状态是“on”和“off”。

视频的处理

CvCapture* cvCreateFileCapture(const char* filename);///只需要将MPG或AVI视频文件名 CvCapture* cvCreateCameraCapture(int index);

读视频

Int cvGrabFrame(CvCapture* capture);

IplImage* CvRetrieveFrame(CvCapture* capture); IplImage* cvQueryFrame (CvCapture* capture);

ConvertImage函数//用于不同图像格式之间转换 Void ConvertImage(const CvArr* src, CvArr* dst,

int flags=0///垂直旋转图像 );

第5章 图像处理

图像处理:使用图像结构中所定义的高层处理方法来完成特定任务,这些任务是图形和视觉范畴的任务。

平滑处理(模糊处理)

OpenCV提供的平滑操作方法都是由cvSmooth函数实现,该函数可以将用户所期望的平滑方式作为参数。

Void cvSmooth(

Const cvArr* src,//平滑操作的输入图像 CvArr* dst,///平滑操作的结果 Int smootype =CV_GAUSSIAN, Int param1=3, Int param2=0, Double param3=0,

Double param3=0,////这些参数的含义取决于smoothtype的值 );

CV_BLUR (简单模糊)对每个像素param1*param2领域求和,并缩放1/(param1*param2) CV_BLUR_NO_SCALE(简单无缩放变换的模糊)对每个像素的param1*param2领域求和 CV_MEDIAN(中值模糊)对图像核进行大小为param1*param2的中值滤波 CV_GAUSSIAN(高斯模糊)对图像进行大小为param1*param2的高斯卷积 CV_BILATERAL(双边滤波)应用双线性3*3滤波,颜色sigma=param1,空间sigma=param2

图像形态学

基本的图像转换是膨胀与腐蚀

膨胀是指将一些图像(或图像中德一部分区域成为A)与核(称为B)进行卷积,核可以是任何的形状或大小,他拥有一个单独定义出来的参考点,多数情况下,核是一个小的中间带有参考点的实心正方形或圆盘。核可以视为模板或掩码,膨胀是求局部最大值的操作。

腐蚀是膨胀的反操作,腐蚀操作要计算核区域像素的最小值,腐蚀可以通过下面的算法生成一个新的图像:当核B与图像卷积时,计算被B覆盖区域的最小像素值,并把这个值放到参考点上。

膨胀可以填补凹洞,腐蚀可以消除细的凸起。

膨胀函数cvErode()和腐蚀函数cvDilate()都有源图像和目标函数参数 Void cvErode( IplImage* src,

IplImage* dst,

IplConvKernel* B=NULL,//是核当为空时,所使用的是参考点位于中心3*3核 int interations=1////迭代的次数 );

Void cvDilate( IplImage* src,

IplImage* dst,

IplConvKernel* B=NULL, int interations=1 );

当OpenCV执行cvErode()函数时,将某点p的像素值设为与p对应的核覆盖下所有点中的最小值,同样的,对于执行膨胀操作时,将取最小值换为取最大值:

自定义核 创建

IplConvKernel* cvCreateStructuringElementEx(

Int cols,

Int rows,///行和列确定了所构成矩形大小

Int anchor_x,//是核的封闭矩形内参数点的横纵左边(x,y) Int anchor_y, Int shape,//形状

Int* values=NULL///value在封闭矩形内定义核的形状 ); 释放

Void cvRealseStructuringElement(IplConvKernel** element);

IplConvKernel的形状取值 CV_SHAPE_RECT 核是矩形

CV_SHAPE_CROSS 核是十字交叉形 CV_SHAPE_ELLIPSE 核是椭圆形

CV_SHAPE_CUSTOM 核是用户自定义的值

更通用的形态学

在处理布尔图像和图像掩码时,基本的腐蚀和膨胀操作通常是足够的,然而,在处理灰度或彩色图像时,需要使用cvMorphologyEx()函数 Void cvMorphologyEx(

Const CvArr* src, CvArr* dst,

搜索更多关于: OpenCV学习笔记 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

cvWaitKey()这个函数在一个给定的时间等待用户按键触发。cvWaitKey()可以接收0作为参数,在这种情况下,cvWaitKey()会无限期地等待,直到用户触发一个按键。 鼠标事件 鼠标事件相应采用回调函数的方式来处理,为了可以相应鼠标点击事件,首先必须创建一个回调函数,是鼠标点击事件发生时OpenCV可以调用这个函数。 回调函数的格式: Void CvMouseCallback(int event,int x,int y,int flags, void*param); 第二个以及第三个参数会被设置成事件发生时鼠标位置的x,y坐标值。这些坐标代表窗口中图像的像素坐标,与窗口的大小没有关系。 第四个参数flags ,每一位指定了在事件发生时的不同状态。 Param可以用来以任何结构方式传

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com