EdSdk определяет настройки изображения и изменяет его на маленький JPEG. И какая польза от getproperty desc?

Используя 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 камеры занято в методе набора свойств, большое спасибо, это сводит меня с ума.


person user3364602    schedule 28.02.2014    source источник


Ответы (1)


EdsGetPropertyDesc можно использовать только для получения списка возможных значений (как идентификаторов) со следующими идентификаторами свойств:

  • kEdsPropID_AEModeSelect (только если у камеры нет переключателя физического режима)
  • kEdsPropID_ISOSpeed
  • kEdsPropID_MeteringMode
  • kEdsPropID_Av
  • kEdsPropID_Tv
  • kEdsPropID_ExposureCompensation

Только значения возвращенного списка могут использоваться для установки данного PropertyID. Все остальные возможные значения недействительны для этой камеры в этом режиме. Чтобы узнать, что означают возвращаемые значения, см. полный список в документации. Например, камера может иметь максимальное значение Tv только 1/4000, но есть значения, определенные до 1/8000. Таким образом, полученный список будет увеличиваться только до 1/4000.

Чтобы получить качество изображения, вы уже делаете правильную вещь. Выходное значение, которое вы получаете, является любым из значений перечисления ImageQuality. Чтобы установить качество изображения, вы используете правильную команду, но неправильное значение. Это также должно быть любое из значений перечисления ImageQuality.

Кстати, все эти команды и свойства описаны в документации.

С уважением

person Johannes Bildstein    schedule 14.04.2014