В этом примере показано, как создать код C с помощью Coder™ MATLAB ® из приложений MATLAB, использующих функции Toolbox™ обработки изображений. В этом примере описывается, как настроить среду MATLAB и подготовить код MATLAB для создания кода .
В этом примере также показано, как решить проблемы, которые могут возникнуть в коде MATLAB и которые препятствуют созданию кода. Чтобы проиллюстрировать процесс, код, используемый в этом примере, включает некоторые проблемы готовности и сборки, которые необходимо преодолеть перед созданием кода.
Для получения дополнительной информации о создании кода см. документацию по кодеру MATLAB.
Укажите компилятор C/C + +, который требуется использовать с кодером MATLAB для создания кода с помощью mex функции с помощью -setup вариант.
mex -setupMEX 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 %#codegen в конце подписи функции. Эта директива предписывает анализатору кода MATLAB диагностировать проблемы, которые запрещают успешную генерацию кода.
Откройте приложение MATLAB Coder с помощью coder функция. (Кроме того, в MATLAB выберите вкладку Приложения, перейдите в раздел Создание кода и щелкните приложение Кодер MATLAB.)
coder
Укажите имя функции точки входа, detectCellsCodeGenи нажмите Enter.

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

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

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

Каждый ввод кода должен иметь фиксированный размер, переменный размер или константу. Существует несколько способов задать размер входного аргумента, но проще всего дать MATLAB Coder пример вызова функции. Введите сценарий, вызывающий функцию, в поле ввода текста. В этом примере введите следующий код в подсказке MATLAB и нажмите клавишу Autodefine Input Types.
I = imread('cell.tif');
Iseg = detectCellsCodeGen(I);




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

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

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

Устраните выявленные проблемы построения. В этом примере измените вызов на imdilate во избежание передачи массива объектов strel. Замените одиночный вызов на imdilate с двумя отдельными вызовами imdilate где передается один объект strel с каждым вызовом.

Повторно запустите тестовую сборку, чтобы убедиться, что изменения устранены. Щелкните Проверить наличие проблем. Кодер MATLAB отображает сообщение об отсутствии проблем.

Теперь вы готовы к созданию кода. Нажмите кнопку Далее.
Выберите тип кода, который требуется создать, и целевую платформу. Кодер MATLAB может генерировать исходный код C или C++, файл MEX, статическую библиотеку, общую библиотеку или автономный исполняемый файл. Для производственного оборудования вы можете выбрать из множества вариантов, включая процессоры ARM и Intel.
В этом примере используются параметры по умолчанию. Тип сборки - исходный код, а язык - C. Для параметров устройства укажите универсальное устройство от поставщика устройства и главный компьютер MATLAB для типа устройства. При выборе MATLAB Host Computer программа MATLAB Coder генерирует код, который зависит от предварительно скомпилированной общей библиотеки. Функции панели инструментов обработки изображений используют общую библиотеку для сохранения оптимизации производительности.
Щелкните Создать (Generate).

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