含日文文件名的TIFF文件无法被OpenCV读取问题求助
OpenCV读取含日文路径TIFF文件报错的解决方法
问题情况
- 用OpenCV读取带日文的TIFF文件(比如
FAX注文0004.tif)时,会抛出错误:TypeError: Image data of dtype object cannot be converted to float - 把文件名改成不含日文的
FAX0004.tif,就能正常读取 - 原测试代码:
import matplotlib.pyplot as plt import cv2 image_path = r"FAX注文0004.tif" image = cv2.imread(image_path) plt.imshow(image) plt.axis('off') plt.show()
问题根源
OpenCV的cv2.imread()函数对包含非ASCII字符(比如日文)的文件路径支持不佳,无法正确解析路径,导致返回None。而plt.imshow()拿到None(数据类型为object)时,就会触发这个类型错误。
解决办法
方法1:用OpenCV解码API读取(推荐)
改用cv2.imdecode()配合numpy.fromfile()读取,能正确处理带非ASCII字符的路径:
import matplotlib.pyplot as plt import cv2 import numpy as np image_path = r"FAX注文0004.tif" # 读取文件字节流并解码为图像 image = cv2.imdecode(np.fromfile(image_path, dtype=np.uint8), cv2.IMREAD_COLOR) plt.imshow(image) plt.axis('off') plt.show()
方法2:修改文件名(应急用)
如果场景允许,直接把含日文的文件名改成纯英文/数字命名(比如FAX0004.tif),原代码就能正常运行。
内容的提问来源于stack exchange,提问作者kundan kaushik
相关产品推荐
相关产品推荐

