Schritt 6 von 7:
Damit man Source Code von GitHub kompilieren kann, braucht es neben dem Visual Studio 2022, den Qt-Entwicklertools und MSYS2 sowie YASM noch zwei weitere Module:
FFmpeg und OpenCV
Diese Anleitung geht davon aus, dass man bereits ein aktuelles Windows 11 und Visual Studio 2022 und alle nötigen Komponenten wie Qt-Entwicklertools, MSYS2 und YASM installiert und konfiguriert hat.
Schritt für Schritt-Anleitung für den Download und die Bereitstellung von OpenCV
1) Die Visual Studio Native Tools Kommandozeile für x64 öffnen, indem man in den installieren Apps nach
“x64 Native Tools Command Prompt for VS 2022”
sucht und diese Eintrag startet
2) Innerhalb der geöffneten VS-Kommandozeile öffnet man die MSYS2-Shell mit dem Kommandozeilen-Startbefehl C:\Dev\msys64\msys2_shell.cmd
(wichtig ist, dass die Batch-Datei vorher wie hier in Schritt #4 beschrieben angepasst wurde)
3) Für die Bereitstellung von OpenCV braucht es folgende Befehle, Zeile für Zeile mit Enter abgeschlossen:
(man kann diese Befehle nicht mit CTRL+C und CTRL+V copy / pasten. Einfügen muss man die Zeilen mit rechter Maustaste in der MSYS2-Kommandozeile und aus dem Kontext-Menu “Paste” oder mit Shift+Ins)
Wenn man vorher eben noch FFmpeg bereitgestellt hat hat, wechselt man aus dem \FFmpeg_build
-Verzeichnis einen Pfad höher mitcd ..
Dann folgen diese Befehle:git clone https://github.com/opencv/opencv
cd opencv
git checkout tags/4.10.0
cd ..
mkdir opencv_build
mkdir opencv_install
Hinweis zum Checkout mit tags:
Die aktuelle OpenCV-Tag-Version findet man online unter
https://github.com/opencv/opencv/tags
Am 23.09.2024 ist 4.10.0 aktuell
4) Der folgende angepasste Befehl entspricht nicht mehr 100% der Vorgabe in DEPENDENCIES.md, weil er wie auf GitHub angegeben schlicht nicht funktioniert.
Jede komplette Zeile endet mit einem Leerschlag und Backslash, ausgeführt werden alle Zeilen als 1 einziger Befehl.
Diesen Befehl komplett von cmake bis und mit “./opencv_build” kopieren und als Ganzes in MSYS2-Shell einfügen:cmake -G"Visual Studio 17 2022" \
-DBUILD_opencv_core:BOOL="1" \
-DBUILD_opencv_imgproc:BOOL="1" \
-DCMAKE_CONFIGURATION_TYPES:STRING="Debug;Release" \
-DBUILD_SHARED_LIBS:BOOL="0" \
-DBUILD_opencv_ml:BOOL="0" -DBUILD_opencv_dnn:BOOL="0" -DWITH_TIFF:BOOL="0" -Dthunder:BOOL="0" -DWITH_WIN32UI:BOOL="0" -Dnext:BOOL="0" -DWITH_JPEG:BOOL="0" -DWITH_EIGEN:BOOL="0" -DWITH_IMGCODEC_SUNRASTER:BOOL="0" -DBUILD_opencv_java_bindings_generator:BOOL="0" -DBUILD_OPENEXR:BOOL="0" -Dccitt:BOOL="0" -DWITH_LAPACK:BOOL="0" -DWITH_IMGCODEC_PFM:BOOL="0" -DCPACK_SOURCE_7Z:BOOL="0" -DWITH_WEBP:BOOL="0" -DUSE_WIN32_FILEIO:BOOL="0" -DCPACK_SOURCE_ZIP:BOOL="0" -DBUILD_TIFF:BOOL="0" -DBUILD_opencv_features2d:BOOL="0" -DCMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING="" -DWITH_QUIRC:BOOL="0" -DWITH_OPENCL:BOOL="0" -DBUILD_PROTOBUF:BOOL="0" -DVIDEOIO_ENABLE_PLUGINS:BOOL="0" -DBUILD_opencv_objdetect:BOOL="0" -DBUILD_opencv_ts:BOOL="0" -DBUILD_opencv_video:BOOL="0" -Dlzw:BOOL="0" -DWITH_OPENCL_D3D11_NV:BOOL="0" -DWITH_IPP:BOOL="0" -DCMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING="/INCREMENTAL:NO" -Dlogluv:BOOL="0" -DWITH_ITT:BOOL="0" -DBUILD_JAVA:BOOL="0" -Dmdi:BOOL="0" -DVIDEOIO_ENABLE_STRICT_PLUGIN_CHECK:BOOL="0" -DWITH_VTK:BOOL="0" -DENABLE_SOLUTION_FOLDERS:BOOL="0" -DBUILD_opencv_gapi:BOOL="0" -DBUILD_ZLIB:BOOL="0" -DBUILD_PACKAGE:BOOL="0" -DBUILD_WEBP:BOOL="0" -DWITH_OPENJPEG:BOOL="0" -DCPACK_BINARY_NSIS:BOOL="0" -DBUILD_opencv_python_tests:BOOL="0" -DWITH_FFMPEG:BOOL="0" -DWITH_MSMF_DXVA:BOOL="0" -DWITH_MSMF:BOOL="0" -DWITH_PROTOBUF:BOOL="0" -DCMAKE_RC_FLAGS_RELEASE:STRING="" -DBUILD_JPEG:BOOL="0" -DWITH_1394:BOOL="0" -DBUILD_opencv_flann:BOOL="0" -DBUILD_opencv_python_bindings_generator:BOOL="0" -DWITH_JASPER:BOOL="0" -DWITH_OPENCLAMDFFT:BOOL="0" -DWITH_GSTREAMER:BOOL="0" -DWITH_IMGCODEC_PXM:BOOL="0" -DBUILD_opencv_imgcodecs:BOOL="0" -Dpackbits:BOOL="0" -DBUILD_opencv_highgui:BOOL="0" -DCMAKE_RC_FLAGS:STRING="-DWIN32" -DBUILD_OPENJPEG:BOOL="0" -DBUILD_opencv_videoio:BOOL="0" -DBUILD_WITH_STATIC_CRT:BOOL="0" -DBUILD_PERF_TESTS:BOOL="0" -DOPENCV_ENABLE_ALLOCATOR_STATS:BOOL="1" -DWITH_DIRECTX:BOOL="0" -DWITH_IMGCODEC_HDR:BOOL="0" -DBUILD_opencv_objc_bindings_generator:BOOL="0" -DBUILD_TESTS:BOOL="0" -DWITH_ADE:BOOL="0" -DBUILD_IPP_IW:BOOL="0" -DBUILD_JASPER:BOOL="0" -DWITH_OPENCLAMDBLAS:BOOL="0" -DBUILD_PNG:BOOL="0" -DBUILD_opencv_stitching:BOOL="0" -DWITH_PNG:BOOL="0" -DOPENCV_DNN_OPENCL:BOOL="0" -DWITH_OPENEXR:BOOL="0" -DWITH_DSHOW:BOOL="0" -DBUILD_opencv_calib3d:BOOL="0" -DBUILD_opencv_js_bindings_generator:BOOL="0" -DWITH_ARITH_ENC:BOOL="0" -DBUILD_opencv_photo:BOOL="0" -DBUILD_ITT:BOOL="0" -DWITH_ARITH_DEC:BOOL="0" -DBUILD_opencv_apps:BOOL="0" \
-S "./opencv" \
-B "./opencv_build"
Die Bereitstellung dauert rund eine halbe Minute.
5) Folgende Befehle für die beiden Varianten release und debug verwenden:cd opencv_build
cmake --build . --target install --config release
cmake --build . --target install --config debug
Das erstellt die benötigten kompilierten Dateien inC:\Dev\msys64\home\QT\opencv_build\install\include\opencv2
C:\Dev\msys64\home\QT\opencv_build\install\x64\vc17\staticlib
Der Windows-Benutzer heisst hier in diesem Beispiel “QT”.
6) Die in Schritt #5 erstellten Verzeichnisse und Dateien kopiert man komplett in folgende zwei ausgepackte Source Code-Projektordner (siehe auch Auspack-Schritt #7 für FFmpeg).C:\Users\QT\Downloads\video-simili-duplicate-cleaner-master\QtProject\libraries\windows\opencv\include
undC:\Users\QT\Downloads\video-simili-duplicate-cleaner-master\QtProject\libraries\windows\opencv\lib
Damit hat man neben FFmpeg auch die benötigten OpenCV-Dateien bereitgestellt und kann nun das Tool “Video simili duplicate cleaner” selber zu einem unter Windows ausführbaren *.exe kompilieren.