Python opencv在写入jpeg时降低红色亮度

Python opencv在写入jpeg时降低红色亮度,python,opencv,Python,Opencv,我遇到了一个关于python中opencv的有趣问题。我注意到,当我使用opencv加载图像并立即保存时,红色通道中的亮度显著降低,无需进行任何进一步处理 我知道jpeg是一种有损格式,如果我读/写了很多次,我应该期望质量会下降。但是,如果我在预览(mac)中打开图像并从那里导出,我看不到任何差异,即使我导出到可能的最低质量。如果我使用openCV做完全相同的事情,红色通道中的差异是巨大的(由于压缩,比您预期的要大得多) 我尝试更改所有标志(imwrite\u jpeg\u质量、imwrite

我遇到了一个关于python中opencv的有趣问题。我注意到,当我使用opencv加载图像并立即保存时,红色通道中的亮度显著降低,无需进行任何进一步处理

  • 我知道jpeg是一种有损格式,如果我读/写了很多次,我应该期望质量会下降。但是,如果我在预览(mac)中打开图像并从那里导出,我看不到任何差异,即使我导出到可能的最低质量。如果我使用openCV做完全相同的事情,红色通道中的差异是巨大的(由于压缩,比您预期的要大得多)
  • 我尝试更改所有标志(imwrite\u jpeg\u质量、imwrite\u jpeg\u luma\u质量、imread\u anycolor、imread\u unchanged等)。我找不到任何能阻止这种效果的组合
  • 为了测试它是否只是红色通道,我试着用一张绿色苹果的图片(没有区别),和一张橙色的图片(眼睛可以看到红色减少)。为了确保它与图像文件本身无关(损坏了?),我还拍摄了一张橙色的屏幕截图,将其导出为一个新的jpeg文件,并尝试使用python进行读/写,然后再次更改了颜色
  • 我附上了橙色之前/之后的图像。如果您在各自的选项卡中打开两个图像并来回切换,差异就会变得非常明显
  • 如果我使用opencv读取已处理的图像(红色减少),并再次导出,则红色不会进一步减少。它仅在opencv第一次处理图像时发生
这是我的代码:

import cv2
loc = '/imagetest/'
img = cv2.imread(loc + 'orange.jpg', cv2.IMREAD_UNCHANGED)
cv2.imwrite(loc + 'orange_processed.jpg',img,[cv2.IMWRITE_JPEG_QUALITY, 100])

检查立柱。