首页 > 解决方案 > JPEG 压缩期间颜色的微小变化

问题描述

看起来 Ubuntu 下的默认库在压缩过程中会稍微改变颜色。我试图设置质量和采样,但我没有看到任何改进,有人挑战过类似的问题吗?

二次抽样 = 0 ,质量 = 100

#CORRECT COLORS FROM NPARRAY
cv2.imshow("Object cam:{}".format(self.camera_id), self.out)

print(self.out.item(1,1,0)) # B 
print(self.out.item(1,1,1)) # G
print(self.out.item(1,1,2)) # R

self.out=cv2.cvtColor(self.out,  cv2.COLOR_BGR2RGB)

#from PIL import Image
im = Image.fromarray(self.out)
r, g, b = im.getpixel((1, 1))
## just printing pixel and they are matching  
print(r, g, b) 
## WRONG COLORS
im.save(self.out_ramdisk_img,format='JPEG', subsampling=0, quality=100)

在此处输入图像描述

JPEG 图像的颜色应该与 imshow 中的颜色相同,但偏紫一点。

标签: pythonopencvcolorspython-imaging-libraryjpeg

解决方案


这是 JPEG 压缩的自然结果。JPEG 使用浮点运算来计算整数像素值。这发生在 JPEG 压缩的几个阶段。因此,预期会有小的像素值变化。

当您对颜色进行全面更改时,它们通常是 YCbCr 颜色空间色域之外的结果输入颜色值。这样的值会被限制。


推荐阅读