python - 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 中的颜色相同,但偏紫一点。
解决方案
这是 JPEG 压缩的自然结果。JPEG 使用浮点运算来计算整数像素值。这发生在 JPEG 压缩的几个阶段。因此,预期会有小的像素值变化。
当您对颜色进行全面更改时,它们通常是 YCbCr 颜色空间色域之外的结果输入颜色值。这样的值会被限制。
推荐阅读
- javascript - 创建模因并存储到本地
- oracle - 具有多个表和 where 条件的 Logstash jdbc 语句
- flutter - Flutter:如何使用钩子来改变 textformfield 中文本的可见性?
- amazon-web-services - 如何通过 StatusCheckFailed_Instance 指标使用 Cloudwatch 警报恢复 EC2(不是 StatusCehckFailed_System 指标!!!)
- windows - 如何在windows的环境变量中设置符号'&'
- datatables - 我可以在数据表中添加或删除thead吗?
- heroku - 尝试推送 GHOST 时 pre-receive hook 被拒绝
- php - 在 wordpress PHP 文件中找不到函数
- flutter - 用hintText颤动textInputField
- javascript - .addEventListener 不是函数 ERROR