python中使用opencv遇到r, g, b = cv.split(img)ValueError: not enough values to unpack (expected 3, got 0)

在跑别人的车牌识别的代码的时候,遇到了这个问题:

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

  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值