机器学习1:OpenCV4.5.5加载xml进行车辆识别

本文介绍了如何将基于Python的OpenCV车辆识别代码转换为适用于Visual Studio C++的版本。由于高版本OpenCV中的函数变化,作者通过查阅OpenCV4.5.5源码找到替代方法,成功实现了利用CascadeClassifier加载xml模型进行车辆检测。通过对比和修改,将原Python的cvLoad和cvHaarDetectObjects替换为CascadeClassifier的.load和.detectMultiScale(),最终实现了在C++环境下车辆识别的功能。
摘要由CSDN通过智能技术生成

        深度学习准确率高识别效果好,但是对软硬件环境要求高,使用及部署有一定难度,应用受限。相比之下,机器学习效果差一个量级,但是计算量小,计算迅速,部署相对容易,尤其是在一些计算能力有限的嵌入式应用场合,因此这里打算学习一下基于OpenCV实现的机器学习,套路上打算先找一些例程学习怎么使用,再学习怎么训练自己的算法。

        先前在github上下载到了几个车辆识别的机器学习例程,但是发现大多是使用python实现的,不便应用于嵌入式项目中,这里我们尝试转为Visual Studio C/C++编码状态。

图1 github上下载的基于OpenCV用python实现的车辆识别代码及效果

         下载的源码随例程附带了训练好的算法模型xml文件、测试视频和.cpp样例源码:

图2 例程xml文件及附属的.cpp状态源码 

     一、Python转C/C++尝试与遇到的问题

        我们在VS2015下新建功能,加入该cpp文件,发现报错较多无法编译执行:

 图3 例程cpp文件编译报错

 检查发现,是因为我安装的是OpenCV4.5.5,版本较高,而从例程源码看,原作者使用的OpenCV版本偏低,因此许多功能函数已经变更,无法再使用。这里面主要是CvHaarClassifierCascade加载xml文件做目标检测识别的相关函数找不到新的定义所在,在网上搜索“OpenCV4.5 CvHaarClassifierCascade”、“OpenCV4.5 cvLoad”、“OpenCV4.5 机器学习”均找不到关于在OpenCV4.5.5状态下怎么加载xml进行机器学习目标检测识别的例程。

 二、思路与解决

        突然想到,我的OpenCV是在官网上下载了源码,然后在本地自行编译形成的OpenCV库,源码中包含了使用了例程Sample,其中一定有关于机器学习ml模块的使用样例,可以参考OpenCV源码自带的样例找到OpenCV4.5.5下机器学习的应用方法。

        最后在.\opencv-4.5.5\samples\cpp下找到一个人脸识别的例程:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值