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

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等。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

岁月蹉跎的一杯酒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值