OpenCV是一个开源的计算机视觉和机器学习软件库,广泛应用于无人机、安防、图像处理等领域。OpenCV的C++版本具有丰富的模块,其中基础模块和深度神经网络(DNN)模块是两个主要部分。本文将详细记录学习OpenCV基础模块和DNN模块的心得,其中包含大量的注释源码,以便于读者理解并应用到实际开发中。 基础模块是学习OpenCV最先接触到的部分,主要包括图像处理、矩阵操作、视频处理、特征检测和提取等功能。要想开始使用OpenCV,首先需要进行环境配置。这一过程包括将OpenCV的包含目录(include)添加到Visual Studio的安装目录下,以及将库目录(lib)中的库文件拷贝到相应的路径。这样配置后,在每次创建新项目时,都需要在项目属性中链接器的附加依赖项里添加opencv_worldXX.lib文件,这里XX代表OpenCV的版本号。 在图像处理方面,OpenCV提供了大量的函数用于加载、修改和保存图像。对于图像的存储,OpenCV使用了一种称为Mat的对象,它是一种数据结构,用于存储多维数组。Mat对象中的uchar是一种8-bit无符号整型数据,用于表示图像的灰度级别。OpenCV中的坐标系是与常规的(x,y)顺序相反的(y,x)顺序,这意味着在访问像素值时,需要以(y,x)的形式进行。 图像处理中常用到的操作有掩膜处理和模糊处理。掩膜是一种二进制图像,由0和1组成,用于提高图像的对比度。当掩膜应用到某个图像处理功能中时,只有掩膜值为1的区域被处理,而掩膜值为0的区域则被屏蔽。filter2D函数在计算时是基于kernel与图像的相关性而不是卷积,这是图像处理中的一个基础知识点。 图像的混合操作也是基础模块中的一个重要内容。图像混合通常通过API实现,可以按权重混合两张图片,从而生成新的图像。图像混合通常涉及到调整图像的亮度与对比度,OpenCV中使用saturate_cast函数来确保像素值不会超出其数据类型的表示范围。 在进行图像处理时,还可能会需要使用到绘图函数,例如画线、矩形、圆形、椭圆形以及多边形等。OpenCV提供了丰富的函数来实现这些基本的图形绘制,每个函数都有其特定的参数和功能。例如,使用rect对象可以存储矩形框的位置和尺寸信息。 在图像处理的进阶应用中,深度神经网络(DNN)模块是非常重要的一部分。DNN模块用于构建和训练深度神经网络,用于图像识别、分类和其他复杂的视觉任务。DNN模块支持多种深度学习框架的模型,如Caffe、TensorFlow、Torch/PyTorch和Darknet等。 除了上述内容,OpenCV还提供了时间相关函数用于衡量程序的执行时间。GetTickcount函数返回系统启动到当前所经过的计时周期数,而getTickFrequency函数返回每秒的计时周期数,即频率。通过这两个函数的配合使用,可以计算出程序执行所花费的时间。 OpenCV是一个功能强大的计算机视觉库,尤其在图像处理和深度学习方面有广泛的应用。本学习笔记中的源码注释将帮助读者更快地掌握OpenCV的使用,从而在实际项目中更高效地解决计算机视觉相关问题。





























- 粉丝: 1w+
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 光纤通信通信入门技术.ppt
- 健康医疗大数据产业现状、趋势及标杆分析.pptx
- 机群系统中的高效全交换算法------.pdf
- 移动互联软件开发赛项规程.doc
- 2023年春季计算机网络专业专科实践活动方案.doc
- 向城市中坚致敬麟恒中心广场网络营销方案.pptx
- 农村信用联合社网络监控管理方案.doc
- 基于网络的远程主机故障诊断的研究与设计.doc
- 人工神经网络和其应用专家讲座.pptx
- 很棒华三云计算管理平台图文.pptx
- 项目工程管理5-1-2双代号网络计划.pptx
- 孩子沉迷网络怎么办.docx
- 微信小程序开发实例:豆瓣电影应用制作
- 数据结构与算法课程设计报告教学计划编制.pdf
- 计算机信息技术基础练习题及答案许骏.docx
- 2023年试谈电子商务竞赛规程.doc


