Python错误集锦:OpenCV WeChatQRCode提示utils::fs::exists(detector_prototxt_path) in function ‘cv::wechat_qrcode::WeChatQRCode::WeChatQRCode’

原文链接: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文件,保证了当前工作目录可以访问到模型文件,代码则不需要做改动。

扩展内容:

  1. 在Python中使用微信扫码功能(OpenCV WeChatQRCode)


如果本文还没有完全解决你的疑惑,你也可以在微信公众号“桔子code”后台给我留言,欢迎一起探讨交流。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注