This project has been updated and tested on Linux, Windows and MacOS. It is still very early in development, but it may provide a good template for anyone adding OpenCV to their GDExtensions. Go to the "Godot T5 OpenCV" YouTube channel for updates and news - https://www.youtube.com/channel/UC1Bt3NJuaLWa0KqJt91Bh4A
For a basic example of how to create a GDExtension, see the Godot documentation: https://docs.godotengine.org/en/4.2/tutorials/scripting/gdextension/gdextension_cpp_example.html#
For great videos on GDExtensions with C++, take a look at Mosen Zare's YouTube Tutorials: https://www.youtube.com/playlist?list=PLhixpuPeRv9aDdsZbhTpsXguYRvMgyVQ-
Please be aware that OpenCV may contain patents that require licensing or credit. Please do your own research before using it in a commercial scenario.
You can go to this Discord server to get involved with the project: https://discord.gg/mwS2sW6V5M
You will need to install the following (version numbers are the ones I have working correctly):
- Godot 4.2.2
- OpenCV 4.9.0
Copy the opencv.gdextension
file to demo/bin
.
You will need to manually copy the OpenCV files into the src
folder of this project and make sure SConstruct
references everything correctly. Pay particular attention to the following lines:
env.Append(CPPPATH=["src/", "src/opencv2/include"])
env.Append(LIBPATH=['src/opencv2/x64/vc16/lib'])
env.Append(LIBS=['opencv_world490', 'opencv_world490d'])
Make sure you include the godot-cpp
git submodule:
git submodule update --init
If a basic init doesn't work, you may need to do the following in the project root folder:
git submodule add -b 4.2 https://github.com/godotengine/godot-cpp
cd godot-cpp
git submodule update --init
To compile, make sure you are in the project root folder:
scons platform=windows disable_exceptions=false
To clean your build folder, use the --clean
argument, i.e.
scons platform=windows --clean
Run the extension from Godot. It is best to run Godot from the command line to capture any potential error messages that would normally be missed. For example, C++ cout
only outputs to the command line and not the Godot terminal.
Follow the Godot C++ GDExtension tutorial for details on how to test the GDExample
component.
Download OpenCV from the releases page and unpack.
Create a soft link src/opencv2
to the library folder opencv2.framework/Versions/Current/Header
.
Set the opencv_library_path
to point to your OpenCV library files (*.dylib).
To compile, make sure you are in the project root folder:
scons platform=macos arch=arm64 disable_exceptions=false
To run, make sure you include the DYLD_LIBRARY_PATH
to your opencv dylib files if they are not in a system Library folder (i.e. you built them from source). On the command line where you will run Godot from:
export DYLD_LIBRARY_PATH='/Users/matt/vscode/gto/build_opencv/lib'
If you don't, you may experience Error: dlopen
messages where the linker looks for files in the wrong place.
Start Godot from the command line:
cd demo
/Applications/Godot.app/Contents/MacOS/Godot -e
You may want to set some extra Godot parameters to start the editor somewhere convenient. For example:
/Applications/Godot\ 4.2.2.app/Contents/MacOS/Godot -e --screen 1 --position 0,0 -w --resolution 3240x2160
Intel setup is the same as for ARM, except the scons arch
parameter when compiling.
To compile, make sure you are in the project root folder:
scons platform=macos arch=x86_64 disable_exceptions=false
If you have trouble compiling or running the gdextension, here are some suggestions:
- Set up an independent OpenCV project to make sure the installed OpenCV library is working correctly.
- Make sure you have the SConstruct variables set up correctly. Pay particular attention to:
opencv_library_path
opencv_header_files
opencv_library_files
- Set your version of Godot and OpenCV to match the prerequisites specified above before switching to a different version.