Application of OpenCL for real-time image processing on embedded hardware. This work demonstrates the development of image processing methods such as grayscale conversion, edge-detection, and Gaussian blur. The outcome of this project is to highlight OpenCL's praticality for real-world scenarios.
OpenCL is typically packaged with graphic drivers from vendors like AMD, Intel, and NVIDIA. To ensure that OpenCL is properly installed on your system, install the latest graphic drivers on your device.
- For AMD GPUs, download drivers from the AMD website.
- For NVIDIA GPUs, download drivers from the NVIDIA website.
- For Intel GPUs, download drivers from the Intel website.
On Linux machines, it is recommended to install the ocl-icd-opencl-dev
package
sudo apt-get install ocl-icd-opencl-dev
All applications in this project utilises the OpenCV library. See the official OpenCV website.
Download the package from the official OpenCV website or its GitHub page.
On Linux machines, run the following command
sudo apt install libopencv-dev clinfo
Note
Ensure that CMake
is properly installed and added to the PATH
environment variable on your machine. See CMake official documentation.
This project is developed using visual studio code IDE. The CMake Tools extension is used extensively within the project development. It is highly recommended that users develop with VS code with this extension.
Important
Ensure that camera source is available (webcam or USB camera).
To run the RealtimeImageProcessing
application, run the following commands. This will build the RealtimeImageProcesing
apllication in Release
mode.
cmake -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE --no-warn-unused-cli -S . -B build
cmake --build build --config Release
cd .\build\src\RealtimeImageProcessing\Release
.\RealtimeImageProcessing.exe
cmake -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE --no-warn-unused-cli -S . -B build
cmake --build build --config Release
cd build/src/RealtimeImageProcessing/Release
./RealtimeImageProcessing