opencv 读取中文路径

问题: 使用cv2.imread读取含有中文路径的图片时,返回None。这个很坑,不会报错,但是你用img.shape等函数,又说这个对象没有该方法。原来在img是None导致。

原因: opencv不接受non-ascii的路径。

解决方法: 先用np.fromfile()读取为np.uint8格式,再使用cv2.imdecode()解码。

#读取灰度图,单通道的

im = cv2.imdecode(np.fromfile(filename, dtype=np.uint8), cv2.IMREAD_GRAYSCALE)

#读取彩图

# -*- coding: utf-8 -*-
import numpy as np
import urllib
import cv2
 
url = 'http://www.pyimagesearch.com/wp-content/uploads/2015/01/google_logo.png'
resp = urllib.urlopen(url)
image = np.asarray(bytearray(resp.read()), dtype="uint8")

 

image = cv2.imdecode(image, cv2.IMREAD_COLOR)
--------------------- 

cv2.imdecode()函数从指定的内存缓存中读取数据,并把数据转换(解码)成图像格式;

                         主要用于从网络传输数据中恢复出图像。

  import cv2

im = cv2.imdecode(np.fromfile(r'C:\Users\83815\Desktop\1\1.jpg', dtype=np.uint8), cv2.IMREAD_GRAYSCALE)
cv2.imwrite(r'C:\Users\83815\Desktop\1\2.jpg',im)
上面执行成功,说明cv2.imread()和cv2.imdecode()函数读取出来是一样的。

参考:https://www.e-learn.cn/content/python/572978
      :https://blog.csdn.net/dcrmg/article/details/79155233 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值