codegen ФункцияVideyDevice System object™ поддерживает генерацию кода в MATLAB ® через codegen функция. Для использования codegen необходимо иметь лицензию MATLAB Coder™. Системные объекты также поддерживают генерацию кода с использованием функционального блока MATLAB в Simulink ®. Можно также использовать системный объект с Compiler™ MATLAB.
Примечание
Программное обеспечение компилятора MATLAB поддерживает системные объекты для использования внутри функций MATLAB. Компилятор MATLAB не поддерживает системные объекты для использования в сценариях MATLAB.
Примечание
Если вы используете codegen для создания функции MEX на платформе Windows ® необходимо выполнитьimaqreset перед запуском созданного файла MEX. Однако MEX работает неправильно, если установлен пакет поддержки Kinect ® для Windows Sensor.
После запуска сгенерированного файла MEX, если вы запускаете код MATLAB, который включает объект VideyDevice System с адаптером камеры, который также используется в сгенерированном файле MEX, необходимо выполнить clear mex во-первых.
Примечание
codegen может использоваться для создания исполняемых файлов на платформах, отличных от Windows. Однако генерация функции MEX не поддерживается на платформах Linux ® и macOS.
Для получения дополнительной информации см. документацию по MATLAB. codegen функция.
Объект VideyDevice System генерирует код с ограниченной переносимостью. Объект System использует предварительно скомпилированные общие библиотеки, такие как DLL, для поддержки операций ввода-вывода для определенных типов устройств. Для созданного исполняемого файла требуются следующие расположения общих библиотек:
Общие библиотеки MathWorks в [MATLABROOT ]\bin\< ARCH >\
Библиотеки адаптеров MathWorks в разделе [MATLABROOT ]\SupportPackages\< RELEASE >\toolbox\imaq\supportpackages\genericvideo\adaptor\< ARCH >\для выбранного устройства.
Например, ваш путь может выглядеть следующим образом в системе Windows и с использованием R2018a выпуска:
C :\ProgramdData\MATLAB\SupportPackages\R2018a\toolbox\imaq\supportpackages\genericvideo\adaptor\win64
Перед запуском созданного исполняемого файла вне MATLAB необходимо добавить вышеуказанные папки в системный путь.
Назначение системных объектов постоянным переменным.
Глобальные переменные не поддерживаются.
Однократная инициализация объектов System путем встраивания дескрипторов объектов в if оператор с вызовом isempty( ).
Вызовите конструктор ровно один раз для каждого объекта System.
Задайте аргументы конструкторам объектов System в качестве констант времени компиляции.
Используйте конструктор объекта, чтобы задать свойства объекта System, поскольку нельзя использовать точечную нотацию для создания кода. Вы можете использовать get для отображения свойств.
Перед созданием кода протестируйте код в моделировании.
Ниже приведен пример некоторых из этих правил.
% Note: System Objects created for Codegen have to be persistent variables.
persistent vid;
% Construct the IMAQ VideoDevice System Object.
if isempty(vid)
% Note: All required parameters must be passed to the System Object at
% the point of construction.
vid = imaq.VideoDevice('winvideo', 1, 'MJPG_320x240', ...
'ROI', [1 1 320 240], ...
'ReturnedColorSpace', 'rgb', ...
'DeviceProperties.Brightness', 130, ...
'DeviceProperties.Sharpness', 220);
endУбедитесь, что значение, назначенное неперестраиваемому или общедоступному свойству, является константой и что этому свойству назначено не более одного значения (включая назначение в конструкторе). Не устанавливайте какие-либо свойства во время создания кода.
При создании кода поддерживаются только следующие функции объекта System:
get
getNumInputs
getNumOutputs
reset
step
Не устанавливайте системные объекты как выходные данные из блока MATLAB Function.
Не передавать объект System в качестве примера входного аргумента функции, скомпилированной с помощью codegen.
Не передавайте объект System функциям, объявленным как внешние (т.е. функции, вызываемые в интерпретируемом режиме) с помощью coder.extrinsic функция. Не возвращайте системные объекты из каких-либо внешних функций.