Image Acquisition Toolbox™ добавил улучшения свойства GenICam для Видения GigE (gige
) и (gentl
) адаптеры GenICam 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
, get
или функций 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;