Сгенерируйте код для обнаружения объектов

В этом примере показано, как сгенерировать код С с помощью MATLAB® Coder™ от приложений MATLAB то использование функции Image Processing Toolbox™. Пример описывает, как установить вашу среду MATLAB и подготовить ваш код MATLAB к генерации кода.

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

Для получения дополнительной информации о генерации кода, см. документацию MATLAB Coder.

Настройте компилятор

Задайте, какой компилятор C/C++ вы хотите использовать с MATLAB Coder, чтобы сгенерировать код при помощи mex функция с -setup опция.

mex -setup
Renamed options file 'C:\Users\jbernier\AppData\Roaming\MathWorks\MATLAB\R2021b\mex_C_win64.xml' to 'C:\Users\jbernier\AppData\Roaming\MathWorks\MATLAB\R2021b\mex_C_win64_backup.xml'.
MEX configured to use 'MinGW64 Compiler (C)' for C language compilation.

To choose a different language, select one from the following:
 mex -setup C++ 
 mex -setup FORTRAN

Задайте функцию точки входа

Функцией точки входа является функция MATLAB, используемая в качестве исходного кода для генерации кода. Во-первых, моделируйте рабочий процесс обработки изображений без поддержки генерации кода. Этот пример задает функцию под названием detectCells.m это выполняет обнаружение ячейки с помощью сегментации и морфологических методов. Эта функция присоединена к примеру как вспомогательный файл.

Протестируйте пример кода с демонстрационным изображением, cell.tif.

I = imread('cell.tif');
Iseg = detectCells(I);

Подтвердите точность сегментации путем накладывания сегментированного изображения на оригинальном изображении.

imshow(labeloverlay(I,Iseg))

Поскольку вы изменяете этот код для генерации кода, хорошо работать с копией кода. Этот пример включает копию функции помощника detectCells.m названный detectCellsCodeGen.m. Версия функции, используемой для генерации кода, включает директиву компиляции MATLAB Coder %#codegen в конце функциональной подписи. Эта директива дает анализатору кода MATLAB команду диагностировать проблемы, которые запретили бы успешную генерацию кода.

Откройте приложение MATLAB Coder при помощи coder функция. (В качестве альтернативы в MATLAB, выберите вкладку Apps, перейдите Генерации кода и кликните по приложению MATLAB Coder.)

coder

Задайте имя своей функции точки входа, detectCellsCodeGen, и нажмите Enter.

Определите готовность кода для генерации кода

Нажать Далее. MATLAB Coder идентифицирует любые проблемы, которые могут предотвратить генерацию кода. Пример кода содержит пять неподдерживаемых вызовов функции.

Рассмотрите проблемы готовности. Нажмите Review Issues. В отчете MATLAB Coder отображает ваш код в окне редактирования с проблемами готовности описанное ниже, отмечающее использование imshow функция, которая не поддерживает генерацию кода.

Правильные проблемы готовности

Решите проблемы готовности. Удалите вызовы imshow и связанный код отображения из вашего примера. Операторы отображения не необходимы для операции сегментации. Можно отредактировать пример кода напрямую в MATLAB Coder. Когда вы удалите код, нажмите Save, чтобы сохранить ваши редактирования и повторно выполнить проверку готовности. После повторного выполнения проверки готовности MATLAB Coder не отображает проблемы, найденные сообщением.

Задайте размер и тип данных входных параметров функции

Каждый вход к вашему коду должен быть задан, чтобы иметь фиксированный размер, переменный размер или константу. Существует несколько способов задать размер вашего входного параметра, но самый легкий путь путем предоставления MATLAB Coder примера вызывания функции. Введите скрипт, который вызывает вашу функцию в поле ввода текста. В данном примере введите следующий код в подсказке MATLAB и нажмите Autodefine Input Types.

I = imread('cell.tif');
Iseg = detectCellsCodeGen(I);

Для получения дополнительной информации об определении входных параметров, см. документацию MATLAB Coder. После того, как MATLAB Coder возвращается с входным определением типа, нажать Далее.

Проверяйте на и решите вопросы во время выполнения

Даже при том, что вы выполнили проверки готовности MATLAB Coder, дополнительные проблемы могут возникнуть во время процесса сборки, который может предотвратить генерацию кода. В то время как взгляд проверок готовности на функциональные зависимости, чтобы определить готовность, процесс сборки исследует шаблоны кодирования. Можно использовать тот же код, который вы ввели к входным define типам (который предварительно загружен в диалоговое окно). Нажмите Check for Issues.

Этот пример содержит проблему сборки: это передает массив strel объекты к imdilate и массивы объектов не поддерживаются для генерации кода.

Решите идентифицированные проблемы сборки. В данном примере измените вызов imdilate постараться не передавать массив strel объекты. Замените один вызов imdilate с двумя отдельными вызовами imdilate куда вы передаете один объект strel с каждым вызовом.

Повторно выполните тестовую сборку, чтобы убедиться, что ваши изменения устранили проблему. Нажмите Check for Issues. MATLAB Coder отображает сообщение, объявляя, что никакие проблемы не были обнаружены.

Сгенерируйте код

Вы теперь готовы сгенерировать код. Нажать Далее.

Выберите тип кода, вы хотите сгенерировать и выбрать целевую платформу. MATLAB Coder может сгенерировать C или исходный код C++, файл MEX, статическую библиотеку, разделяемую библиотеку или независимый исполняемый файл. Для Производственного Оборудования можно выбрать из многих вариантов включая процессоры ARM и Intel.

Этот пример использует опции по умолчанию. Типом сборки является Исходный код, и язык является C. Для опций устройства задайте типовое устройство от поставщика устройства и Хоста - компьютера MATLAB для типа устройства. Когда вы выбираете MATLAB Host Computer, MATLAB Coder генерирует код, который зависит от предварительно скомпилированной разделяемой библиотеки. Функции Image Processing Toolbox пользуются разделяемой библиотекой, чтобы сохранить оптимизацию эффективности.

Нажмите Generate.

MATLAB Coder отображает сгенерированный код.

Нажмите Далее, чтобы завершить процесс. MATLAB Coder отображает информацию о том, что это сгенерировало. По умолчанию MATLAB Coder создает codegen подпапка в вашей папке работы, которая содержит сгенерированный выход.

Смотрите также

(MATLAB Coder) | (MATLAB Coder)

Похожие темы