问题标签 [edsdk]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
673 浏览

c++ - EDSDK 消息循环在 Windows 8.1 下不起作用

我正在使用佳能 EDSDK_64 v2.15。我能够在 Windows7 下使用简单的消息循环接收佳能 SDK 发送的事件。例如,当我想拍照并等待我使用的图像数据时:

这就是我注册对象处理程序的方式:

xCanonEOS在哪里EdsCameraRef; this是一个指向一个类的指针,我用它来完成我的佳能相机的所有工作。这是我的对象事件处理函数:

我的问题是相同的代码在 Windows 8.1 下不起作用。程序只是进入while循环并且注册的回调函数永远不会被调用。

我正在使用 VS2013 x64 编译器。我的相机是佳能 EOS 60D。我的应用程序正在使用 MFC 库。

有人可以指出我做错了什么或提供如何解决此问题的解决方案吗?

0 投票
1 回答
692 浏览

c++ - EDSDK:如果打开相机会话出错,请等待几秒钟并拍照

我使用 EDSDK 来控制佳能 EOS 1200D。

我试试这段代码:

随着睡眠,我得到EDS_ERR_TAKE_PICTURE_CARD_NG 0x00008D07L错误EdsSendCommand(_camera, kEdsCameraCommand_TakePicture, 0)。没有睡眠,一切都很好。

相机会话是否超时?

0 投票
1 回答
571 浏览

camera - 佳能 EDSDK 2.12+ kEdsPropID_BodyIDEx 已禁用

从 2.12 版开始 - 佳能 EDSDK 似乎不再支持通过 kEdsPropID_BodyIDEx 从连接的相机获取相机序列号。这意味着无法分辨哪个物理相机是哪个。

例如,如果您想连接到 2 个摄像头并为摄像头 1 设置设置 1,为摄像头 2 设置设置 2,您无法从应用程序内部知道哪个摄像头是摄像头 1,哪个是摄像头 2,因此无法知道要应用哪些设置每个相机。

如果说 camera1 位于黑暗的房间中而 camera2 位于明亮的房间中并且您想对每个都应用特定的设置,这似乎是一件合理的事情?

我确实看到了这篇文章: 佳能 SDK:下载两个设备拍摄的最新图片以托管

除非我误解了某些东西,否则一旦连接,这可以让您区分应用程序中的摄像头,但不能区分物理摄像头。

有人找到解决此问题的方法吗?

干杯!

0 投票
1 回答
267 浏览

c++ - 使用 EDSDK (Canon T3) 录制电影

我正在尝试在通过 USB 电缆连接到 PC 的佳能 T3 上远程开始电影拍摄。当我将相机连接到 PC 时,实时取景被禁用,因此我无法开始录制(EDSDK 命令失败)。

我应该怎么做才能避免这种情况?

0 投票
1 回答
511 浏览

c# - EDSDK手电筒控制

有没有人通过佳能的 c# 包装器成功控制连接到 EOS 的手电筒?例如,我想修改曝光补偿或检查手电筒是否已重新加载并准备好发射。我在 Camera_SDKPropertyEvent 回调中尝试了 EDSDK.PropID_FlashCompensation 或 EDSDK.PropID_FlashOn,但如果您打开 Speedlite,则不会触发回调。手动使用相机菜单(外部闪光灯放克设置)一切正常。似乎不可能使用 EDSDK 以编程方式做到这一点?我很感激任何提示或建议。谢谢!

0 投票
1 回答
1258 浏览

opencv - 从 DSLR (EDSDK) 实时流式传输到 Open CV

我发现了关于这个主题的大约 10 个问题,但我无法从他们那里得到任何答案,抱歉。

我基本上是在尝试制作一个开放的 cv 应用程序来运行来自 dslr 相机的输入。

目前,我正在使用处理,从 syphon 获取相机输入,然后将其用于处理受限的开放式 cv。由于我需要使用姿势估计,因此无法在处理时进行。另外,我使用 syphon、opencv 和artoolkit 库只有 10 fps……不适合我的原型。

我正在尝试使用 open cv 3.0。我使用网络摄像头获得了校准示例文件。我只是想用 EDSDK 替换 dslr 摄像头输入的网络摄像头。但是我找到的所有参考代码都是完全断开的(不同的版本/语言)。

SDK自带的EDSDK示例文件太复杂,无法推导代码。我不需要任何复杂性(用户界面、按钮、存储卡访问等)。只是作为网络摄像头工作的实时摄像头输入。

这是我可以编写的用于在 opencv 上检索网络摄像头输入的最简单代码。

有什么建议可以帮助我更换此行中的网络摄像头吗?

谢谢

0 投票
2 回答
912 浏览

edsdk - EDSDK LiveView 缩放 10 倍

在 EOS 上使用 LiveView 很有趣,并且有助于使对象聚焦(在不提供自动对焦的目标的情况下)。LiveView 图像(流)的放大确实有助于聚焦。

在相机网站上,您可以使用带有放大镜图标的按钮将 LiveView 图像放大 5 倍和 10 倍。这适用于我的 600D。

使用 EDSDK 编程我遇到了一个问题:可以通过编程方式为 LiveView 设置 5 倍缩放模式。但是我在 10 倍模式下没有成功。

有没有人成功地进行缩放 LiveView 并将 LiveView 图像缩放超过 5 倍?

为了成功实现 5 倍 LiveView 变焦,我为 600D 使用了以下代码:

// 启动 LiveView 等待屏幕上出现的流,然后执行:

_iZoomStage= 5;

bool Success=_CameraHandler.SetSetting(EDSDK.PropID_Evf_Zoom,(UInt32) _iZoomStage);

效果很好,但是:如果您尝试获得更高的缩放系数,则会失败。成功返回 true,但屏幕上看不到任何效果。如果您在相机本身上进行 LiveView 缩放 10 倍,则按下“放大镜”按钮可以正常工作。但是以编程方式,我没有成功获得大于 5 的值。

对那个话题有任何想法吗?

0 投票
1 回答
1424 浏览

edsdk - 使用佳能 EDSDK 的实时取景问题,

我的程序使用佳能EDSDK 2.15,我的相机型号是EOS100D。

当用户单击按钮时,程序会启动实时取景然后拍照。它大部分时间都能很好地拍照,但有时实时取景不起作用。没有任何错误消息表明相机也没有连接到程序。只是透明的矩形位置而不是实时视图。当然拍照功能什么都不做。

我发现如果两个使用摄像头的程序同时运行,后期执行的程序不会捕捉到摄像头。但事实并非如此。运行单个程序时会出现此问题。

有谁知道这个问题?

0 投票
0 回答
520 浏览

c++ - EDSDK 如何在 LiveView 期间获取 Av 属性

在打开相机会话后,我无法获取 kEdsPropID_Av。

最终,我想在拍摄每个视频之前获得 Av 财产,但目前我什至无法在开场后直接获得 Av 财产。(我能够在 LiveView 等期间获得 ZoomPossition 等属性,但 Av 没有运气)。

我还尝试使用命令 kEdsCameraCommand_PressShutterButton 在按钮半按下时(在 LiveView 模式期间)获取 Av,但也没有运气,所以我回到了绝对基本的代码,但它仍然不起作用,我得到 AvValue = 0。任何帮助将不胜感激。

我的基本代码:

getAv 函数:

0 投票
0 回答
561 浏览

c# - 佳能 SDK API 参考不包含所需的所有属性值代码

我正在尝试使用具有 EDSDK 2.14 的佳能 Mark III 相机。我无法解析所有可用的光圈、曝光、ISO 和白平衡值的十六进制代码。SDK API 参考中有一些代码,但相机返回大约两倍的不同值。因此,我无法将大约一半的可用 ISO 值转换为人类可读的值。Mark III 的 2.14 版本是否已过时?如何找到完整的换算表?