1

使用canon edsdk,我试图检测相机图像设置是什么,因为如果相机设置为 RAW,我们的应用程序确实可以工作。我不知道如何处理收集的单位getproperty,也不知道有什么getpropertydesc用,因为它看起来像胡言乱语

这是我目前正在尝试的方式:

    EdsdkWrapper.EdsPropertyDesc desc;
    error = EdsdkWrapper.EdsGetPropertyDesc(camera, EdsdkWrapper.PropID_ImageQuality, out desc);

    if (error != EdsdkWrapper.EDS_ERR_OK)
    {
      throw new Exception("Failed to get prop desc for image quality: " + GetErrorMessage(error));
    }

    uint data;

    error = EdsdkWrapper.EdsGetPropertyData(camera, EdsdkWrapper.PropID_ImageQuality,0, out data);
    string propertyName = GetPropertyName(data);


    error = EdsdkWrapper.EdsSetPropertyData(camera, EdsdkWrapper.PropID_ImageQuality,0,4, EdsdkWrapper.ImageSize_Small);

    if (error != EdsdkWrapper.EDS_ERR_OK)
    {
      throw new Exception("Failed to get prop desc for image quality: " + GetErrorMessage(error));
    }

我知道我没有使用 desc,但我也想理解它。我在设置属性方法上收到相机繁忙错误消息 129,非常感谢它让我精神振奋。

4

1 回答 1

1

EdsGetPropertyDesc 只能用于获取具有以下 PropertyID 的可能值列表(作为 ID):

  • kEdsPropID_AEModeSelect(仅当相机没有物理模式开关时)
  • kEdsPropID_ISOSpeed
  • kEdsPropID_MeteringMode
  • kEdsPropID_Av
  • kEdsPropID_Tv
  • kEdsPropID_ExposureCompensation

只有返回列表的值可用于设置给定的 PropertyID。在此模式下,此相机的所有其他可能值均无效。要了解返回值代表什么,请参阅文档以获取完整列表。例如,一台摄像机只能有 1/4000 的最大 Tv 值,但有定义的值直到 1/8000。所以检索到的列表只会上升到 1/4000。

要获得图像质量,您已经做了正确的事情。您获得的输出值是任何 ImageQuality 枚举值。要设置图像质量,您使用了正确的命令,但使用了错误的值。它也应该是任何 ImageQuality 枚举值。

顺便说一句,所有这些命令和属性都在文档中进行了描述。

亲切的问候

于 2014-04-14T13:43:10.070 回答