cv2.imread 无法读取中文名
时间: 2023-11-03 08:03:21 浏览: 94
cv2.imread函数无法读取中文路径的图片是因为opencv不接受non-ascii的路径。解决方法是先将图片以np.uint8格式使用np.fromfile()读取,然后再使用cv2.imdecode()解码。以下是解决方法的代码示例:
```python
import cv2 as cv
import numpy as np
path = "D:\\python_file\\图片.jpg" # 中文路径
data = np.fromfile(path, dtype=np.uint8)
img = cv.imdecode(data, cv.IMREAD_COLOR)
cv.imshow("image", img)
cv.waitKey(0)
cv.destroyAllWindows()
```
这样就可以成功读取中文路径的图片了。
相关问题
cv2 读取图片名字有中文如何处理
cv2在读取中文路径的图片时会出现乱码,解决方法可以使用Python的os模块将路径中的中文字符转换为unicode编码,再传入cv2.imread()函数中读取图片。具体代码如下:
``` python
import cv2
import os
# 将中文路径转换为unicode编码
img_path = u'中文路径/image.jpg'
img_path = img_path.encode('utf-8')
img_path = img_path.decode('unicode_escape')
# 使用cv2读取图片
img = cv2.imread(img_path)
```
这样就可以成功读取中文路径的图片了。
cv2.inpaint
cv2.inwrite函数是一个错误的函数名称,正确的函数名称应该是cv2.imwrite函数。cv2.imwrite函数用于将图像保存为文件。它的语法是cv2.imwrite(imagepath, frame),其中imagepath是保存图像的路径和文件名,frame是要保存的图像数据。该函数可以将图像以指定的文件格式保存到指定的路径。例如,如果要将图像保存为JPG格式,可以使用以下代码:
cv2.imwrite("path_to_save_image.jpg", img)
请注意,cv2.imwrite函数在保存图像时不支持使用中文路径和中文命名的文件。如果你使用中文路径或中文命名的文件,可能会导致函数报错。为了解决这个问题,可以使用cv2.imencode函数先将图像编码为字节流,然后再使用np.tofile函数将字节流写入文件。以下是一个示例代码:
import cv2
import numpy as np
img_path = r"G:\Python_work\图片\vikings.jpg"
img = cv2.imdecode(np.fromfile(img_path, dtype=np.uint8), cv2.IMREAD_UNCHANGED)
img_write = cv2.imencode(".jpg", img).tofile("path_to_save_image.jpg")
这段代码将先读取包含中文路径的图像文件,然后使用cv2.imdecode函数解码为图像数据。接下来,使用cv2.imencode函数将图像编码为JPG格式的字节流。最后,使用np.tofile函数将字节流写入指定的路径和文件名。通过这种方法,可以避免cv2.imwrite函数对中文路径和中文命名的文件的限制。
请注意,以上代码中的"path_to_save_image.jpg"需要替换为你希望保存图像的路径和文件名。另外,如果需要使用其他格式保存图像,可以将".jpg"替换为相应的格式后缀名。
阅读全文