Python 原始CR2图像旋转并保存未压缩以访问像素RGB

Python 原始CR2图像旋转并保存未压缩以访问像素RGB,python,image,image-processing,pixel,Python,Image,Image Processing,Pixel,这是一个有缺陷的问题。我投票决定关闭或删除它。出于我的目的,我应该保持原始(或最小插值)格式。 我需要首先将CR2图像旋转几度,然后从特定位置提取像素RGB。这是为了科学,不是为了美学,所以我非常关心捕获值是什么。这些照片是用Cannon EOS 5D拍摄的(大约2012年)。我知道如何使用图像旋转和处理图像(但不使用原始文件)。我想我可以自己在内存中变换像素,但我希望不必这样做 我的计划是首先使用一些原始图像处理模块(如)读取RGB像素并将其保存为某种未压缩格式(.tiff?),使其尽可能接近

这是一个有缺陷的问题。我投票决定关闭或删除它。出于我的目的,我应该保持原始(或最小插值)格式。

我需要首先将CR2图像旋转几度,然后从特定位置提取像素RGB。这是为了科学,不是为了美学,所以我非常关心捕获值是什么。这些照片是用Cannon EOS 5D拍摄的(大约2012年)。我知道如何使用图像旋转和处理图像(但不使用原始文件)。我想我可以自己在内存中变换像素,但我希望不必这样做

我的计划是首先使用一些原始图像处理模块(如)读取RGB像素并将其保存为某种未压缩格式(.tiff?),使其尽可能接近捕获的图像,然后使用旋转图像并重新保存

然而,每当我用
rawpy
读取并保存CR2图像时,它们甚至与Photoshop渲染CR2图像的方式不匹配。也不匹配压缩的JPG版本在同一时间采取。例如,太阳的日冕在这三个方面都是不同的

以下是我正在做的事情:

import sys
import argparse
import rawpy
from PIL import Image as Img

def main():
    parser = argparse.ArgumentParser(description='', formatter_class=argparse.RawTextHelpFormatter)
    parser.add_help = True
    parser.add_argument('filepath', help='a raw image file')
    args = parser.parse_args()

    raw = rawpy.imread(args.filepath)
    rgb = raw.postprocess(use_auto_wb=True)
    #rgb = raw.postprocess(use_camera_wb=True)
    Img.fromarray(rgb).save(args.filepath + '.tiff')
    raw.close()

if __name__ == '__main__':
    main()
这是一个。
这是一张几乎同时被同一台相机拍摄的照片。
这是。
这是

我认为这一切都与“曝光补偿”和“白平衡”有关,但老实说,我对原始图像并不在行。我不知道我是在做傻事,还是应该用另一条管道来完成我想做的事情。我想要最简单的Python管道来打开CR2并将RGB值转换成未压缩的格式,这样我就可以旋转和提取。但我现在担心CR2文件中的值是什么,希望以最准确的方式提取它们。我猜正如下面的评论所暗示的,没有正确的方法,因为将原始图像呈现为正片格式涉及到所有过程

Python 3.5.2
枕头4.3.0
拉比0.13.1
numpy 1.14.2

我知道有新版本的这些,但是我正处于一个几年的项目当中,所以宁愿不升级,以免引入细微的变化。

< P>它不适合评论,但是…


当你制作一张“原始”照片时,你基本上记录了所有未经处理的信息,并从图像传感器中提取出来,以期获得尽可能多的信息,使你以后可以使用Photoshop或Lightroom等复杂软件在全尺寸、高性能计算机上对图像进行解释。当您录制JPEG时,您放弃了全部信息,并允许相机内芯片对白平衡、颜色空间、曝光、剪裁和高光补偿以及从12/14位转换为8位做出任意决定。实际上没有任何正确或准确的版本,也没有正确或准确的RGB信息,这都是主观的。

是的,我开始理解这一点,这肯定是我对原始文件缺乏了解。然而,当我通过
rawpy
打开并重新保存时,生成的文件与Photoshop对它的渲染非常不同。我知道两者都不正确,但由于差别很大,我不知道该用哪一种。在
rawpy
按原样读取后,我是否应该从内存中提取RGB值?或者,是否应该应用一些处理来更“接近”数码相机版本所提供的功能?就像你说的,我想这是一个主观的决定…我还必须旋转图像,希望自己不必变换像素。我还需要将结果(原始?)保存回原处,以便以后的过程可以读取文件并提取RGB值。我不确定是否保存到。tiff甚至接近CR2中的内容。