每日10行代码41:jpg是有损压缩,要注意图片颜色的失真

    科技2022-07-15  174

    今天在尝试open-cv的使用过程中,我用画出创建了一张5*5象素大小的红色纯色图片,分别保存成jpg和png,结果发现两张图片的颜色还不一样。

    import cv2 as cv # 读图片 img = cv.imread('red.png') # 图片信息 print('图片尺寸:', img.shape) print('图片数据为:\n',img)

    输出结果:

    图片尺寸: (5, 5, 3) 图片数据为: [[[ 0 0 255] [ 0 0 255] ……

    当我换成jpg时,读取结果为:

    图片尺寸: (5, 5, 3) 图片数据为: [[[ 0 0 254] [ 0 0 254] ……

    这样子就产生了一问题,假如是以图找图的话,如果用的是jpg,可能会发生找不到的情况,因为jpg会改变原始图片的颜色,百度搜索jpg的压缩原理,也可以知道这一点。所以以后使用的话尽量用png格式来处理电脑上的图片。

    最后,我又试了下: 用画图做了一张这样的图片: 5*5象素,每一行一种不同的颜色,外面的边框是我截图产生的,不是原本的图片,原始的图片太小,上传上来根本看不到: 保存成jpg后变成这样了: 这区别简直太大了,中间的粉红色完全变没了,所以如果在程序中遇到jpg的颜色不对的话,也不用太大惊小怪,可能jpg把原有的颜色给大变样了。

    另外,今天还发现一个东西: cv.imread读取的图片数据,颜色值不是常用的rgb,而是bgr, 这个需要注意。

    Processed: 0.013, SQL: 8