前言
前段时间做某个算法对图像像素进行操作,设置了像素值为0和255,但是保存算法执行之后的图片(jpeg格式)。再读取保存的图片,发现某个位置的像素值本来是0或者255的,但是变成了3或者250等值,产生了细微的偏差。看代码也没找出什么问题。后面定位问题应该出在保存图片格式上。
一、OpenCV目前支持的图像格式
OpenCV目前支持的图像格式包括:
1、Windows位图文件 - BMP, DIB;
2、JPEG文件 - JPEG, JPG, JPE;
3、便携式网络图片 - PNG;
4、便携式图像格式 - PBM,PGM,PPM;
5、Sun rasters - SR,RAS;
6、TIFF文件 - TIFF,TIF;
7、OpenEXR HDR 图片 - EXR;
8、JPEG 2000 图片- jp2。
二、常见格式分析
1、Windows位图文件 - BMP, DIB
BMP(全称Bitmap)是Windows操作系统中的标准图像文件格式,可以分成两类:设备相关位图(DDB)和设备无关位图(DIB),使用非常广。它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文件所占用的空间很大。BMP文件的图像深度可选lbit、4bit、8bit及24bit。BMP文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺