解决OpenCV出错:can't open/read file: check file path/integrity

出现这个错误大概有这么两种情况,要么是你路径真的没对,要么是路径有中文

这里主要针对的是后者的情况

我是分割线

其实不光是中文,非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

https://blog.csdn.net/liuqinshouss/article/details/78696032

https://www.bing.com/search?q=opencv%20can%27t%20open%2Fread%20file%3A%20check%20file%20path%2Fintegrity

点赞

赞助商广告

如果您的网络和设备条件允许,这里可能会显示来自Google的广告

  1. GoodBoyboy说道:
    Google Chrome Windows 10/11
    非ASCII字符路径就炸是真的烦,都4202年了不知道为什么还有这种毛病
    1. 晓空说道:
      Google Chrome Windows 10/11
      鬼知道是什么屎山问题,反正不影响用就是了,就是第一次碰到真的浪费时间,得网上找好久解决办法

发表回复

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