给网友朋友们带来一篇相关的编程文章,网友吕琇晶根据主题投稿了本篇教程内容,涉及到cv2.imread、和、cv2.imdecode、cv2.imread、和、cv2.imdecode用法、cv2.imread 和 cv2.imdecode相关内容,已被394网友关注,内容中涉及的知识点可以在下方直接下载获取。
cv2.imread 和 cv2.imdecode
对于路径中含有中文的图像,直接用cv2.imread读取会报错,上次看到有大佬使用cv2.imdecode就可以正常读取,有点好奇,所以今天来记录下二者用法和区别。
1.读取图像的两种方式对比
cv2.imread正常读取影像
import cv2 path = '/data/北京/beijing.png' img = cv2.imread(path)
运行上述代码,会报错!
cv2.imdecode从内存中读取影像
import cv2 path = '/data/北京/beijing.png' arr = np.fromfile(path, dtype=np.uint8) img = cv2.imdecode(arr, flags=cv2.IMREAD_COLOR)
运行上述代码,成功!
并且imdecode得到的影像波段顺序是RGB,不是BGR,这是与opencv区别的地方。
函数说明:
np.decode 从内存的缓冲区读取图像
np.fromfile 将文本或二进制文件中数据构造成数组
2.保存图像的两种方式对比
cv2.imwrite 正常读取影像
import cv2 out_path = '/data/北京/beijing.png' cv2.imwrite(out_path,img)
运行上述代码,会报错!
cv2.imdecode从内存中读取影像
import cv2 out_path = '/data/北京/beijing.png' arr = cv2.imencode('png',img) out[1].tofile(out_path)
运行上述代码,成功!
函数说明:
cv2.encode 将图像编码到内存缓冲区中
np.tofile 将数组中的数据以二进制格式写进文件
到此这篇关于cv2.imread 和 cv2.imdecode 用法的文章就介绍到这了,更多相关cv2.imread 和 cv2.imdecode内容请搜索码农之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持码农之家!