Можно импортировать данные изображения в Simulink® модель как матричные данные или как изображение с Simulink.ImageType тип данных. Image To Matrix и блоки Matrix To Image преобразуют между данными изображения Simulink и матричными данными. Используйте эти блоки, чтобы интегрировать данные изображения Simulink в алгоритм обработки изображений, который содержит блоки, которые не поддерживают данные изображения Simulink.
Получить доступ к пути к папке в качестве примера, в MATLAB® командная строка, введите:
OpenCVSimulinkExamples;
Скопируйте модель ex_imagetypes в качестве примера к перезаписываемому местоположению папки.
Модель ex_imagetypes содержит два входных изображения, coins и peppers_bwВ виде матриц. Блок MATLAB function contrast_histeq преобразует оригинальные изображения в высококонтрастные изображения. Блок MATLAB Function работает с матричными данными только. Блок Image To Matrix преобразует данные изображения от блока switch в матрицу, чтобы позволить блоку MATLAB Function обработать его.
На панели инструментов Simulink, во вкладке Simulation, выбирают Run, чтобы симулировать модель. Блок Video Viewer Video Viewer Original отображает оригинальные изображения, импортированные в модель и Video Viewer High Contrast отображает высоко контрастировавшие изображения после обработки изображений.


Сгенерировать Код С++:
На вкладке Apps на панели инструментов Simulink выберите Simulink Coder. На вкладке C++ Code, в списке Settings, выбирают C/C++ Code generation settings, чтобы открыть диалоговое окно Configuration Parameters и проверить эти настройки:
В панели Code Generation, под Target selection, Language установлен в C++.
В том же разделе Language standard установлен в C++11 (ISO).
Нажмите кнопку Build и сгенерируйте код.
Чтобы просмотреть сгенерированный код, на панели инструментов Simulink, нажимают кнопку Open Report.
В ex_imagetype.h файл, генератор кода объявляет Выходные порты корневого уровня Out_normmal как член класса C++ images::datatypes::Image реализованный MathWorks® и Out_highContrast как матричное изображение:
/* External outputs (root outports fed by signals with default storage) */
struct ExtY_ex_imagetypes_T {
images::datatypes::Image Out_normal; /* '<Root>/Out_normal' */
uint8_T Out_highContrast[73800]; /* '<Root>/Out_highContrast' */
};Генератор кода инициализирует сигналы Simulink.ImageType тип данных в ex_imagetypes.c файл:
/* Model initialize function */
void ex_imagetypes::initialize()
{
/* Registration code */
constructImage(&ex_imagetypes_B.toImage, 1U, 246U, 300U, images::datatypes::
ColorFormat::Grayscale, images::datatypes::Layout::
ColumnMajorPlanar, images::datatypes::ClassUnderlying::Uint8);
constructImage(&ex_imagetypes_Y.Out_normal, 1U, 246U, 300U, images::datatypes::
ColorFormat::Grayscale, images::datatypes::Layout::
ColumnMajorPlanar, images::datatypes::ClassUnderlying::Uint8);
...
}Это - код для блока Matrix To Image:
/* ToImage: '<S2>/toImage' incorporates: * Constant: '<Root>/coins' * Outport: '<Root>/Out_normal' */ imgData = imageGetDataFcn(&ex_imagetypes_Y.Out_normal); inPtr = &ex_imagetypes_ConstP.coins_Value[0]; std::memcpy(imgData, inPtr, sizeof(uint8_T) * 73800U);
Это - код для блока Image To Matrix:
/* FromImage: '<S1>/fromImage' incorporates: * Outport: '<Root>/Out_normal' */ tmp_3 = ex_imagetypes_Y.Out_normal; imgData = imageGetDataFcn(&tmp_3); std::memcpy(&ex_imagetypes_B.fromImage[0], imgData, sizeof(uint8_T) * 73800U);
Когда модель содержит сигналы Simulink.ImageType тип данных, генератор кода производит дополнительные совместно использованные служебные файлы. Эти файлы объявляют и задают утилиты для построения, разрушают и возвращают информацию о meta атрибутах изображений:
image_type.h
image_type.cpp
Matrix To Image | Image To Matrix | Simulink.ImageType