详解 OpenCV4.5.0 官方示例Samples
liebian365 2024-11-02 13:36 7 浏览 0 评论
OpenCV 为我们提供了应用示例,但对于Windows 上的开发者,当前的方式可能不太友好,这部分内容还需要编译成Visual Studio 工程,便于我们在Windows 上学习和研究OpenCV。本文将详细介绍一下官方提供的示例程序的相关知识点,主要围绕如下5个内容展开,供大家学习参考。
1.Samples 源码存放位置
OpenCV4.0 及之后的版本 示例代码都放在../sources/samples 目录,
如果是直接从gitHub下载的源码,samples 在解压后的第一及目录,
2.Samples 主要内容
2.1 Samples 目录
Samples目录下的资源说明如下,
2.2Samples/cpp 目录
cpp文件夹主要内容介绍:
? example_cmake:cmake编译源码示例
? tutorial_code: opencv教程代码
? 3calibration.cpp: 同时标定三台水平放置的相机
? bagofwords_classification.cpp: 使用图像检测实现简易的图像搜索功能
? bgfg_gmg.cpp: 演示GMG 背景检测算法的使用方式
? bgfg_segm.cpp: 演示高斯混合背景检测算法的使用方式
? brief_match_test.cpp: 使用 BRIEF 特征值来匹配两张图像
? build3dmodel.cpp: 演示如何使用基础矩阵和特征值来创建三维模型
? calibration.cpp: 完整的多用途标定程序
? calibration_artificial.cpp: 在程序中生成一个虚拟的相机,并进行标定
? camshiftdemo.cpp: 读取实时的摄像头数据,并演示基于均值偏移算法的视频跟踪
? chamfer.cpp: 使用Chamfer 算法匹配两副边缘图像
? cloning_demo.cpp: 命令行模式的图像克隆
? cloning_gui.cpp: 图形界面交互的图像克隆
? connected_components.cpp: 查找并绘制图像中的连通区域
? contours2.cpp: 查找并绘制图像中的轮廓
? convexhull.cpp: 查找并绘制由点的集合组成的图表
? cout_mat.cpp: 使用cout 来输出各种格式化的 Mat 对象
? create_mask.cpp: 演示如何创建黑白掩码图像
? dbt_face_detection.cpp: 基于检测的人脸跟踪代码
? delaunay2.cpp: 通过鼠标交互式地生成 Delaunay 三角形
? demhist.cpp: 演示直方图的用法
? descriptor_extractor_matcher.cpp: 演示 features2d 检测框架的用法
? detection_based_tracker_sample.cpp: 与 dbt_face_detection.cpp 类似
? detector_descriptor_evaluation.cpp: 评估各种特征检测器和描述子
?detector_descriptor_matcher_evaluation.cpp:评估各种特征检测器和匹配器
? dft.cpp: 演示一幅图像的离散傅里叶变换
? distrans.cpp: 显示边缘图像的距离变换值
? drawing.cpp: 演示绘画和文字显示功能
? edge.cpp: 演示Canny 边缘检测
? em.cpp: 对随机生成的数据点进行 EM 聚类
? fabmap_sample.cpp: 演示 FAB-MAP 图像检索算法
? facerec_demo.cpp: 人脸识别
? fback.cpp: 实时的Farneback 光流跟踪
? ffilldemo.cpp: 演示 floodFill() 像素填充算法
? filestorage.cpp: 演示序列化到外部文件,如yml、xml等
? fitellipse.cpp: 将轮廓点匹配到椭圆
? freak_demo.cpp: 演示 FREAK 特征值的用法
? gencolors.cpp: 演示 generateColors()
? generic_descriptor_match.cpp: 基于 SURF 的两幅图像间的匹配
? grabcut.cpp: 演示GrabCut 分割算法
? houghcircles.cpp: 用霍夫算法检测圆
? houghlines.cpp: 用霍夫算法检测直线
? hybridtrackingsample.cpp: 混合跟踪算法(Hybrid Tracker)的演示
? image.cpp: 来回转换cv::Mat 和 IplImage
? image_alignment.cpp: 演示 findTransformECC() 函数
? image_sequence.cpp: 使用 VideoCapture 对象读取序列帧
? imagelist_creator.cpp: 创建图像列表到 xml 文件
? inpaint.cpp: 使用鼠标交互地进行图像修补
? intelperc_capture.cpp: Intel 感知计算设备相关的函数
? kalman.cpp: 使用卡尔曼滤波进行二维跟踪
? kmeans.cpp: Kmeans 聚类算法的演示
? laplace.cpp: 拉普拉斯边缘检测
? latentsvm_multidetect.cpp: latentSVM 检测器
? letter_recog.cpp: 字母识别
? linemod.cpp: 基于OpenNI 的体感设备应用
? lkdemo.cpp: 演示Lukas-Kanade光流法
? logpolar_bsm.cpp: 演示 LogPolar 盲点模型
? lsd_lines.cpp: LSD 线段检测
? matcher_simple.cpp: SURF 特征检测
? matching_to_many_images.cpp: 一对多的特征检测
? meanshift_segmentation.cpp: 演示基于均值漂移的色彩分割函数——meanShiftSegmentation()
? minarea.cpp: 寻找最小包围盒、包围圆
? morphology2.cpp: 形态学图像处理
? npr_demo.cpp: 演示各种非真实感渲染效果
? opencv_version.cpp: 输出 OpenCV 库的版本号
? openni_capture.cpp: 演示 OpenNI 相关的体感设备
? pca.cpp: 基于 PCA 的人脸识别
? peopledetect.cpp: 基于 cascade 或 hog 进行物体(人)检测
? phase_corr.cpp: 演示 phaseCorrelate() 函数
? points_classifier.cpp: 演示各种机器学习算法
? segment_objects.cpp: 实时地在视频或相机画面中检测前景物体
? select3dobj.cpp:在一个有标定棋盘的桌子上,使用3D Box标记一个对象,在所有序列帧中,只要照相机可以看到棋盘,就可以跟踪对象,并用Box分割对象
? shape_example.cpp: 比较并检索形状
? shape_transformation.cpp: 用 SURF 特征值检测形状并进行变换
? squares.cpp: 检测图像中的方块形状
? starter_imagelist.cpp: 加载一个ImageList(由imagelist_creator.cpp产生)
? stereo_calib.cpp: 双目视觉的标定
? stereo_match.cpp: 计算左右视觉的图像的差异,生成点云文件
? stitching.cpp: 演示图像拼接算法
? stitching_detailed.cpp: 演示更多参数的图像拼接算法
? train_HOG.cpp: 训练 HOG 分类器
? tree_engine.cpp: 演示如何使用不同的决策树和森林包括Boosting和随机树
? videostab.cpp: 演示 videostab 中各个参数的用法
? watershed.cpp: 演示著名的分水岭图像分割算法
3.将Samples编译成Visual Studio 解决方案
用CMake工具生成Visual Studio解决方案的操作已在前面的文章 Windows10 编译OpenCV4.5源码 做过详细介绍,包括Cmake 工具相关的内容, 有需要的可以参考一下,这里就不再重复展开了。创建并选择一个Samples VS工程存放目录,用Cmake 工具编译即可。
设置OpenCV库文件目录,需要与当前版本相匹配。
SYCL 和dnnl 没找到,暂时还没有搞清楚需要怎么设置路径,先不管。解决方案已生成没有报错,不影响我们了解除了这两项以外的其他功能。
4.OpenCV452Samples.sln 工程介绍
上一步Generateing done之后,我们已经将Samples的源码编译为Visual Studio 解决方案,存放在第一步Cmake设置的目标工程存放目录中,
打开samples.sln,共235个解决方案,这里每个解决方案 都是OpenCV 在某类问题上调用库函数的解决方法示例。内容很多,全部消化可能也需要一段时间,建议作为手册或字典,需要了解某个接口的使用方法时,可以在这里查看用法。
5.功能演示grabcut
我们用grabcut 图像分割的工程来演示一下,样本用例能帮助我们干些啥?
1)先将这个工程设置启动项
2)添加测试图像
在main函数中设置一张准备进行图像分割的测试图像,我们用官方的一张经典的图像(D:/CV/opencv450/opencv/sources/samples/data/messi5.jpg)分割示例图像来演示
3)查看用法
先找到main函数,
查看main函数的定义,
直接运行,进入命令行界面,有操作提示,
这些help信息,其实就是在间接告知这个grabCut API的参数信息和用法。
效果图如下,
通过效果了解到这个grabCut 是用于前景分割的,这张效果图不是很好,背景不是很干净,如果选一张背景比较干净的图像,效果会好很多。
从这个例子,我们大致了解了这个grabCut API的作用(图像分割,分离提取前景图像),有类似的场景就可以选用的函数。具体再做的时候可以再深入研究这个API的用法以及这部分功能实现的源码,最后应用到我们的项目中。
总结:
本文从详细介绍了在Windows中 OpenCV4.5.0 官方Samples的详细知识点,保存资源存放位置,各文件/模块的详细说明,解决方案samples.sln编译方法以及工程介绍,最后选用了一个sample.sln的图像分割的实例介绍了 官方Samples的参考方法等。
如果本文对你有所帮助,还请帮忙点赞转发关注加收藏,谢谢。
相关推荐
- 快递查询教程,批量查询物流,一键管理快递
-
作为商家,每天需要查询许许多多的快递单号,面对不同的快递公司,有没有简单一点的物流查询方法呢?小编的回答当然是有的,下面随小编一起来试试这个新技巧。需要哪些工具?安装一个快递批量查询高手快递单号怎么快...
- 一键自动查询所有快递的物流信息 支持圆通、韵达等多家快递
-
对于各位商家来说拥有一个好的快递软件,能够有效的提高自己的工作效率,在管理快递单号的时候都需要对单号进行表格整理,那怎么样能够快速的查询所有单号信息,并自动生成表格呢?1、其实方法很简单,我们不需要一...
- 快递查询单号查询,怎么查物流到哪了
-
输入单号怎么查快递到哪里去了呢?今天小编给大家分享一个新的技巧,它支持多家快递,一次能查询多个单号物流,还可对查询到的物流进行分析、筛选以及导出,下面一起来试试。需要哪些工具?安装一个快递批量查询高手...
- 3分钟查询物流,教你一键批量查询全部物流信息
-
很多朋友在问,如何在短时间内把单号的物流信息查询出来,查询完成后筛选已签收件、筛选未签收件,今天小编就分享一款物流查询神器,感兴趣的朋友接着往下看。第一步,运行【快递批量查询高手】在主界面中点击【添...
- 快递单号查询,一次性查询全部物流信息
-
现在各种快递的查询方式,各有各的好,各有各的劣,总的来说,还是有比较方便的。今天小编就给大家分享一个新的技巧,支持多家快递,一次能查询多个单号的物流,还能对查询到的物流进行分析、筛选以及导出,下面一起...
- 快递查询工具,批量查询多个快递快递单号的物流状态、签收时间
-
最近有朋友在问,怎么快速查询单号的物流信息呢?除了官网,还有没有更简单的方法呢?小编的回答当然是有的,下面一起来看看。需要哪些工具?安装一个快递批量查询高手多个京东的快递单号怎么快速查询?进入快递批量...
- 快递查询软件,自动识别查询快递单号查询方法
-
当你拥有多个快递单号的时候,该如何快速查询物流信息?比如单号没有快递公司时,又该如何自动识别再去查询呢?不知道如何操作的宝贝们,下面随小编一起来试试。需要哪些工具?安装一个快递批量查询高手快递单号若干...
- 教你怎样查询快递查询单号并保存物流信息
-
商家发货,快递揽收后,一般会直接手动复制到官网上一个个查询物流,那么久而久之,就会觉得查询变得特别繁琐,今天小编给大家分享一个新的技巧,下面一起来试试。教程之前,我们来预览一下用快递批量查询高手...
- 简单几步骤查询所有快递物流信息
-
在高峰期订单量大的时候,可能需要一双手当十双手去查询快递物流,但是由于逐一去查询,效率极低,追踪困难。那么今天小编给大家分享一个新的技巧,一次能查询多个快递单号的物流,下面一起来学习一下,希望能给大家...
- 物流单号查询,如何查询快递信息,按最后更新时间搜索需要的单号
-
最近有很多朋友在问,如何通过快递单号查询物流信息,并按最后更新时间搜索出需要的单号呢?下面随小编一起来试试吧。需要哪些工具?安装一个快递批量查询高手快递单号若干怎么快速查询?运行【快递批量查询高手】...
- 连续保存新单号功能解析,导入单号查询并自动识别批量查快递信息
-
快递查询已经成为我们日常生活中不可或缺的一部分。然而,面对海量的快递单号,如何高效、准确地查询每一个快递的物流信息,成为了许多人头疼的问题。幸运的是,随着科技的进步,一款名为“快递批量查询高手”的软件...
- 快递查询教程,快递单号查询,筛选更新量为1的单号
-
最近有很多朋友在问,怎么快速查询快递单号的物流,并筛选出更新量为1的单号呢?今天小编给大家分享一个新方法,一起来试试吧。需要哪些工具?安装一个快递批量查询高手多个快递单号怎么快速查询?运行【快递批量查...
- 掌握批量查询快递动态的技巧,一键查找无信息记录的两种方法解析
-
在快节奏的商业环境中,高效的物流查询是确保业务顺畅运行的关键。作为快递查询达人,我深知时间的宝贵,因此,今天我将向大家介绍一款强大的工具——快递批量查询高手软件。这款软件能够帮助你批量查询快递动态,一...
- 从复杂到简单的单号查询,一键清除单号中的符号并批量查快递信息
-
在繁忙的商务与日常生活中,快递查询已成为不可或缺的一环。然而,面对海量的单号,逐一查询不仅耗时费力,还容易出错。现在,有了快递批量查询高手软件,一切变得简单明了。只需一键,即可搞定单号查询,一键处理单...
- 物流单号查询,在哪里查询快递
-
如果在快递单号多的情况,你还在一个个复制粘贴到官网上手动查询,是一件非常麻烦的事情。于是乎今天小编给大家分享一个新的技巧,下面一起来试试。需要哪些工具?安装一个快递批量查询高手快递单号怎么快速查询?...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- wireshark怎么抓包 (75)
- qt sleep (64)
- cs1.6指令代码大全 (55)
- factory-method (60)
- sqlite3_bind_blob (52)
- hibernate update (63)
- c++ base64 (70)
- nc 命令 (52)
- wm_close (51)
- epollin (51)
- sqlca.sqlcode (57)
- lua ipairs (60)
- tv_usec (64)
- 命令行进入文件夹 (53)
- postgresql array (57)
- statfs函数 (57)
- .project文件 (54)
- lua require (56)
- for_each (67)
- c#工厂模式 (57)
- wxsqlite3 (66)
- dmesg -c (58)
- fopen参数 (53)
- tar -zxvf -c (55)
- 速递查询 (52)