赞
踩
深度学习准确率高识别效果好,但是对软硬件环境要求高,使用及部署有一定难度,应用受限。相比之下,机器学习效果差一个量级,但是计算量小,计算迅速,部署相对容易,尤其是在一些计算能力有限的嵌入式应用场合,因此这里打算学习一下基于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下找到一个人脸识别的例程:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。