原文链接:http://www.juzicode.com/python-error-utils-fs-exists-detector-prototxt-path
错误提示:
WeChatQRCode加载模型时提示错误utils::fs::exists(detector_prototxt_path)
#VX公众号: 桔子code / juzicode.com
import cv2
detect_obj = cv2.wechat_qrcode_WeChatQRCode('detect.prototxt','detect.caffemodel','sr.prototxt','sr.caffemodel')
cap = cv2.VideoCapture(0)
==========运行结果:
cv2.error: OpenCV(4.5.3) C:\Users\runneradmin\AppData\Local\Temp\pip-req-build-u4kjpz2z\opencv_contrib\modules\wechat_qrcode\src\wechat_qrcode.cpp:56: error: (-215:Assertion failed) utils::fs::exists(detector_prototxt_path) in function 'cv::wechat_qrcode::WeChatQRCode::WeChatQRCode'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "opencv-wechat-qrcode\wechat-capture.py", line 5, in
detect_obj = cv2.wechat_qrcode_WeChatQRCode('detect.prototxt','detect.caffemodel','sr.prototxt','sr.caffemodel')
SystemError: returned a result with an error set
错误原因:
1、 当前工作路径访问不到detect.prototxt 等模型文件所在路径
解决方法:
1、通过os.getcwd()查看当前工作目录,观察当前工作目录和模型文件所在的目录差异,比如桔子菌的模型文件所在的目录是:E:\juzicode\image\opencv-wechat-qrcode,通过os.getcwd()得到的当前工作目录为:
#VX公众号: 桔子code / juzicode.com
import cv2
import os
print(os.getcwd())
==========os.getcwd()得到的当前工作目录:
E:\juzicode\image
当前工作目录是 E:\juzicode\image ,而模型文件所在目录为: E:\juzicode\image\opencv-wechat-qrcode ,所以要改成:
path = 'opencv-wechat-qrcode\'
detect_obj = cv2.wechat_qrcode_WeChatQRCode(path+'detect.prototxt',path+'detect.caffemodel',path+'sr.prototxt',path+'sr.caffemodel')
2、如果模型文件和运行的py文件是同一个目录,则切换当前工作目录到py文件下再运行py文件,保证了当前工作目录可以访问到模型文件,代码则不需要做改动。
扩展内容:
如果本文还没有完全解决你的疑惑,你也可以在微信公众号“桔子code”后台给我留言,欢迎一起探讨交流。