【LibRaw】原始图像解码库介绍(九)——C++ API之数据使用后处理:dcraw行为的仿真

数据使用后处理:dcraw行为的仿真

可以使用dcraw函数代替编写自己的Bayer模式后处理函数,这些函数在调用open_file()+ unpack()/ + unpack_thumb()/之后调用

参数设定

实际上,可以通过dcraw命令行设置的所有参数都是通过为LibRaw :: imgdata.params结构的字段赋值来指定的这个结构的类型是libraw_output_params_t ; 数据结构的描述中详细列出和描述了所有字段

int LibRaw :: raw2image

此函数为后处理(imgdata.image)分配缓冲区,并使用与LibRaw 0.13 / 0.14及更低版本兼容的数据布局填充它。如果缓冲区已经分配,​​则将自由()编辑并再次分配。

只有在代码执行后处理阶段时才应调用此函数。如果使用LibRaw的后处理调用(见下文),则不需要调用raw2image()。

该函数根据返回代码约定返回一个整数:如果任何系统调用返回错误,则为正数;如果LibRaw中存在错误情况,则返回负数(来自LibRaw错误列表)。

void LibRaw :: free_image

此函数释放raw2image()分配的imgdata.image缓冲区;

如果程序不需要当前的后处理结果(例如已经在某处复制),则应该调用此方法,但是可以进行新的后处理调用(使用其他设置),因此应尽早调用recycle()

int LibRaw :: adjust_sizes_info_only(void)

对于以下情况,该函数计算输出图像的正确大小(imgdata.sizes.iwidth和imgdata.sizes.iheight):

  • 富士相机的文件(旋转45度)
  • 来自具有非方形像素的相机的文件
  • 由旋转相机拍摄的图像。

在上述情况下,该功能改变图像输出大小的字段; 请注意,此更改不能再次重复。

int LibRaw :: dcraw_process(void)

该函数模拟dcraw中可用的后处理功能
调用LibRaw :: unpack()后调用;

除了以外,支持dcraw的整个功能(通过imgdata.params中的字段值设置

  • 黑帧减法
  • 处理坏像素。

该功能仅用于演示和测试目的; 假设其源代码将在大多数实际应用中用作关于RAW数据处理顺序的参考资料。

该函数根据错误代码约定返回一个整数:如果任何系统调用返回错误,则为正数;如果LibRaw中存在错误情况,则返回负数(来自LibRaw错误列表)。

猜你喜欢

转载自blog.csdn.net/Mr_sandman1994/article/details/80896701
今日推荐