手机相机中RAW图像的打开和 *** 作(Python)

手机相机中RAW图像的打开和 *** 作(Python),第1张

1、手机拍摄RAW

目前智能手机一般都带有专业模式,拍摄并保存RAW图需在专业模式中设置中打开对应照片格式,之后在拍摄画面会出现RAW图字样,如下图所示。

 

之后拍摄会得到两种格式图像,一种压缩JPG格式,一种无损RAW格式。raw格式图像存储大小明显高于jpg图像。

2、对相机RAW格式图像进行数据读取(python)

后续可以通过数据线将手机拍摄到的RAW图保存到电脑文件下,方便对RAW图像进行处理。

第一步:安装和导入Python相关库

安装

pip install rawpy

导入包

import rawpy
import imageio

 Imageio是一个Python库,提供了一个简单的接口来读取和写入各种图像数据

rawpy是用于处理RAW图像的一个python库

第二步:读取RAW图像数据
openpath = "C:\Users\Lijian\Desktop\image\image.dng";
savepath = "C:\Users\Lijian\Desktop\image\image.tiff";
img=rawpy.imread(openpath)
rgb = img.postprocess()//无参数设置处理RAW图像,输出RGB图像
imageio.imsave(savepath, rgb)//保存RGB图像

 下图左图为相机保存的RAW图像格式,右图是经过postprocess处理后输出的RGB图像。

 

 对比正常输出的out.jpg图像,image.tiff存在明显色偏及对比度清晰度亮度问题。故需要ISP流程中的不同算法处理后输出与右侧对应的正常颜色图像。

 

 第三步:将RAW图二维整型数组转换为字节流,每两个字节存储一个整型数据,低位在前,高位在后。
array_data=img.raw_image_visible//读取RAW图像数据信息
width = array_data.shape[0];
height = array_data.shape[1];
print(array_data.shape)//打印长和宽
print(array_data)//打印矩阵信息

 

 之后将整型数据转换成字节流,以RAW格式保存。

savepath_raw = "C:\Users\Lijian\Desktop\image\image.raw";
with open(savepath_raw, 'wb') as f:
    for x in range(0,width):
        for y in range(0,height):
            data = int(array_data[x][y]);
            f.write(data.to_bytes(2, byteorder='little'));

这样我们就可得到一张RAW格式数据字节流图像,原数据的获取方便我们对后续图像进行处理。例如blc、lsc、awb、ccm等。

 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/723439.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-26
下一篇 2022-04-26

发表评论

登录后才能评论

评论列表(0条)

保存