使用Opencv时调用svm->load和VideoCapture报错的问题分析

问题 1:调用svm->load("SVM_HOG.xml"));时出现“Parsing error (Missing or invalid SVM type) in cv::ml::SVMImpl::read_params ... ...”的报错。

原因分析:可能使用了opencv3.2的调用函数调用opencv2.x所生成的xml分类器导致的,其中opencv2.x所生成的xml有 tag,而opencv3.2中的xml没有这个tag。

解决方法:使用Ptr svm = Algorithm::load("my_svm_model.xml");加载分类器即可。


问题 2:

char* VideoFile = "E://PictureVideoDatabase//ObjectTrackingVideo//Test//th//st1.mp4";
Mat frame;
int flag;
MRPARAM_IN int bUseThreadPoll = 1;
VideoCapture capture(VideoFile); // 打开视频文件
Sleep(10);
if (capture.isOpened() == false) // 视频不存在,就返回
return 0;
capture >> frame;

如以上代码所示,编译无错误,运行无报错,但使用capture时总是得不到图像,检查视频文件路径正确无误,视频文件正常,相关头文件均已包含。

原因分析:因为VideoCapture的使用需要调用Ffmpeg库的支持,缺少opencv_ffmpeg320.dll库文件的支持因此总是捕获不了视频图像。

解决方法:将opencv_ffmpeg320.dll库文件放进程序运行文件中即可。

你可能感兴趣的:(视频处理,机器视觉)