佳能 SDk 文章,作者 Johannes Bildstein

Posted

技术标签:

【中文标题】佳能 SDk 文章,作者 Johannes Bildstein【英文标题】:canon SDk Article by Johannes Bildstein 【发布时间】:2016-01-30 09:36:28 【问题描述】:

在佳能 SDK 示例中,如何拍摄具有特定分辨率(例如 200-300 dpi)的照片或以编程方式更改分辨率,并将拍摄的照片保存为另一种文件类型,这里我需要保存为 .TIF 格式?我找不到任何功能。

【问题讨论】:

【参考方案1】:

本文的作者在这里。 您可以通过使用ImageQuality 枚举之一设置PropID_ImageQuality 来更改图像分辨率。请注意,并非每个相机都支持每个枚举值,实际图像分辨率取决于相机和传感器。如果您需要像素精确的图像,则必须自己调整大小。

另外,你从相机下载的图片没有被SDK修改,所以你只能得到相机有的图片格式,通常是CR2和/或Jpg。

要从原始文件中获取 tif,您可以使用 SDK 图像方法。要创建原始图像,请使用EdsCreateImageRef 方法并使用EdsSaveImage 方法保存它。作为目标,您可以使用EdsTargetImageType.TIFF(或TIFF16,每通道16位)。

编辑:

将图像保存到 tiff 的快速示例(未测试):

IntPtr imgRef;
//Open image
IntPtr inStream;
EDSDK.EdsCreateFileStream("inFile.cr2", EdsFileCreateDisposition.OpenExisting, FileAccess.Read, out inStream);
EDSDK.EdsCreateImageRef(inStream, out imgRef);
EDSDK.EdsRelease(inStream);

//do whatever you like with imgRef now

//Save image
IntPtr outStream;
var settings = new EdsSaveImageSetting();
EDSDK.EdsCreateFileStream("outFile.tif", EdsFileCreateDisposition.CreateAlways, EdsFileAccess.Write, out outStream);
EDSDK.EdsSaveImage(imgRef, EdsTargetImageType.TIFF, settings, outStream);
EDSDK.EdsRelease(outStream);

【讨论】:

@Shapoor,请说明你已经做了什么以及你有什么错误。我可以通过这种方式更好地帮助你。 @Shapoor,所有这些都在 EDSDK 类中定义。该属性的设置与使用 CameraHandler 中的 SetSetting 方法的任何其他属性一样(请参阅文章中的示例)。有关 tiff 保存的快速示例,请参阅编辑。 我们在here 引用您的出色实用程序,我们的目的是将捕获的图像保存为.TIF,在示例应用程序中,单击TakePhoto 后,它应该将图像保存为.TIF 在计算机上。在 DownloadToFile 函数中,我们使用了上面的代码,其中“input.cr2”文件是从相机的 RAW 设置中捕获的。您能否告诉我们上述代码的确切用法,即添加此代码的正确位置和确切的参数值? - 再次感谢您。【参考方案2】:

要获取 TIFF 图像,请以 RAW 格式拍摄,并在下载图像后使用 EdsSaveImage 函数并将 EdsTargetImageType 设置为 kEdsTargetImageType_TIFF。 DPI 分辨率不直接相关,但您始终可以使用Exiftool 等工具明确设置 DPI。

【讨论】:

以上是关于佳能 SDk 文章,作者 Johannes Bildstein的主要内容,如果未能解决你的问题,请参考以下文章

佳能数字 SDK (EDSDK) EdsCreateImageRef 错误

更好的 .NET SDK 支持——佳能还是尼康? [关闭]

佳能 SDK - 将图像下载到主机 PC

解决了,佳能R6相机DAT/MP4视频文件修复卡顿无声问题

SiGGRAPH Asia 2016之来自facebook的Johannes Kopf的论文360 Video Stabilization的简单翻译

SiGGRAPH Asia 2016之来自facebook的Johannes Kopf的论文360 Video Stabilization的简单翻译