cv2.imread中文路径
时间: 2023-07-30 22:04:25 浏览: 38
如果你的图片路径是中文路径,可以使用以下代码读取图片:
```python
import cv2
import numpy as np
img_path = r'你的图片路径'.encode('utf-8').decode('gbk') # 将中文路径转换为gbk编码
img = cv2.imdecode(np.fromfile(img_path, dtype=np.uint8), cv2.IMREAD_COLOR)
```
其中,`r'你的图片路径'.encode('utf-8').decode('gbk')` 将中文路径转换为 gbk 编码的路径,然后使用 `np.fromfile()` 函数读取图片数据,最后使用 `cv2.imdecode()` 函数解码图片。
相关问题
cv2.imread 中文路径
cv2.imread()函数在读取图片路径时只能接收ASCII码的路径参数,因此无法正常读取含有中文路径的图片,返回结果为None。为了解决这个问题,可以使用以下方法之一:
1. 将中文路径转换为Unicode编码:使用str类型的.decode('utf-8')方法将中文路径转换为Unicode编码。例如:
```python
img = cv2.imread(中文路径.decode('utf-8'))
```
2. 使用os模块的路径处理函数:使用os模块的路径处理函数,例如os.path.join()将路径分隔符替换为标准路径分隔符,并将中文路径转换为Unicode编码。例如:
```python
import os
img_path = os.path.join(中文路径)
img = cv2.imread(img_path)
```
3. 使用第三方库pathlib:使用pathlib库的Path类来处理路径,它可以自动处理不同操作系统下的路径分隔符,并且支持中文路径。例如:
```python
from pathlib import Path
img_path = Path(中文路径)
img = cv2.imread(str(img_path))
```
注意:在使用以上方法时,确保路径的正确性和可访问性,确保图片文件存在,并且对于中文路径需要进行正确的编码转换。
cv2.imread中文路径问题
cv2.imread函数在读取中文路径的图片时会返回None,这是因为cv2.imread函数默认使用的是ASCII编码,而中文路径使用的是Unicode编码。解决这个问题的方法有很多种,其中一种方法是使用cv2.imdecode函数来读取图片。具体步骤如下:
1.导入cv2和numpy库:
```python
import cv2
import numpy as np
```
2.定义一个cv_imread函数,用于读取中文路径的图片:
```python
def cv_imread(filePath):
cv_img = cv2.imdecode(np.fromfile(filePath, dtype=np.uint8), -1)
return cv_img
```
3.调用cv_imread函数读取图片,并显示图片:
```python
if __name__ == '__main__':
path = 'E:/images/百合/百合1.jpg'
img = cv_imread(path)
cv2.namedWindow('lena', cv2.WINDOW_AUTOSIZE)
cv2.imshow('lena', img)
k = cv2.waitKey(0)
```
4.如果需要保存图片,可以使用cv2.imencode函数将图片编码为jpg格式,并保存到指定路径:
```python
cv2.imencode('.jpg', img)[1].tofile('百合.jpg')
```