This example shows how to convert an RGB image to a grayscale image by using the OpenCV Importer app. The converter converts an RGB image to a grayscale image by eliminating the hue and saturation information while retaining the luminance.
First import an OpenCV function into Simulink by using the Install and Use Computer Vision Toolbox Interface for OpenCV in Simulink. The app creates a Simulink library that contains a subsystem and a C Caller block for the specified OpenCV function. The subsystem is then used in a preconfigured Simulink model to accept the RGB image for conversion.
You learn how to:
Import an OpenCV function into a Simulink library.
Use blocks from a generated library in a Simulink model.
To build the OpenCV libraries, identify a compatible C++ compiler for your operating system, as described in Portable C Code Generation for Functions That Use OpenCV Library. Configure the identified compiler by using the
mex -setup c++ command. For more information, see Choose a C++ Compiler.
This example uses the Simulink model
In this model, the
subsystem_slwrap_toGrayScale subsystem resides in the
RGBtoGRAY_Lib library. You create the
subsystem_slwrap_toGrayScale subsystem by using the OpenCV Importer. The subsystem accepts an RGB image from the Image From File block and converts it to a grayscale output image. The output is then displayed on a Video Viewer block.
To access the path to the example folder, at the MATLAB® command line, enter:
Each subfolder contains all the supporting files required to run the example.
Before proceeding with these steps, ensure that you copy the example folder to a writable folder location and change your current working folder to
...example\ImageRGBtoGray. All your output files are saved to this folder.
1. To start the OpenCV Importer app, click Apps on the MATLAB Toolstrip. In the Welcome page, specify the Project name as
RGBtoGRAY. Make sure that the project name does not contain any spaces. Click Next.
2. In Specify OpenCV Library, specify these file locations, and then click Next.
Project root folder: Specify the path of your example folder. This path is the path to the writable project folder where you have saved your example files. All your output files are saved to this folder.
Source files: Specify the path of the
.cpp file located inside your project folder as
Include files: Specify the path of the
.hpp header file located inside your project folder as
3. Analyze your library to find the functions and types for import. Once the analysis is complete, click Next. Select the
toGrayScale function and click Next.
4. From What to import, select the I/O Type for
InputOutput, and then click Next.
5. In Create Simulink Library, configure the default values of OpenCV types. By default, Create a single C-caller block for the OpenCV function is selected to create a C Caller block along with the subsystem in the generated Simulink library.
6. Select Configure library to use Simulink.ImageType signals to configure the generated library subsystem to use
7. Set Default Color Format of Simlink.ImageType signal to
RGB, which is the default color format of the image.
8. Set Default Array layout of Simulink.ImageType signal to
Column-major, which is the default array layout of the image.
9. To create a Simulink library, click Next.
A Simulink library
RGBtoGRAY_Lib is created from your OpenCV code into the project root folder. The library contains a subsystem and a C Caller block. You can use any of these blocks for model simulation. In this example, the subsystem
subsystem_slwrap_toGrayScale is used.
To use the generated subsystem
subsystem_slwrap_toGrayScale with the Simulink model
1. In your MATLAB current folder, right-click the model
ToGrayScale.slx and click Open from the context menu. Drag the generated subsystem from the library to the model. Insert the subsystem between From Multimedia File block and Video Viewer block.
2. Double-click the subsystem and configure these parameter values:
3. Click Apply, and then click OK.
On the Simulink Toolstrip, in the Simulation tab, click on Run to simulate the model. After the simulation is complete, the Video Viewer block displays the grayscale image of the input image