pkgsrc-WIP-changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

digikam: current pkgsrc version with additional OpenCV 5 patch



Module Name:	pkgsrc-wip
Committed By:	Thomas Klausner <wiz%NetBSD.org@localhost>
Pushed By:	wiz
Date:		Mon Nov 9 22:41:59 2026 +0100
Changeset:	5c9a2c411b69e82cf5053a7bdddd9773157832a6

Modified Files:
	digikam/Makefile
	digikam/PLIST
	digikam/distinfo
Added Files:
	digikam/patches/patch-core_app_utils_digikam__opencv.h.cmake.in
	digikam/patches/patch-core_libs_dimg_filters_nr_nrestimate.cpp
	digikam/patches/patch-core_libs_dnnmodelmanager_dnnmodelbase.cpp
	digikam/patches/patch-core_libs_facesengine_recognition_faceclassifier.cpp
	digikam/patches/patch-core_libs_qtopencvimg_qtopencvimg.cpp

Log Message:
digikam: current pkgsrc version with additional OpenCV 5 patch

Incomplete, still doesn't compile.

To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=5c9a2c411b69e82cf5053a7bdddd9773157832a6

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

diffstat:
 digikam/Makefile                                   |  18 +-
 digikam/PLIST                                      |  21 +-
 digikam/distinfo                                   |  13 +-
 ...patch-core_app_utils_digikam__opencv.h.cmake.in |  27 +++
 .../patch-core_libs_dimg_filters_nr_nrestimate.cpp | 213 +++++++++++++++++++++
 ...atch-core_libs_dnnmodelmanager_dnnmodelbase.cpp |  17 ++
 ...libs_facesengine_recognition_faceclassifier.cpp |  16 ++
 .../patch-core_libs_qtopencvimg_qtopencvimg.cpp    | 145 ++++++++++++++
 8 files changed, 444 insertions(+), 26 deletions(-)

diffs:
diff --git a/digikam/Makefile b/digikam/Makefile
index 36ff05390a..32bc75cde9 100644
--- a/digikam/Makefile
+++ b/digikam/Makefile
@@ -1,7 +1,8 @@
-# $NetBSD: Makefile,v 1.245 2025/02/12 06:45:07 ryoon Exp $
+# $NetBSD: Makefile,v 1.289 2026/11/08 15:43:57 wiz Exp $
 
-DISTNAME=	digiKam-8.7.0
-PKGNAME=	${DISTNAME:tl:S/m-/m-qt6-/}
+DISTNAME=	digiKam-9.1.0
+PKGNAME=	${DISTNAME:tl}
+PKGREVISION=	14
 CATEGORIES=	graphics
 MASTER_SITES=	${MASTER_SITE_KDE:=digikam/${PKGVERSION_NOREV}/}
 
@@ -14,8 +15,6 @@ DEPENDS+=	p5-Image-ExifTool-[0-9]*:../../graphics/p5-Image-ExifTool
 
 WRKSRC=		${WRKDIR}/${DISTNAME:tl}
 
-CONFLICTS+=		digikam-[0-9]*
-
 .include "../../meta-pkgs/kde/applications.mk"
 
 REPLACE_PERL=	core/data/scripts/digitaglinktree/digitaglinktree
@@ -26,6 +25,10 @@ CMAKE_CONFIGURE_ARGS+=	-DENABLE_KFILEMETADATASUPPORT=ON
 
 USE_TOOLS+=	flex bison msgmerge perl:run pkg-config
 
+# not a shell script, '==' is correct
+# see https://techbase.kde.org/Development/Tutorials/Solid/Device_Actions
+CHECK_PORTABILITY_SKIP+=	core/data/hotplug/digikam-opencamera.desktop.cmake.in
+
 .include "../../devel/boost-libs/buildlink3.mk"
 .include "../../devel/libgphoto2/buildlink3.mk"
 .include "../../devel/zlib/buildlink3.mk"
@@ -42,7 +45,8 @@ USE_TOOLS+=	flex bison msgmerge perl:run pkg-config
 .include "../../graphics/opencv-contrib-face/buildlink3.mk"
 .include "../../graphics/tiff/buildlink3.mk"
 .include "../../math/eigen3/buildlink3.mk"
-.include "../../multimedia/ffmpeg7/buildlink3.mk"
+#.include "../../multimedia/ffmpeg7/buildlink3.mk"
+.include "../../multimedia/ffmpeg8/buildlink3.mk"
 .include "../../multimedia/x265/buildlink3.mk"
 .include "../../sysutils/desktop-file-utils/desktopdb.mk"
 .include "../../textproc/libxslt/buildlink3.mk"
@@ -67,7 +71,7 @@ USE_TOOLS+=	flex bison msgmerge perl:run pkg-config
 .include "../../devel/kf6-threadweaver/buildlink3.mk"
 .include "../../devel/kf6-knotifyconfig/buildlink3.mk"
 .include "../../devel/kf6-knotifications/buildlink3.mk"
+.include "../../graphics/libksane/buildlink3.mk"
 .include "../../sysutils/kf6-kfilemetadata/buildlink3.mk"
-# TODO: pkgsrc has no package providing KSaneWidgets6Config.cmake
 .include "../../time/kf6-kcalendarcore/buildlink3.mk"
 .include "../../mk/bsd.pkg.mk"
diff --git a/digikam/PLIST b/digikam/PLIST
index 0368fd41c8..5d74d51ec6 100644
--- a/digikam/PLIST
+++ b/digikam/PLIST
@@ -1,4 +1,4 @@
-@comment $NetBSD$
+@comment $NetBSD: PLIST,v 1.45 2026/03/09 17:51:13 wiz Exp $
 bin/cleanup_digikamdb
 bin/digikam
 bin/digitaglinktree
@@ -106,13 +106,13 @@ include/digikam/metaenginesettings.h
 include/digikam/metaenginesettingscontainer.h
 include/digikam/modelcompleter.h
 include/digikam/photoinfocontainer.h
-include/digikam/previewlayout.h
 include/digikam/previewloadthread.h
 include/digikam/previewsettings.h
 include/digikam/previewtoolbar.h
 include/digikam/queuesettings.h
 include/digikam/rginfo.h
 include/digikam/searchtextbar.h
+include/digikam/singlephotopreviewlayout.h
 include/digikam/statesavingobject.h
 include/digikam/thumbnailinfo.h
 include/digikam/thumbnailloadthread.h
@@ -208,6 +208,7 @@ qt6/plugins/digikam/editor/Editor_AntivignettingTool_Plugin.so
 qt6/plugins/digikam/editor/Editor_AutoCorrectionTool_Plugin.so
 qt6/plugins/digikam/editor/Editor_AutoCropTool_Plugin.so
 qt6/plugins/digikam/editor/Editor_BWSepiaTool_Plugin.so
+qt6/plugins/digikam/editor/Editor_BackgroundBlurTool_Plugin.so
 qt6/plugins/digikam/editor/Editor_BcgTool_Plugin.so
 qt6/plugins/digikam/editor/Editor_BlurFxTool_Plugin.so
 qt6/plugins/digikam/editor/Editor_BlurTool_Plugin.so
@@ -249,6 +250,7 @@ qt6/plugins/digikam/editor/Editor_WhiteBalanceTool_Plugin.so
 qt6/plugins/digikam/generic/Generic_Box_Plugin.so
 qt6/plugins/digikam/generic/Generic_Calendar_Plugin.so
 qt6/plugins/digikam/generic/Generic_DNGConverter_Plugin.so
+qt6/plugins/digikam/generic/Generic_DigitalScanner_Plugin.so
 qt6/plugins/digikam/generic/Generic_DropBox_Plugin.so
 qt6/plugins/digikam/generic/Generic_ExpoBlending_Plugin.so
 qt6/plugins/digikam/generic/Generic_FileCopy_Plugin.so
@@ -305,15 +307,6 @@ qt6/plugins/digikam/rawimport/RawImport_RawTherapee_Plugin.so
 qt6/plugins/digikam/rawimport/RawImport_UFRaw_Plugin.so
 share/applications/org.kde.digikam.desktop
 share/applications/org.kde.showfoto.desktop
-share/digikam/about/css/bootstrap-theme.min.css
-share/digikam/about/css/bootstrap.min.css
-share/digikam/about/css/digikam.css
-share/digikam/about/images/body-background.webp
-share/digikam/about/images/top-left-digikam.webp
-share/digikam/about/js/bootstrap.min.js
-share/digikam/about/js/digikam.js
-share/digikam/about/js/jquery.min.js
-share/digikam/about/main.html
 share/digikam/colorschemes/blackbody.colors
 share/digikam/colorschemes/colorcontrast.colors
 share/digikam/colorschemes/darkroom.colors
@@ -329,8 +322,8 @@ share/digikam/data/assistant-hugin.webp
 share/digikam/data/assistant-preprocessing.webp
 share/digikam/data/assistant-stack.webp
 share/digikam/data/assistant-tripod.webp
-share/digikam/data/banner-digikam.webp
 share/digikam/data/bluejean-texture.webp
+share/digikam/data/body-background.webp
 share/digikam/data/bothhorz.png
 share/digikam/data/bothvert.png
 share/digikam/data/bricks-texture.webp
@@ -1920,7 +1913,6 @@ share/icons/hicolor/32x32/actions/albumfolder-importdir.png
 share/icons/hicolor/32x32/actions/albumfolder-importimages.png
 share/icons/hicolor/32x32/actions/albumfolder-new.png
 share/icons/hicolor/32x32/actions/albumfolder-properties.png
-share/icons/hicolor/32x32/actions/overexposure.png
 share/icons/hicolor/32x32/actions/tag-addresbook.png
 share/icons/hicolor/32x32/actions/tag-assigned.png
 share/icons/hicolor/32x32/actions/tag-delete.png
@@ -1933,7 +1925,6 @@ share/icons/hicolor/32x32/actions/tag-properties.png
 share/icons/hicolor/32x32/actions/tag-recents.png
 share/icons/hicolor/32x32/actions/tag-reset.png
 share/icons/hicolor/32x32/actions/tag.png
-share/icons/hicolor/32x32/actions/underexposure.png
 share/icons/hicolor/32x32/apps/digikam.png
 share/icons/hicolor/32x32/apps/dk-box.png
 share/icons/hicolor/32x32/apps/dk-dropbox.png
@@ -1987,6 +1978,7 @@ share/kxmlgui5/digikam/imageeditorui5.rc
 share/kxmlgui5/digikam/importui5.rc
 share/kxmlgui5/digikam/lighttablewindowui5.rc
 share/kxmlgui5/digikam/queuemgrwindowui5.rc
+share/kxmlgui5/digikam/surveywindowui5.rc
 share/kxmlgui5/showfoto/showfotoui5.rc
 share/locale/ar/LC_MESSAGES/digikam.mo
 share/locale/be/LC_MESSAGES/digikam.mo
@@ -2051,7 +2043,6 @@ share/locale/zh_CN/LC_MESSAGES/digikam.mo
 share/locale/zh_TW/LC_MESSAGES/digikam.mo
 share/metainfo/org.kde.digikam.appdata.xml
 share/metainfo/org.kde.showfoto.appdata.xml
-share/showfoto/data/banner-showfoto.webp
 share/showfoto/data/logo-showfoto.webp
 share/showfoto/data/splash-showfoto.webp
 share/solid/actions/digikam-opencamera.desktop
diff --git a/digikam/distinfo b/digikam/distinfo
index d14ec998bd..bf00c6cd20 100644
--- a/digikam/distinfo
+++ b/digikam/distinfo
@@ -1,5 +1,10 @@
-$NetBSD: distinfo,v 1.64 2025/02/07 21:58:54 wiz Exp $
+$NetBSD: distinfo,v 1.71 2026/06/18 08:48:10 wiz Exp $
 
-BLAKE2s (digiKam-8.7.0.tar.xz) = 660aef183ea7077784cdb9b69904d721403e5ff81960e7e964c915b2075b3d7c
-SHA512 (digiKam-8.7.0.tar.xz) = a055b582197aeb4ac1f0f037300f5fb136949047c317865c89d30b39e5114cf2cca087acc7f0196e39b43c3be5ea4623261a6e7b6a52b843d266b4cbf261addd
-Size (digiKam-8.7.0.tar.xz) = 55060536 bytes
+BLAKE2s (digiKam-9.1.0.tar.xz) = 7c0946c0eb3874a3561f1d24b73cefa55d025b928488e4a2fb62e114e9038557
+SHA512 (digiKam-9.1.0.tar.xz) = ab083cbde1f3e243a8766b8fe5ea256d32877ff7f2e048349fb063e1ca90b0395eee16028466516a9ab74f10582a413bfc9d64392a4b25b33e45b70ca34f5cd6
+Size (digiKam-9.1.0.tar.xz) = 73714208 bytes
+SHA1 (patch-core_app_utils_digikam__opencv.h.cmake.in) = 792bc24e0832ce95094cf5f1319c47fc2121cf14
+SHA1 (patch-core_libs_dimg_filters_nr_nrestimate.cpp) = 44ed751ec5189e67495e6834236b45e202eb6409
+SHA1 (patch-core_libs_dnnmodelmanager_dnnmodelbase.cpp) = 508a292ab6e7b9ff06eb9e3861478d0bb5dcdedb
+SHA1 (patch-core_libs_facesengine_recognition_faceclassifier.cpp) = 472231a8d34351310e99f7a7e1c7d817b55c4132
+SHA1 (patch-core_libs_qtopencvimg_qtopencvimg.cpp) = b4b78be86f55cd596fa69360890cd94bbc733393
diff --git a/digikam/patches/patch-core_app_utils_digikam__opencv.h.cmake.in b/digikam/patches/patch-core_app_utils_digikam__opencv.h.cmake.in
new file mode 100644
index 0000000000..6e5c3f2222
--- /dev/null
+++ b/digikam/patches/patch-core_app_utils_digikam__opencv.h.cmake.in
@@ -0,0 +1,27 @@
+$NetBSD$
+
+OpenCV 5 support.
+https://invent.kde.org/graphics/digikam/-/commit/abcadfdc91601fe410c67f4abba87117e81aad3e
+
+--- core/app/utils/digikam_opencv.h.cmake.in.orig	2026-06-07 15:07:03.000000000 +0000
++++ core/app/utils/digikam_opencv.h.cmake.in
+@@ -55,8 +55,6 @@
+ #include <opencv2/core.hpp>
+ #include <opencv2/core/utility.hpp>
+ #include <opencv2/core/persistence.hpp>
+-#include <opencv2/core/core_c.h>
+-#include <opencv2/core/types_c.h>
+ #include <opencv2/core/ocl.hpp>
+ 
+ // Image codecs module headers
+@@ -70,7 +68,9 @@
+ // Image processing module headers
+ 
+ #include <opencv2/imgproc.hpp>
+-#include <opencv2/imgproc/types_c.h>
++#if !OPENCV_TEST_VERSION(5,0,0)
++#include <opencv2/geometry/2d.hpp>
++#endif
+ 
+ // Shape detection/recognition module headers
+ 
diff --git a/digikam/patches/patch-core_libs_dimg_filters_nr_nrestimate.cpp b/digikam/patches/patch-core_libs_dimg_filters_nr_nrestimate.cpp
new file mode 100644
index 0000000000..6475a1ceac
--- /dev/null
+++ b/digikam/patches/patch-core_libs_dimg_filters_nr_nrestimate.cpp
@@ -0,0 +1,213 @@
+$NetBSD$
+
+OpenCV 5 support.
+https://invent.kde.org/graphics/digikam/-/commit/abcadfdc91601fe410c67f4abba87117e81aad3e
+
+--- core/libs/dimg/filters/nr/nrestimate.cpp.orig	2026-06-07 15:07:03.000000000 +0000
++++ core/libs/dimg/filters/nr/nrestimate.cpp
+@@ -115,7 +115,7 @@ void NREstimate::startAnalyse()
+     readImage();
+     postProgress(5);
+ 
+-    //--convert fimg to CvMat*-------------------------------------------------------------------------------
++    //--convert fimg to Cv::Mat*-------------------------------------------------------------------------------
+ 
+     // convert the image into YCrCb color model
+ 
+@@ -123,15 +123,15 @@ void NREstimate::startAnalyse()
+ 
+     // One dimensional CvMat which stores the image
+ 
+-    CvMat* points    = cvCreateMat(m_orgImage.numPixels(), 3, CV_32FC1);
++    cv::Mat points    = cv::Mat(m_orgImage.numPixels(), 3, CV_32FC1);
+ 
+     // matrix to store the index of the clusters
+ 
+-    CvMat* clusters  = cvCreateMat(m_orgImage.numPixels(), 1, CV_32SC1);
++    cv::Mat clusters  = cv::Mat(m_orgImage.numPixels(), 1, CV_32SC1);
+ 
+     // pointer variable to handle the CvMat* points (the image in CvMat format)
+ 
+-    float* pointsPtr = reinterpret_cast<float*>(points->data.ptr);
++    float* pointsPtr = reinterpret_cast<float*>(points.data);
+ 
+     for (uint x = 0 ; runningFlag() && (x < m_orgImage.numPixels()) ; ++x)
+     {
+@@ -141,19 +141,15 @@ void NREstimate::startAnalyse()
+         }
+     }
+ 
+-    // Array to store the centers of the clusters
+-
+-    CvArr* centers = nullptr;
+-
+     qCDebug(DIGIKAM_DIMG_LOG) << "Everything ready for the cvKmeans2 or as it seems to";
+     postProgress(10);
+ 
+     //-- KMEANS ---------------------------------------------------------------------------------------------
+ 
+-    cvKMeans2(points, d->clusterCount, clusters,
+-              cvTermCriteria(CV_TERMCRIT_EPS + CV_TERMCRIT_ITER, 10, 1.0), 3, nullptr, 0, centers, nullptr);
++    cv::kmeans(points, d->clusterCount, clusters,
++              cv::TermCriteria(cv::TermCriteria::EPS + cv::TermCriteria::MAX_ITER, 10, 1.0), 3, cv::KMEANS_PP_CENTERS);
+ 
+-    qCDebug(DIGIKAM_DIMG_LOG) << "cvKmeans2 successfully run";
++    qCDebug(DIGIKAM_DIMG_LOG) << "cv::kmeans successfully run";
+     postProgress(15);
+ 
+     //-- Divide into cluster->columns, sample->rows, in matrix standard deviation ---------------------------
+@@ -174,7 +170,7 @@ void NREstimate::startAnalyse()
+ 
+     for (uint i = 0 ; runningFlag() && (i < m_orgImage.numPixels()) ; ++i)
+     {
+-        columnIndex = clusters->data.i[i];
++        columnIndex = clusters.at<int>(i);
+         rowPosition[columnIndex]++;
+     }
+ 
+@@ -210,7 +206,7 @@ void NREstimate::startAnalyse()
+ 
+     //-- Divide and conquer ---------------------------------------------------------------------------------
+ 
+-    CvMat* sd = cvCreateMat(max, (d->clusterCount * points->cols), CV_32FC1);
++    cv::Mat sd = cv::Mat(max, (d->clusterCount * points.cols), CV_32FC1);
+ 
+     postProgress(30);
+ 
+@@ -230,26 +226,26 @@ void NREstimate::startAnalyse()
+ 
+     for (uint i = 0 ; runningFlag() && (i < m_orgImage.numPixels()) ; ++i)
+     {
+-        columnIndex = clusters->data.i[i];
++        columnIndex = clusters.at<int>(i);
+         rowIndex    = rPosition[columnIndex];
+ 
+         // moving to the right row
+ 
+-        ptr         = reinterpret_cast<float*>(sd->data.ptr + rowIndex*(sd->step));
++        ptr         = reinterpret_cast<float*>(sd.data + rowIndex*(sd.step));
+ 
+         // moving to the right column
+ 
+         for (int j = 0 ; runningFlag() && (j < columnIndex) ; ++j)
+         {
+-            for (int z = 0 ; runningFlag() && (z < (points->cols)) ; ++z)
++            for (int z = 0 ; runningFlag() && (z < (points.cols)) ; ++z)
+             {
+                 ptr++;
+             }
+         }
+ 
+-        for (int z = 0 ; runningFlag() && (z < (points->cols)) ; ++z)
++        for (int z = 0 ; runningFlag() && (z < (points.cols)) ; ++z)
+         {
+-            *ptr++ = cvGet2D(points, i, z).val[0];
++            *ptr++ = points.at<float>(i, z);
+         }
+ 
+         rPosition[columnIndex] = rPosition[columnIndex] + 1;
+@@ -260,33 +256,32 @@ void NREstimate::startAnalyse()
+ 
+     //-- This part of the code would involve the sd matrix and make the mean and the std of the data -------------------
+ 
+-    CvScalar std;
+-    CvScalar mean;
++    cv::Scalar std;
++    cv::Scalar mean;
+     int      totalcount = 0; // Number of non-empty clusters
+-    CvMat* meanStore    = cvCreateMat(d->clusterCount, points->cols, CV_32FC1);
+-    CvMat* stdStore     = cvCreateMat(d->clusterCount, points->cols, CV_32FC1);
+-    float* meanStorePtr = reinterpret_cast<float*>(meanStore->data.ptr);
+-    float* stdStorePtr  = reinterpret_cast<float*>(stdStore->data.ptr);
++    cv::Mat meanStore    = cv::Mat(d->clusterCount, points.cols, CV_32FC1);
++    cv::Mat stdStore     = cv::Mat(d->clusterCount, points.cols, CV_32FC1);
++    float* meanStorePtr = reinterpret_cast<float*>(meanStore.data);
++    float* stdStorePtr  = reinterpret_cast<float*>(stdStore.data);
+ 
+-    for (int i = 0 ; runningFlag() && (i < sd->cols) ; ++i)
++    for (int i = 0 ; runningFlag() && (i < sd.cols) ; ++i)
+     {
+         // cppcheck-suppress knownConditionTrueFalse
+-        if (runningFlag() && (rowPosition[(i/points->cols)] >= 1))
++        if (runningFlag() && (rowPosition[(i/points.cols)] >= 1))
+         {
+-            CvMat* workingArr = cvCreateMat(rowPosition[(i / points->cols)], 1, CV_32FC1);
+-            ptr               = reinterpret_cast<float*>(workingArr->data.ptr);
++            cv::Mat workingArr = cv::Mat(rowPosition[(i / points.cols)], 1, CV_32FC1);
++            ptr               = reinterpret_cast<float*>(workingArr.data);
+ 
+             // cppcheck-suppress knownConditionTrueFalse
+-            for (int j = 0 ; runningFlag() && (j < rowPosition[(i / (points->cols))]) ; ++j)
++            for (int j = 0 ; runningFlag() && (j < rowPosition[(i / (points.cols))]) ; ++j)
+             {
+-                *ptr++ = cvGet2D(sd, j, i).val[0];
++                *ptr++ = sd.at<float>(j, i);
+             }
+ 
+-            cvAvgSdv(workingArr, &mean, &std);
++            cv::meanStdDev(workingArr, mean, std);
+             *meanStorePtr++ = (float)mean.val[0];
+             *stdStorePtr++  = (float)std.val[0];
+             totalcount++;
+-            cvReleaseMat(&workingArr);
+         }
+     }
+ 
+@@ -295,8 +290,8 @@ void NREstimate::startAnalyse()
+ 
+     // -----------------------------------------------------------------------------------------------------------------
+ 
+-    meanStorePtr = reinterpret_cast<float*>(meanStore->data.ptr);
+-    stdStorePtr  = reinterpret_cast<float*>(stdStore->data.ptr);
++    meanStorePtr = reinterpret_cast<float*>(meanStore.data);
++    stdStorePtr  = reinterpret_cast<float*>(stdStore.data);
+ 
+     if (runningFlag() && !d->path.isEmpty())
+     {
+@@ -367,10 +362,10 @@ void NREstimate::startAnalyse()
+     float   weightedStd  = 0.0f;
+     float   datasd[3]    = {0.0f, 0.0f, 0.0f};
+ 
+-    for (int j = 0 ; runningFlag() && (j < points->cols) ; ++j)
++    for (int j = 0 ; runningFlag() && (j < points.cols) ; ++j)
+     {
+-        meanStorePtr = reinterpret_cast<float*>(meanStore->data.ptr);
+-        stdStorePtr  = reinterpret_cast<float*>(stdStore->data.ptr);
++        meanStorePtr = reinterpret_cast<float*>(meanStore.data);
++        stdStorePtr  = reinterpret_cast<float*>(stdStore.data);
+ 
+         for (int moveToChannel = 0 ; moveToChannel <= j ; ++moveToChannel)
+         {
+@@ -384,8 +379,8 @@ void NREstimate::startAnalyse()
+             {
+                 weightedMean += (*meanStorePtr) * rowPosition[i];
+                 weightedStd  += (*stdStorePtr)  * rowPosition[i];
+-                meanStorePtr += points->cols;
+-                stdStorePtr  += points->cols;
++                meanStorePtr += points.cols;
++                stdStorePtr  += points.cols;
+             }
+         }
+ 
+@@ -431,7 +426,7 @@ void NREstimate::startAnalyse()
+ 
+         if (m_orgImage.sixteenBit())
+         {
+-            for (int i = 0 ; i < points->cols ; ++i)
++            for (int i = 0 ; i < points.cols ; ++i)
+             {
+                 if (i < 3)
+                 {
+@@ -513,12 +508,6 @@ void NREstimate::startAnalyse()
+     postProgress(90);
+ 
+     //-- releasing matrices and closing files ----------------------------------------------------------------------
+-
+-    cvReleaseMat(&sd);
+-    cvReleaseMat(&stdStore);
+-    cvReleaseMat(&meanStore);
+-    cvReleaseMat(&points);
+-    cvReleaseMat(&clusters);
+ 
+     for (uint i = 0 ; i < 3 ; ++i)
+     {
diff --git a/digikam/patches/patch-core_libs_dnnmodelmanager_dnnmodelbase.cpp b/digikam/patches/patch-core_libs_dnnmodelmanager_dnnmodelbase.cpp
new file mode 100644
index 0000000000..80705bcd73
--- /dev/null
+++ b/digikam/patches/patch-core_libs_dnnmodelmanager_dnnmodelbase.cpp
@@ -0,0 +1,17 @@
+$NetBSD$
+
+OpenCV 5 support.
+https://invent.kde.org/graphics/digikam/-/commit/abcadfdc91601fe410c67f4abba87117e81aad3e
+
+--- core/libs/dnnmodelmanager/dnnmodelbase.cpp.orig	2026-06-07 15:07:03.000000000 +0000
++++ core/libs/dnnmodelmanager/dnnmodelbase.cpp
+@@ -113,7 +113,9 @@ const QPair<int, int> DNNModelBase::getBackendAndTarge
+     const std::map<std::string, int> str2backend
+     {
+         { "default",     cv::dnn::DNN_BACKEND_DEFAULT          },
++#if OPENCV_TEST_VERSION(5,0,0)
+         { "halide",      cv::dnn::DNN_BACKEND_HALIDE           },
++#endif
+         { "ie",          cv::dnn::DNN_BACKEND_INFERENCE_ENGINE },
+         { "opencv",      cv::dnn::DNN_BACKEND_OPENCV           },
+         { "cuda",        cv::dnn::DNN_BACKEND_CUDA             }
diff --git a/digikam/patches/patch-core_libs_facesengine_recognition_faceclassifier.cpp b/digikam/patches/patch-core_libs_facesengine_recognition_faceclassifier.cpp
new file mode 100644
index 0000000000..7533fffcbb
--- /dev/null
+++ b/digikam/patches/patch-core_libs_facesengine_recognition_faceclassifier.cpp
@@ -0,0 +1,16 @@
+$NetBSD$
+
+OpenCV 5 support.
+https://invent.kde.org/graphics/digikam/-/commit/abcadfdc91601fe410c67f4abba87117e81aad3e
+
+--- core/libs/facesengine/recognition/faceclassifier.cpp.orig	2026-06-07 15:07:03.000000000 +0000
++++ core/libs/facesengine/recognition/faceclassifier.cpp
+@@ -215,7 +215,7 @@ cv::Ptr<cv::ml::SVM> FaceClassifier::createSVM(int ite
+     cvClassifier->setKernel(d->svm_kernel);
+     cvClassifier->setGamma(d->svm_gamma);
+     cvClassifier->setC(d->svm_C);
+-    cvClassifier->setTermCriteria(cvTermCriteria(
++    cvClassifier->setTermCriteria(cv::TermCriteria(
+                                                  cv::TermCriteria::Type::MAX_ITER + cv::TermCriteria::Type::EPS,
+                                                  iterations,
+                                                  d->svm_epsilon
diff --git a/digikam/patches/patch-core_libs_qtopencvimg_qtopencvimg.cpp b/digikam/patches/patch-core_libs_qtopencvimg_qtopencvimg.cpp
new file mode 100644
index 0000000000..ddbc7c6596
--- /dev/null
+++ b/digikam/patches/patch-core_libs_qtopencvimg_qtopencvimg.cpp
@@ -0,0 +1,145 @@
+$NetBSD$
+
+OpenCV 5 support.
+https://invent.kde.org/graphics/digikam/-/commit/abcadfdc91601fe410c67f4abba87117e81aad3e
+
+--- core/libs/qtopencvimg/qtopencvimg.cpp.orig	2026-06-07 15:07:03.000000000 +0000
++++ core/libs/qtopencvimg/qtopencvimg.cpp
+@@ -97,7 +97,7 @@ cv::Mat QtOpenCVImg::adjustChannelsOrder(const cv::Mat
+         {
+             // BGRA <==> RBGA
+ 
+-            cv::cvtColor(srcMat, desMat, CV_BGRA2RGBA);
++            cv::cvtColor(srcMat, desMat, cv::ColorConversionCodes::COLOR_BGRA2RGBA);
+         }
+     }
+     catch (cv::Exception& e)
+@@ -279,11 +279,11 @@ cv::Mat QtOpenCVImg::image2Mat(const DImg& img, int re
+                 {
+                     if      (MCO_RGB == requiredOrder)
+                     {
+-                        cv::cvtColor(mat0, mat0, CV_RGBA2GRAY);
++                        cv::cvtColor(mat0, mat0, cv::ColorConversionCodes::COLOR_RGBA2GRAY);
+                     }
+                     else if (MCO_BGR == requiredOrder)
+                     {
+-                        cv::cvtColor(mat0, mat0, CV_BGRA2GRAY);
++                        cv::cvtColor(mat0, mat0, cv::ColorConversionCodes::COLOR_BGRA2GRAY);
+                     }
+ 
+                     break;
+@@ -292,11 +292,11 @@ cv::Mat QtOpenCVImg::image2Mat(const DImg& img, int re
+                 {
+                     if      (MCO_RGB == requiredOrder)
+                     {
+-                        cv::cvtColor(mat0, mat0, CV_RGBA2RGB);
++                        cv::cvtColor(mat0, mat0, cv::ColorConversionCodes::COLOR_RGBA2RGB);
+                     }
+                     else if (MCO_BGR == requiredOrder)
+                     {
+-                        cv::cvtColor(mat0, mat0, CV_BGRA2BGR);
++                        cv::cvtColor(mat0, mat0, cv::ColorConversionCodes::COLOR_BGRA2BGR);
+                     }
+ 
+                     break;
+@@ -364,21 +364,21 @@ cv::Mat QtOpenCVImg::image2Mat(const QImage& img, int 
+             {
+                 if      (mat0.channels() == 3)
+                 {
+-                    cv::cvtColor(mat0, mat_adjustCn, CV_RGB2GRAY);
++                    cv::cvtColor(mat0, mat_adjustCn, cv::ColorConversionCodes::COLOR_RGB2GRAY);
+                 }
+                 else if (mat0.channels() == 4)
+                 {
+                     if      (srcOrder == MCO_BGRA)
+                     {
+-                        cv::cvtColor(mat0, mat_adjustCn, CV_BGRA2GRAY);
++                        cv::cvtColor(mat0, mat_adjustCn, cv::ColorConversionCodes::COLOR_BGRA2GRAY);
+                     }
+                     else if (srcOrder == MCO_RGBA)
+                     {
+-                        cv::cvtColor(mat0, mat_adjustCn, CV_RGBA2GRAY);
++                        cv::cvtColor(mat0, mat_adjustCn, cv::ColorConversionCodes::COLOR_RGBA2GRAY);
+                     }
+                     else    // MCO_ARGB
+                     {
+-                        cv::cvtColor(argb2bgra(mat0), mat_adjustCn, CV_BGRA2GRAY);
++                        cv::cvtColor(argb2bgra(mat0), mat_adjustCn, cv::ColorConversionCodes::COLOR_BGRA2GRAY);
+                     }
+                 }
+ 
+@@ -389,13 +389,13 @@ cv::Mat QtOpenCVImg::image2Mat(const QImage& img, int 
+             {
+                 if      (mat0.channels() == 1)
+                 {
+-                    cv::cvtColor(mat0, mat_adjustCn, ((requriedOrder == MCO_BGR) ? CV_GRAY2BGR : CV_GRAY2RGB));
++                    cv::cvtColor(mat0, mat_adjustCn, ((requriedOrder == MCO_BGR) ? cv::ColorConversionCodes::COLOR_GRAY2BGR : cv::ColorConversionCodes::COLOR_GRAY2RGB));
+                 }
+                 else if (mat0.channels() == 3)
+                 {
+                     if (requriedOrder != srcOrder)
+                     {
+-                        cv::cvtColor(mat0, mat_adjustCn, CV_RGB2BGR);
++                        cv::cvtColor(mat0, mat_adjustCn, cv::ColorConversionCodes::COLOR_RGB2BGR);
+                     }
+                 }
+ 
+@@ -410,11 +410,11 @@ cv::Mat QtOpenCVImg::image2Mat(const QImage& img, int 
+                     }
+                     else if (srcOrder == MCO_BGRA)
+                     {
+-                        cv::cvtColor(mat0, mat_adjustCn, ((requriedOrder == MCO_BGR) ? CV_BGRA2BGR : CV_BGRA2RGB));
++                        cv::cvtColor(mat0, mat_adjustCn, ((requriedOrder == MCO_BGR) ? cv::ColorConversionCodes::COLOR_BGRA2BGR : cv::ColorConversionCodes::COLOR_BGRA2RGB));
+                     }
+                     else    // RGBA
+                     {
+-                        cv::cvtColor(mat0, mat_adjustCn, ((requriedOrder == MCO_BGR) ? CV_RGBA2BGR : CV_RGBA2RGB));
++                        cv::cvtColor(mat0, mat_adjustCn, ((requriedOrder == MCO_BGR) ? cv::ColorConversionCodes::COLOR_RGBA2BGR : cv::ColorConversionCodes::COLOR_RGBA2RGB));
+                     }
+                 }
+ 
+@@ -435,11 +435,11 @@ cv::Mat QtOpenCVImg::image2Mat(const QImage& img, int 
+                     }
+                     else if (requriedOrder == MCO_RGBA)
+                     {
+-                        cv::cvtColor(mat0, mat_adjustCn, CV_GRAY2RGBA);
++                        cv::cvtColor(mat0, mat_adjustCn, cv::ColorConversionCodes::COLOR_GRAY2RGBA);
+                     }
+                     else    // MCO_BGRA
+                     {
+-                        cv::cvtColor(mat0, mat_adjustCn, CV_GRAY2BGRA);
++                        cv::cvtColor(mat0, mat_adjustCn, cv::ColorConversionCodes::COLOR_GRAY2BGRA);
+                     }
+                 }
+                 else if (mat0.channels() == 3)
+@@ -454,11 +454,11 @@ cv::Mat QtOpenCVImg::image2Mat(const QImage& img, int 
+                     }
+                     else if (requriedOrder == MCO_RGBA)
+                     {
+-                        cv::cvtColor(mat0, mat_adjustCn, CV_RGB2RGBA);
++                        cv::cvtColor(mat0, mat_adjustCn, cv::ColorConversionCodes::COLOR_RGB2RGBA);
+                     }
+                     else    // MCO_BGRA
+                     {
+-                        cv::cvtColor(mat0, mat_adjustCn, CV_RGB2BGRA);
++                        cv::cvtColor(mat0, mat_adjustCn, cv::ColorConversionCodes::COLOR_RGB2BGRA);
+                     }
+                 }
+                 else if (mat0.channels() == 4)
+@@ -560,14 +560,14 @@ QImage QtOpenCVImg::mat2Image(const cv::Mat& mat, MatC
+ 
+             if (order == MCO_BGR)
+             {
+-                cv::cvtColor(mat, mat_adjustCn, CV_BGR2RGB);
++                cv::cvtColor(mat, mat_adjustCn, cv::ColorConversionCodes::COLOR_BGR2RGB);
+             }
+ 
+ #else
+ 
+             format = QImage::Format_RGB32;
+             cv::Mat mat_tmp;
+-            cv::cvtColor(mat, mat_tmp, ((order == MCO_BGR) ? CV_BGR2BGRA : CV_RGB2BGRA));
++            cv::cvtColor(mat, mat_tmp, ((order == MCO_BGR) ? cv::ColorConversionCodes::COLOR_BGR2BGRA : cv::ColorConversionCodes::COLOR_RGB2BGRA));
+ 
+ #   if Q_BYTE_ORDER == Q_LITTLE_ENDIAN
+ 


Home | Main Index | Thread Index | Old Index