Image Acquisition Toolbox™ добавил улучшения свойства GenICam™ для Видения GigE® (gige
) и GenICam GenTL (gentl
) адаптеры используются с videoinput
объект в R2016a. Эти функции были уже включены в gigecam
объект.
Способность изменить свойства, в то время как захват запускается
Динамическая доступность и удобочитаемость
Динамические ограничения
Сгруппированные селекторные свойства
Эта способность полезна для свойств, которые вы хотите изменить динамически, такие как выдержка. Например, можно теперь сделать это:
% Create the videoinput object using the GigE adaptor vid = videoinput('gige') % Get the video source src = getselectedsource(vid); % Set the frames per trigger on the source vid.FramesPerTrigger = Inf; % Start acquiring frames start(vid) % Change the exposure time during the acquisition src.ExposureTime = 4;
Ранее изменение выдержки после запуска захвата привело к ошибке.
Image Acquisition Tool
В Image Acquisition Tool, на вкладке Device Properties, вы видите, что свойства динамически доступны и устанавливаемы. В то время как захват запускается, можно изменить свойство на вкладке, и это вступит в силу в остающихся системах координат захвата.
Специфичные для устройства свойства или свойства GenICam камеры, теперь динамически доступны. В предыдущих релизах были скрыты свойства GenICam камеры, которые не были доступны. Если вы отображаете специфичные для устройства свойства с помощью disp
получение
или propinfo
функции, свойства, которые ранее не обнаружились теперь, обнаруживаются с метками.
propinfo
функция включает новое поле под названием Accessible
, который является булево свойством только для чтения. disp
на свойстве, которое имеет Accessible
установите на 0
результаты в “В настоящее время не доступный”. Чтобы включить доступность, установите Accessible
к 1
. Например, если у вас есть ReverseY
набор свойств к Accessible
, следующее:
propinfo(src,'ReverseY')
привел бы к показу disp:
Accessible: 1
То же самое верно для ReadOnly
свойство. Удобочитаемость является теперь динамической и propinfo
функция показывает ReadOnly
свойство как любой 'notCurrently'
, если это перезаписываемо, или 'currently'
, если это только для чтения. Пример в разделе Dynamic Constraints демонстрирует динамическое использование этого свойства.
Можно просмотреть исходные свойства видеть, не доступны ли какие-либо свойства в настоящее время. В этом примере, для части disp, показанного ниже, AcquisitionFrameCount
и BalanceRatioRaw
в настоящее время не доступны.
>> src = vid.Source src = Display Summary for Video Source Object: General Settings: Parent = [1x1 videoinput] Selected = on SourceName = input1 Tag = [0x0 character vector] Type = videosource Device Specific Properties: AcquisitionFrameCount = (Currently not accessible) AcquisitionFrameRate = 4.5 AcquisitionFrameRateAuto = Off AcquisitionFrameRateEnabled = True BalanceRatioRaw = (Currently not accessible) BinningHorizontal = 1 BinningVertical = 1 BlackLevel = 1.001 ...
Image Acquisition Tool
В Image Acquisition Tool, на вкладке Device Properties, вы видите, что свойства динамически доступны. В предыдущем примере, если свойства AcquisitionFrameCount
и BalanceRatioRaw
стал недоступным, они появятся как greyed на вкладке.
Если вы изменяете свойство, которое приводит к изменению возможных значений или ограничительному изменению, для другого свойства, ограничительные значения другого свойства обновляются динамически. Рассмотрите камеру, которая имеет автоматическую резкость, устанавливающую это, можно установить на Continuous
автоматически настроить резкость или установить на Off
. Автоматическое свойство резкости затем влияет на связанный Sharpness
свойство. В этом примере, когда SharpnessAuto
установлен в Continuous
, disp Sharpness
свойство показывает ограниченные значения и что не может быть установленным.
>> propinfo(src, 'SharpnessAuto') ans = Type: 'character vector' Constraint: 'enum' ConstraintValue: {'Continuous' 'Off'} DefaultValue: 'Continuous' ReadOnly: 'notCurrently' DeviceSpecific: 1 Accessible: 1 >> propinfo(src, 'Sharpness') ans = Type: 'integer' Constraint: 'bounded' ConstraintValue: [1532 1532] DefaultValue: 1532 ReadOnly: 'currently' DeviceSpecific: 1 Accessible: 1
Если вы затем устанавливаете SharpnessAuto
свойство к Off
, второй disp Sharpness
свойство показывает, что ограниченные значения динамически обновились, и что оно теперь может быть установленным (более не только для чтения).
>> src.SharpnessAuto = 'Off' >> propinfo(src, 'Sharpness') ans = Type: 'integer' Constraint: 'bounded' ConstraintValue: [0 4095] DefaultValue: 1532 ReadOnly: 'notCurrently' DeviceSpecific: 1 Accessible: 1
Image Acquisition Tool
В Image Acquisition Tool, на вкладке Device Properties, вы видите, что ограничительные свойства динамически обновляются. Например, если вы выключаете свойство, которое является для автоматической функции на камере, такой как автоматическая резкость или автофокус, во вкладке Device Properties, можно затем сразу изменить связанное первичное свойство, такое как резкость или особое внимание, поскольку это больше не ограничивается. Ограниченные значения обновляются динамически.
И в Image Acquisition Tool и в командной строке, теперь сгруппированы селекторные свойства. В инструменте вы видите группировки во вкладке Device Properties. В отображении свойства на командной строке связанные свойства сгруппированы – селекторное свойство перечислено с его возможными значениями, появляющимися ниже его.
Например, в предыдущих версиях тулбокса, для GainSelector
с возможными значениями Red
, Blue
, и Green
и Gain
свойство, свойства усиления, отображенные можно следующим образом:
>> vid = videoinput('gige') >> src = getselectedsource(vid) ... ... RedGain = 0.4 BlueGain = 0.2 GreenGain = 0.1 ...
Они теперь отображаются как отдельные значения на одном селекторном свойстве вместо этого:
>> vid = videoinput('gige') >> src = getselectedsource(vid) ... ... GainSelector = 'Red' Gain = 0.2 ...
Вопросы совместимости
Группировка селекторных результатов свойств в вопросе совместимости, запускающемся в R2016a из-за изменения в том, как селекторные свойства отображены, читай, или записанный. Существует теперь меньше свойств, поскольку некоторые показываются одним селекторным свойством с отдельными значениями, тогда как они раньше были раздельным имуществом.
Если у вас есть какой-либо MATLAB® код, записанный до R2016a, который ссылается на предыдущее, раздельное имущество, необходимо изменить код, чтобы отразить их как значения на селекторном свойстве. Установка и получение свойств, которые принадлежат селектору с помощью предыдущего стиля составного имени, больше не поддерживаются. Например, RedGain
больше не работает. Вместо этого используйте GainSelector
установите на Red
, как показано в примере.
Чтобы установить значение свойства, сначала установите селекторное значение, затем установите значение свойства:
src.GainSelector = 'Green'; src.Gain = 0.1;