首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >增加相机轮廓校正到dng_validate.exe [Adobe ]

增加相机轮廓校正到dng_validate.exe [Adobe ]
EN

Stack Overflow用户
提问于 2017-06-01 14:58:36
回答 2查看 500关注 0票数 0

使用Lightroom,我知道如何将相机配置文件(*.dcp文件)应用于我的*.DNG图像。

我想在我正在编写的应用程序中也这样做,所以我想一个很好的起点是将这个功能附加到dng_validate.exe应用程序中。

所以我开始补充:

代码语言:javascript
复制
#include "dng_camera_profile.h"

接着又补充说:

代码语言:javascript
复制
static dng_string gDumpDCP; 

并将以下内容添加到错误打印中:

代码语言:javascript
复制
"-dcp <file>   Load camera profile from <file>.dcp\"\n"

然后,我添加了函数来从cli读取dcp:

代码语言:javascript
复制
else if (option.Matches("dcp", true))
{
   gDumpDCP.Clear();
   if (index + 1 < argc)
   {
      gDumpDCP.Set(argv[++index]);
   }

   if (gDumpDCP.IsEmpty() || gDumpDCP.StartsWith("-"))
   {
      fprintf(stderr, "*** Missing file name after -dcp\n");
      return 1;
   }

   if (!gDumpDCP.EndsWith(".dcp"))
   {
      gDumpDCP.Append(".dcp");
   }

}

然后从磁盘行421加载配置文件。

代码语言:javascript
复制
if (gDumpTIF.NotEmpty ())
{
   dng_camera_profile profile;
   if (gDumpDCP.NotEmpty())
   {
      dng_file_stream inStream(gDumpDCP.Get());
      profile.ParseExtended(inStream);
   }
   // Render final image.
   .... rest of code as it was

那么,我现在如何使用概要文件数据来更正呈现和写入校正的图像?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-08 10:17:24

所以在玩了几天之后,我找到了解决办法。实际上,底片可以有多个相机轮廓。因此,对于negative->AddProfile(profile),您只需添加一个。但如果这不是第一份资料的话就不会用了!因此,我们首先需要清理配置文件,而不是添加一个。

代码语言:javascript
复制
AutoPtr<dng_camera_profile> profile(new dng_camera_profile);
if (gDumpDCP.NotEmpty())
{
    negative->ClearProfiles();
    dng_file_stream inStream(gDumpDCP.Get());
    profile->ParseExtended(inStream);

    profile->SetWasReadFromDNG();
    negative->AddProfile(profile);

    printf("Profile count: \"%d\"\n", negative->ProfileCount()); // will be 1 now!
}

下一件事,得到正确的图像是有正确的白平衡。这可以通过非公开或事后进行。对于我的应用程序与4个不同的相机,结果是最好的使用后,白色平衡校正。因此,我发现了4对(温度,金币)对使用照明。

问题是如何在dng_validate.exe程序中添加这些值。我就是这样做的:

#include "dng_temperature.h"

代码语言:javascript
复制
if (gTemp != NULL && gTint != NULL)
{
    dng_temperature temperature(gTemp, gTint);
    render.SetWhiteXY(temperature.Get_xy_coord());
}

得到的图像与Lightroom的结果略有不同,但足够接近。另外,相机和摄像机的区别现在也消失了!:)

票数 1
EN

Stack Overflow用户

发布于 2017-06-04 17:51:50

您需要将配置文件添加到negative->AddProfile(profile);的阴性文件中。

我的项目raw2dng会这样做(以及更多),如果您想看一个示例,可以在源代码中找到。配置文件添加了这里

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44310986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档