diff --git a/.github/workflows/build-debian.yml b/.github/workflows/build-debian.yml index 7d354a45..0e9e00a3 100644 --- a/.github/workflows/build-debian.yml +++ b/.github/workflows/build-debian.yml @@ -43,7 +43,7 @@ jobs: # devscripts and libobs-dev are needed but they were already installed # from check_libobs_revision and install_frontend_header sections. sudo apt update - sudo apt install cmake debhelper libcurl4-openssl-dev libxss-dev libxtst-dev qtbase5-dev + sudo apt install cmake debhelper libcurl4-openssl-dev libxss-dev libxtst-dev qtbase5-dev libopencv-dev - name: build run: | debuild --no-lintian --no-sign diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 97ac6326..8043cf9c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -59,6 +59,15 @@ jobs: curl -L -O https://github.com/obsproject/obs-deps/releases/download/${{ env.MACOS_DEPS_VERSION }}/macos-qt-${{ env.QT_VERSION }}-${{ env.MACOS_DEPS_VERSION }}.tar.gz tar -xf ./macos-qt-${{ env.QT_VERSION }}-${{ env.MACOS_DEPS_VERSION }}.tar.gz -C "/tmp" xattr -r -d com.apple.quarantine /tmp/obsdeps + - name: 'Build prerequisite: OpenCV' + shell: bash + run: | + cd UI/frontend-plugins/${{ env.PLUGIN_NAME }}/deps/opencv + mkdir build + cd build + cmake -DBUILD_LIST="core,imgproc,objdetect" .. + make -j4 + make install - name: Configure shell: bash run: | @@ -171,7 +180,8 @@ jobs: qtbase5-private-dev \ libqt5svg5-dev \ swig \ - libxss-dev + libxss-dev \ + libopencv-dev - name: 'Configure' shell: bash run: | @@ -236,18 +246,34 @@ jobs: run: | curl -kLO https://cdn-fastly.obsproject.com/downloads/dependencies${{ env.WINDOWS_DEPS_VERSION }}.zip -f --retry 5 -C - 7z x dependencies${{ env.WINDOWS_DEPS_VERSION }}.zip -o"${{ github.workspace }}/cmbuild/deps" + - name: 'Build prerequisite: OpenCV' + run: | + cd UI/frontend-plugins/${{ env.PLUGIN_NAME }}/deps/opencv + mkdir build + cd build + if ( ${{ matrix.arch }} -eq 32 ) + { + cmake -G"${{ env.CMAKE_GENERATOR }}" -A"Win32" -DBUILD_LIST="core,imgproc,objdetect" .. + } + else + { + cmake -G"${{ env.CMAKE_GENERATOR }}" -A"x64" -DBUILD_LIST="core,imgproc,objdetect" .. + } + msbuild /m /p:Configuration=Release OpenCV.sln + msbuild INSTALL.vcxproj - name: Configure run: | mkdir ./package mkdir ./build${{ matrix.arch }} cd ./build${{ matrix.arch }} + Get-Location if ( ${{ matrix.arch }} -eq 32 ) { - cmake -G"${{ env.CMAKE_GENERATOR }}" -A"Win32" -DCMAKE_SYSTEM_VERSION="${{ env.CMAKE_SYSTEM_VERSION }}" -DBUILD_BROWSER=false -DBUILD_CAPTIONS=false -DCOMPILE_D3D12_HOOK=false -DDepsPath="${{ github.workspace }}/cmbuild/deps/win32" -DQTDIR="${{ github.workspace }}/cmbuild/QT/${{ env.QT_VERSION }}/msvc2017" -DCOPIED_DEPENDENCIES=FALSE -DCOPY_DEPENDENCIES=TRUE .. + cmake -G"${{ env.CMAKE_GENERATOR }}" -A"Win32" -DOpenCV_DIR="${{ github.workspace }}/UI/frontend-plugins/SceneSwitcher/deps/opencv/build/" -DCMAKE_SYSTEM_VERSION="${{ env.CMAKE_SYSTEM_VERSION }}" -DBUILD_BROWSER=false -DBUILD_CAPTIONS=false -DCOMPILE_D3D12_HOOK=false -DDepsPath="${{ github.workspace }}/cmbuild/deps/win32" -DQTDIR="${{ github.workspace }}/cmbuild/QT/${{ env.QT_VERSION }}/msvc2017" -DCOPIED_DEPENDENCIES=FALSE -DCOPY_DEPENDENCIES=TRUE .. } else { - cmake -G"${{ env.CMAKE_GENERATOR }}" -A"x64" -DCMAKE_SYSTEM_VERSION="${{ env.CMAKE_SYSTEM_VERSION }}" -DBUILD_BROWSER=false -DBUILD_CAPTIONS=false -DCOMPILE_D3D12_HOOK=false -DDepsPath="${{ github.workspace }}/cmbuild/deps/win64" -DQTDIR="${{ github.workspace }}/cmbuild/QT/${{ env.QT_VERSION }}/msvc2017_64" -DCOPIED_DEPENDENCIES=FALSE -DCOPY_DEPENDENCIES=TRUE .. + cmake -G"${{ env.CMAKE_GENERATOR }}" -A"x64" -DOpenCV_DIR="${{ github.workspace }}/UI/frontend-plugins/SceneSwitcher/deps/opencv/build/" -DCMAKE_SYSTEM_VERSION="${{ env.CMAKE_SYSTEM_VERSION }}" -DBUILD_BROWSER=false -DBUILD_CAPTIONS=false -DCOMPILE_D3D12_HOOK=false -DDepsPath="${{ github.workspace }}/cmbuild/deps/win64" -DQTDIR="${{ github.workspace }}/cmbuild/QT/${{ env.QT_VERSION }}/msvc2017_64" -DCOPIED_DEPENDENCIES=FALSE -DCOPY_DEPENDENCIES=TRUE .. } - name: Build run: | @@ -260,6 +286,7 @@ jobs: echo "FILE_NAME=${env:FILE_NAME}" >> ${env:GITHUB_ENV} robocopy .\build${{ matrix.arch }}\rundir\RelWithDebInfo\obs-plugins\${{ matrix.arch }}bit\ .\package\obs-plugins\${{ matrix.arch }}bit ${{ env.LIB_NAME }}.* /E /XF .gitignore robocopy .\build${{ matrix.arch }}\rundir\RelWithDebInfo\data\obs-plugins\${{ env.LIB_NAME }}\ .\package\data\obs-plugins\${{ env.LIB_NAME }}\ /E /XF .gitignore + cp UI/frontend-plugins/${{ env.PLUGIN_NAME }}/deps/opencv/build/bin/Release/*dll package/obs-plugins/${{ matrix.arch }}bit exit 0 - name: Publish zip if: success() diff --git a/CI/linux/debian/control b/CI/linux/debian/control index c357a29c..bb4a0c92 100644 --- a/CI/linux/debian/control +++ b/CI/linux/debian/control @@ -8,7 +8,8 @@ Build-Depends: cmake, libobs-dev, libxtst-dev, qtbase5-dev, - libxss-dev + libxss-dev, + libopencv-dev Standards-Version: 4.6.0 Homepage: https://obsproject.com/forum/resources/advanced-scene-switcher.395/ Rules-Requires-Root: no diff --git a/CI/macos/SceneSwitcher.pkgproj b/CI/macos/SceneSwitcher.pkgproj index 0a5aec9e..f04ef30e 100644 --- a/CI/macos/SceneSwitcher.pkgproj +++ b/CI/macos/SceneSwitcher.pkgproj @@ -46,6 +46,294 @@ UID 0 + + CHILDREN + + GID + 80 + PATH + ../../deps/opencv/build/lib/libopencv_objdetect.4.5.3.dylib + PATH_TYPE + 3 + PERMISSIONS + 493 + TYPE + 3 + UID + 0 + + + CHILDREN + + GID + 80 + PATH + ../../deps/opencv/build/lib/libopencv_features2d.4.5.dylib + PATH_TYPE + 3 + PERMISSIONS + 493 + TYPE + 3 + UID + 0 + + + CHILDREN + + GID + 80 + PATH + ../../deps/opencv/build/lib/libopencv_core.4.5.dylib + PATH_TYPE + 3 + PERMISSIONS + 493 + TYPE + 3 + UID + 0 + + + CHILDREN + + GID + 80 + PATH + ../../deps/opencv/build/lib/libopencv_calib3d.4.5.dylib + PATH_TYPE + 3 + PERMISSIONS + 493 + TYPE + 3 + UID + 0 + + + CHILDREN + + GID + 80 + PATH + ../../deps/opencv/build/lib/libopencv_calib3d.4.5.3.dylib + PATH_TYPE + 3 + PERMISSIONS + 493 + TYPE + 3 + UID + 0 + + + CHILDREN + + GID + 80 + PATH + ../../deps/opencv/build/lib/libopencv_imgproc.4.5.dylib + PATH_TYPE + 3 + PERMISSIONS + 493 + TYPE + 3 + UID + 0 + + + CHILDREN + + GID + 80 + PATH + ../../deps/opencv/build/lib/libopencv_features2d.4.5.3.dylib + PATH_TYPE + 3 + PERMISSIONS + 493 + TYPE + 3 + UID + 0 + + + CHILDREN + + GID + 80 + PATH + ../../deps/opencv/build/lib/libopencv_core.4.5.3.dylib + PATH_TYPE + 3 + PERMISSIONS + 493 + TYPE + 3 + UID + 0 + + + CHILDREN + + GID + 80 + PATH + ../../deps/opencv/build/lib/libopencv_flann.4.5.dylib + PATH_TYPE + 3 + PERMISSIONS + 493 + TYPE + 3 + UID + 0 + + + CHILDREN + + GID + 80 + PATH + ../../deps/opencv/build/lib/libopencv_calib3d.dylib + PATH_TYPE + 3 + PERMISSIONS + 493 + TYPE + 3 + UID + 0 + + + CHILDREN + + GID + 80 + PATH + ../../deps/opencv/build/lib/libopencv_objdetect.dylib + PATH_TYPE + 3 + PERMISSIONS + 493 + TYPE + 3 + UID + 0 + + + CHILDREN + + GID + 80 + PATH + ../../deps/opencv/build/lib/libopencv_imgproc.4.5.3.dylib + PATH_TYPE + 3 + PERMISSIONS + 493 + TYPE + 3 + UID + 0 + + + CHILDREN + + GID + 80 + PATH + ../../deps/opencv/build/lib/libopencv_flann.dylib + PATH_TYPE + 3 + PERMISSIONS + 493 + TYPE + 3 + UID + 0 + + + CHILDREN + + GID + 80 + PATH + ../../deps/opencv/build/lib/libopencv_imgproc.dylib + PATH_TYPE + 3 + PERMISSIONS + 493 + TYPE + 3 + UID + 0 + + + CHILDREN + + GID + 80 + PATH + ../../deps/opencv/build/lib/libopencv_flann.4.5.3.dylib + PATH_TYPE + 3 + PERMISSIONS + 493 + TYPE + 3 + UID + 0 + + + CHILDREN + + GID + 80 + PATH + ../../deps/opencv/build/lib/libopencv_features2d.dylib + PATH_TYPE + 3 + PERMISSIONS + 493 + TYPE + 3 + UID + 0 + + + CHILDREN + + GID + 80 + PATH + ../../deps/opencv/build/lib/libopencv_core.dylib + PATH_TYPE + 3 + PERMISSIONS + 493 + TYPE + 3 + UID + 0 + + + CHILDREN + + GID + 80 + PATH + ../../deps/opencv/build/lib/libopencv_objdetect.4.5.dylib + PATH_TYPE + 3 + PERMISSIONS + 493 + TYPE + 3 + UID + 0 + GID 80 diff --git a/CMakeLists.txt b/CMakeLists.txt index 47a20fea..286840e8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -165,9 +165,8 @@ if(WIN32) endif() # opencv -find_library(OPENCV_CORE opencv_core453d PATHS deps/opencv/build/install/x64/vc16/lib PATH_SUFFIXES lib) -find_library(OPENCV_IMGPROC opencv_imgproc453d PATHS deps/opencv/build/install/x64/vc16/lib PATH_SUFFIXES lib) -include_directories(deps/opencv/build/install/include) +find_package(OpenCV REQUIRED) +include_directories("${OpenCV_INCLUDE_DIRS}") # Setup QT tools set(CMAKE_AUTOMOC ON) @@ -357,8 +356,13 @@ add_library( # Out of tree build if(BUILD_OUT_OF_TREE) target_link_libraries( - advanced-scene-switcher ${advanced-scene-switcher_PLATFORM_LIBS} ${OPENCV_CORE} ${OPENCV_IMGPROC} - ${LIBOBS_LIB} ${LIBOBS_FRONTEND_API_LIB} Qt5::Core Qt5::Widgets) + advanced-scene-switcher + ${advanced-scene-switcher_PLATFORM_LIBS} + ${OpenCV_LIBRARIES} + ${LIBOBS_LIB} + ${LIBOBS_FRONTEND_API_LIB} + Qt5::Core + Qt5::Widgets) # Additional commands to install the module in the correct place. Find all the # translation files so we can copy them to the correct place later on. @@ -388,7 +392,11 @@ if(BUILD_OUT_OF_TREE) else() # In tree build target_link_libraries( - advanced-scene-switcher ${advanced-scene-switcher_PLATFORM_LIBS} ${OPENCV_CORE} ${OPENCV_IMGPROC} - obs-frontend-api Qt5::Widgets libobs) + advanced-scene-switcher + ${advanced-scene-switcher_PLATFORM_LIBS} + ${OpenCV_LIBRARIES} + obs-frontend-api + Qt5::Widgets + libobs) install_obs_plugin_with_data(advanced-scene-switcher data) endif()