出现这个错误大概有这么两种情况,要么是你路径真的没对,要么是路径有中文
这里主要针对的是后者的情况
我是分割线
其实不光是中文,非ASCII字符都会炸
咱们也不知道为啥这么一个如此常用的模块会出现这么低级的问题
解决方法有两种,直接看下面的代码就可以了
import cv2
import numpy as np
def cv_imread(filePath):
cv_img=cv2.imdecode(np.fromfile(filePath,dtype=np.uint8),-1)
return cv_img
用这个函数,去顶替掉原本的cv2.imread
在大部分情况下应该都是可用的
另外一种方式是用Path函数,网上查到有人表示这样做是可行的
from pathlib import Path
cv2.imread(Path(图片路径), cv2.IMREAD_UNCHANGED)
但是在我尝试下来,发现似乎只能在GBK编码下运行
因为我的野路子出来的代码风格,为了保证能够跨平台不炸,全部锁在utf8编码下面运行
所以这招不能用,大家或许可以试试
不解决,绕开它
这里我也检查了以前的代码,为什么之前没有碰到这个问题
之前使用的是相对路径,也就是说,中文路径实际上是没有给塞进字符串的
然后就避开了这个问题
只不过这次将资源文件从项目文件夹分离出来到了独立的目录中,相对路径不好使了,于是乎就炸了
参考资料
https://www.zhihu.com/question/67157462/answer/251754530