windeployqt打包qt工程(qt+easypr+opencv车牌识别界面)运行exe文件直接闪退,没有报错。

windeployqt打包qt工程(qt+easypr+opencv车牌识别界面)运行exe文件直接闪退,没有报错。

1、问题
使用qt结合开源项目easypr和opencv写一个识别车牌的系统。代码写完后在自己的电脑能运行程序识别车牌,后续想要打包成一个工程让别人的电脑脱离环境也能运行,于是使用windeployqt命令打包,但打包后先是提示缺少各种opencv的dll文件,随后在打包文件里加上缺少的dll文件,但放到另一台电脑运行exe文件后又出问题,选择图片进行识别时不报错直接闪退。而在自己的电脑能够正确识别出车牌号
windeployqt打包qt工程(qt+easypr+opencv车牌识别界面)运行exe文件直接闪退,没有报错。_第1张图片

2、原因
猜想一定是打包后的问题还是缺少一些东西,查看源码发现识别程序里面以绝对路径调用了easypr的一些文件(如下图:include/easypr目录下的config.h文件使用了svm_hist.xml、svm_lbp.xml、svm_hist.xml、ann.xml等文件),于是现在自己的电脑尝试将调用的文件删去一个,果然,这下打包后的文件在自己的电脑也出现同样的情况。所以本菜鸡就是因为使用了绝对路径调用文件,而windeployqt打包工程时不能把这些以绝对路径调用的打包过来
windeployqt打包qt工程(qt+easypr+opencv车牌识别界面)运行exe文件直接闪退,没有报错。_第2张图片
3、解决
将config.h文件中绝对路径改为相对路径(如上图),同时将svm_hist.xml、svm_lbp.xml、svm_hist.xml、ann.xml等文件放到exe文件同一目录下,重新编译运行一遍程序后打包,拷到另一台电脑后程序运行成功,顺利识别车牌!

你可能感兴趣的:(opencv,qt,人工智能)