机器视觉基础——图像保存
扫描二维码
随时随地手机看文章
图像是怎样通过代码,保存到我们的计算机的。在之前图像的载入中,我们只是通过一句简单的代码 "cv.imread" 便实现了,表面上看上去非常简单,只需一步便能实现,但当我们更深层次地去挖掘时,实际上是经历了四个过程。
第一个是文件的读取,第二个是文件封装格式的解析,第三个是文件数据的解码,第四个是数据的加载,总共有这样四个过程。而直观上看只有第一个和第四个过程,没有中间两个过程,这是因为中间两个过程在程序内部就已经帮我们完成了。
在这里涉及到两个基础概念,一个是封装格式,另一个是数据解码。我们先来看看什么是封装格式。我们日常生活中经常接触到的 jpg、png 等文件格式就是这里所说的图像的封装格式。而封装格式一般又把图像文件分成两部分,第一部分是文件头,第二部分是文件数据,不同的封装格式的文件头和文件数据是完全不同的。
而且这里的文件数据也不是图像的原始数据,而是图像进行压缩编码之后的数据。文件头多数描述的是数据部分的解码信息以及附加信息,解码器可以根据这些附加信息将文件数据恢复到图像的原始数据,所以这个过程非常的重要。
到这里,我们已经了解了文件的封装格式,接下来我们就可以根据自己需要的图片格式完成图片的保存功能了。
想要完成一张图像的保存,第一步便是要载入一张图像,这一步我们在之前的文章当中已经实现过了,非常简单。在这里我们使用Python 和C两种语言来实现,Python 使用的是Pycharm编程软件,C使用的是VS编程软件。下面我们就来看看Python 语言和 C语言分别是怎样实现的吧!
这两种语言的代码是不是很相似呀!我们只要了解其中一种代码,另一种也就大同小异了。
接下来,我们就一起来看看图像究竟是怎样保存的吧。图像的保存也非常简单,一句代码便可实现。先来看看效果如何,同样使用 Python 和 C两种语言来实现。
对于 imwrite 命令,有两个参数,第一个是图片的保存路径、名称以及格式类型,第二个参数就是图像数据了,这里的数据指的是经过解码之后的数据。通过这个实例,我们不难看出,保存的类型不同,在默认情况下所占用的空间大小也相差较大,这也同时体现了我们上面所说的不同封装格式的文件头和文件数据完全不同。
对于C 语言,使用窗体函数,实现简单的交互界面,这样在读取图像和保存图像的时候非常方便。