解决cv2.imread()中文路径加载图片报错问题

错误: cv2.error: OpenCV(4.1.0) C:\projects\opencv-python\opencv\modules\highgui\src\window.cpp:352: error: (-215:Assertion failed) size.width>0 && size.height>0 in function ‘cv::imshow’

一、分析原因
  • python3字符串采用utf8编码,cv2.imread将utf8当作本地码(如GBK)
二、解决方案
#!/usr/bin/env python 
# -*- coding:utf-8 -*-

import cv2
import numpy as np

def cv_imread(filePath):
    cv_img = cv2.imdecode(np.fromfile(filePath, dtype=np.uint8), -1)
    return cv_img

srcImage = cv_imread("D:\下载\lala.jpg")

cv2.imshow("Src", srcImage)
cv2.waitKey(0)
注意:
  • 由于window 读取文件可以用\,但是在字符串中\是被当作转义字符来使用,所以’d:\a.txt’会被转义成’d:\a.txt’这是正确路径,所以不会报错。而‘C:\Users…\lala.jpg ’中经过转义之后可能就找不到路径的资源了,例如\t可能就转义成tab键了。
方式一:转义的方式

srcImage = cv2.imread("D:\\Software\\lala.jpg")

方式二:使用'r',显式声明字符串不用转义

srcImage = cv2.imread(r"D:\Software\lala.jpg")

方式三:使用Linux的路径 '/'

srcImage = cv2.imread("D:/Software/lala.jpg")

参考

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值