解决方法:opencv读取中文路径图像报错 | AttributeError: ‘NoneType‘ object has no attribute ‘astype‘

2022-05-09 09:19:35 浏览数 (1)

在使用开源项目 blind_watermark 给图像添加数字盲水印时,传入图像路径中文时,会出现以上报错。分析它的源码:

代码语言:javascript复制
self.img = cv2.imread(filename).astype(np.float32)

它用的 opencv 读取图像和转换类型。读取水印图像也是类似的方法。

解决方法:用 numpy 读取处理图片,再对 numpy 处理后的图片数据用 cv2.imdecode 方法进行转码,转化为图片对象。

代码语言:javascript复制
# self.img = cv2.imread(filename).astype(np.float32)
# 用numpy读取处理图片  再对numpy的读取的图片进行转码,转化为图片对象
self.img = cv2.imdecode(np.fromfile(filename, dtype=np.uint8), -1).astype(np.float32)
代码语言:javascript复制
# 读入图片格式的水印,并转为一维 bit 格式
# self.wm = cv2.imread(filename)[:, :, 0]
self.wm = cv2.imdecode(np.fromfile(filename, dtype=np.uint8), -1)[:, :, 0]

将原来读取图像的代码注释掉,用新的方法重写后保存,然后再读取图像加数字盲水印,不再有报错。

代码语言:javascript复制
print(":".join(["CSDN叶庭云", "https://yetingyun.blog.csdn.net/"]))

0 人点赞