百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分析 > 正文

详解 OpenCV4.5.0 官方示例Samples

liebian365 2024-11-02 13:36 24 浏览 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的参考方法等。


如果本文对你有所帮助,还请帮忙点赞转发关注加收藏,谢谢。

相关推荐

4万多吨豪华游轮遇险 竟是因为这个原因……

(观察者网讯)4.7万吨豪华游轮搁浅,竟是因为油量太低?据观察者网此前报道,挪威游轮“维京天空”号上周六(23日)在挪威近海发生引擎故障搁浅。船上载有1300多人,其中28人受伤住院。经过数天的调...

“菜鸟黑客”必用兵器之“渗透测试篇二”

"菜鸟黑客"必用兵器之"渗透测试篇二"上篇文章主要针对伙伴们对"渗透测试"应该如何学习?"渗透测试"的基本流程?本篇文章继续上次的分享,接着介绍一下黑客们常用的渗透测试工具有哪些?以及用实验环境让大家...

科幻春晚丨《震动羽翼说“Hello”》两万年星间飞行,探测器对地球的最终告白

作者|藤井太洋译者|祝力新【编者按】2021年科幻春晚的最后一篇小说,来自大家喜爱的日本科幻作家藤井太洋。小说将视角放在一颗太空探测器上,延续了他一贯的浪漫风格。...

麦子陪你做作业(二):KEGG通路数据库的正确打开姿势

作者:麦子KEGG是通路数据库中最庞大的,涵盖基因组网络信息,主要注释基因的功能和调控关系。当我们选到了合适的候选分子,单变量研究也已做完,接着研究机制的时便可使用到它。你需要了解你的分子目前已有哪些...

知存科技王绍迪:突破存储墙瓶颈,详解存算一体架构优势

智东西(公众号:zhidxcom)编辑|韦世玮智东西6月5日消息,近日,在落幕不久的GTIC2021嵌入式AI创新峰会上,知存科技CEO王绍迪博士以《存算一体AI芯片:AIoT设备的算力新选择》...

每日新闻播报(September 14)_每日新闻播报英文

AnOscarstatuestandscoveredwithplasticduringpreparationsleadinguptothe87thAcademyAward...

香港新巴城巴开放实时到站数据 供科技界研发使用

中新网3月22日电据香港《明报》报道,香港特区政府致力推动智慧城市,鼓励公私营机构开放数据,以便科技界研发使用。香港运输署21日与新巴及城巴(两巴)公司签署谅解备忘录,两巴将于2019年第3季度,开...

5款不容错过的APP: Red Bull Alert,Flipagram,WifiMapper

本周有不少非常出色的app推出,鸵鸟电台做了一个小合集。亮相本周榜单的有WifiMapper's安卓版的app,其中包含了RedBull的一款新型闹钟,还有一款可爱的怪物主题益智游戏。一起来看看我...

Qt动画效果展示_qt显示图片

今天在这篇博文中,主要实践Qt动画,做一个实例来讲解Qt动画使用,其界面如下图所示(由于没有录制为gif动画图片,所以请各位下载查看效果):该程序使用应用程序单窗口,主窗口继承于QMainWindow...

如何从0到1设计实现一门自己的脚本语言

作者:dong...

三年级语文上册 仿写句子 需要的直接下载打印吧

描写秋天的好句好段1.秋天来了,山野变成了美丽的图画。苹果露出红红的脸庞,梨树挂起金黄的灯笼,高粱举起了燃烧的火把。大雁在天空一会儿写“人”字,一会儿写“一”字。2.花园里,菊花争奇斗艳,红的似火,粉...

C++|那些一看就很简洁、优雅、经典的小代码段

目录0等概率随机洗牌:1大小写转换2字符串复制...

二年级上册语文必考句子仿写,家长打印,孩子照着练

二年级上册语文必考句子仿写,家长打印,孩子照着练。具体如下:...

一年级语文上 句子专项练习(可打印)

...

亲自上阵!C++ 大佬深度“剧透”:C++26 将如何在代码生成上对抗 Rust?

...

取消回复欢迎 发表评论: