在跑别人的车牌识别的代码的时候,遇到了这个问题:
r, g, b = cv.split(img) ValueError: not enough values to unpack (expected 3, got 0)
一直没有找到解决的办法。
下面是废话:最后能找到解决方法的原因:一开始车牌生成之后保存的图片名是乱码,经过搜索解决办法,看到了一篇文章(链接找不到了,点醒我最重要的一篇文章,不知道为什么历史记录中也翻不出来了,就离谱)说要将imwrite改为imencode,因为车牌图片保存的名字中有中文,需要编码(应该是这个意思),然后我按照博主的方法修改之后成功了,再运行代码就遇到了标题的问题了。
试过了很多方法都不行,并且一度遇到瓶颈,最后突然灵光一闪,会不会也是因为文件名中带有中文的原因,跟imencode和imdecode有没有什么联系呢?是不是该搜索一下关于opencv的内容,于是,找到了解决办法。
解决方法如下:
将imread改为imdecode
img = cv.imread(PICS_PATH + "\\" + self.pics[item])
img = cv.imdecode(np.fromfile(pic_path, dtype=np.uint8), -1)
修改一下路径就好了。最后代码运行成功。
原因如下:cv.imread函数能够成功读取非中文路径的图片,所以就想到是不是中文路径的问题,opencv中opencv不接受non-ascii的路径,解决方法就是先用先用np.fromfile()读取为np.uint8格式,再使用cv2.imdecode()解码
参考:https://blog.csdn.net/l641208111/article/details/105798342