解决:cv2.error: OpenCV(4.x) … (-215:Assertion failed) !empty() in function 'cv::CascadeClassifier…
文章目录
背景
在使用之前的代码时,报错:
cv2.error: OpenCV(4.3.0) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-b460jg4o\opencv\modules\objdetect\src\cascadedetect.cpp:1689:
error: (-215:Assertion failed) !empty() in function ‘cv::CascadeClassifier::detectMultiScale’
报错问题
cv2.error: OpenCV(4.3.0) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-b460jg4o\opencv\modules\objdetect\src\cascadedetect.cpp:1689:
error: (-215:Assertion failed) !empty() in function 'cv::CascadeClassifier::detectMultiScale'
报错翻译
主要报错信息内容翻译如下所示:
cv2.error: OpenCV(4.3.0) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-b460jg4o\opencv\modules\objdetect\src\cascadedetect.cpp:1689:
error: (-215:Assertion failed) !empty() in function 'cv::CascadeClassifier::detectMultiScale'
翻译:
cv2.error:OpenCV(4.3.0) C:UsersappveyorAppDataLocalTemp1pip-req-build-b460jg4oopencvmodulesobjdetectsrccascadedetect.cpp:1689:
错误:(-215:断言失败)!empty()在函数“cv::CascadeClassifier::detectMultiScale”中
报错位置代码
cv2.imwrite(save_dir + '\' + img_name, img)
报错原因
经过查阅资料,发现是因为引用图片路径中出现中文导致的,OpenCV的imwrite()
方法对中文的支持不友好。
小伙伴们按下面的解决方法即可解决!!!
解决方法
看到网上有人说,是由于路径中出现了数字而导致路径读取错误。改正方法:将路径中的单斜杠,变成双斜杠。
例如:
cv2.imwrite(save_dir + '\\' + img_name, img)
但是后面还是报同样的错误。
要解决这个错误,需要将图片路径修改为全英文路径,就没问题了。
正确的代码是:
for i in ori_imgs_single:
img_name = i.split('\\')[-1]
img = cv2.imread(i)
cv2.imwrite(save_dir + '\\' + img_name, img)
print('save OK!')
运行结果截图如下: