OpenCV中gpu下使用cascade classifier遇到问题的解决方案
来源:互联网 发布:淘宝宝贝图片尺寸教程 编辑:程序博客网 时间:2024/04/30 04:35
在使用opencv gpu模块下的CascadeClassifier_GPU时,遇到了几个当时很难理解,网上也找不到答案的问题。最近空闲下来,翻了opencv的源码,找到了问题所在。写出来希望能让遇到同样问题的人少走弯路~
先交代下环境:VS2013+opencv2.4.11
问题1:用haar training训练出分类器,但是gpu调用出现下面的错误:
OpenCV Error: Gpu API call (NCV Assertion Failed: retcode=26, file=opencv-2.4.11/modules/gpu/src/nvidia/NCVHaarObjectDetection.cu, line=1589
解决:这是因为在训练的时候,haar 特征选取了45度特征导致的。
过程:程序运行中断之后,一步一步的查为什么中断
可以看到,是由于haar.bNeedsTiltedII == false引起了中断,然后查找在哪里给haar.bNeedsTiltedII赋值了。分析了xml文件在cpu和gpu中的载入代码,找到了NCVStatus loadFromXML(const std::string &filename,HaarClassifierCascadeDescriptor &haar, std::vector<HaarStage64> &haarStages, std::vector<HaarClassifierNode128> &haarClassifierNodes,std::vector<HaarFeature64> &haarFeatures)函数,里面有一句对haar.bNeedsTiltedII的更新:
feature是这样子的: CvHaarFeature* feature = &tree->haar_feature[n];所以就可以找到CvHaarFeature结构里面tilted的定义。然后,这个变量的定义居然没有注释,最后在另外一个博客中找到了定义,参数titled,0表示该特征是标准的haar-like特征,1表示旋转45°后的特征。
博客地址:http://www.cnblogs.com/pakfahome/p/3611303.html
然后我猛然发现,我自己训练的时候,指定的-mode 是ALL......
问题2:直接把samples/gpu路径下面的cascadeclassifier.cpp文件复制出来,编译运行,使用data下面的haarcascade_frontalface_alt.xml,结果出现下面的错误:
OpenCV Error: Unspecified error (The node does not represent a user object (unknown type?)) in cvRead, file ******(此处是路径)persistence.cpp, line 5008
解决:如果想用opencv自带的那些xml,去下载2.4.13,里面的data文件夹,有一个叫做gpu的文件夹,专门有给gpu 用的xml文件,2.4.11里面没有。
过程:当时实在是不知道为什么,同样的数据集,用cpu载入没有问题,怎么到了gpu下面就出错了呢?看了opencv的帮助
上面说gpu只支持haar training训练出来的分类器,由于当时我需要使用自己训练的xml,所以这个错误也没在意,后续解决也是巧合,偶然看2.4.13的data文件夹,发现里面有一个叫做gpu的文件夹,专门有给gpu 用的数据。
- OpenCV中gpu下使用cascade classifier遇到问题的解决方案
- 多GPU环境下使用caffe遇到的问题
- opencv中cv::GPU::ORB_GPU使用的问题
- opencv学习-Cascade Classifier-人脸人眼识别
- opencv中gpu模块的使用
- OpenCV中GPU模块的使用
- OpenCV中GPU版MOG2的使用
- OPENCV中CASCADE的生成
- opencv: 安装 & 可能遇到的问题 & 解决方案
- OpenCV中遇到的问题
- Opencv中遇到的问题
- Windows下开发中遇到问题的解决方案汇总
- Windows下Tensorflow-GPU的安装,Tensorboard的使用,以及过程中遇到的各种坑
- 使用PCL::GPU::遇到问题
- opencv安装和使用过程中遇到的问题
- Opencv中使用ocl模块遇到的问题
- OpenCV配置使用过程中遇到的问题
- OpenCV中GPU模块使用
- Android项目重构之路:界面篇
- PL/SQL Developer技巧
- CUDA-CODE3-查询GPU设备属性
- Machine Learning In Action 系列----手写数字识别(一)
- 取得手机屏幕大小 DisplayMetrics
- OpenCV中gpu下使用cascade classifier遇到问题的解决方案
- linux在部署tomcat ,windows下部署tomcat
- Spring-web-mvc环境搭建
- MySQL日期时间函数大全
- STM32 HAL库 IO输入
- AE效果器(Effect)开发
- 继承 多态 类别
- mysql查看数据库大小
- Android项目重构之路:实现篇