11diff -Nuarp opencv-4.12.0.orig/modules/core/include/opencv2/core/bindings_utils.hpp opencv-4.12.0/modules/core/include/opencv2/core/bindings_utils.hpp
22--- opencv-4.12.0.orig/modules/core/include/opencv2/core/bindings_utils.hpp 2025-07-13 20:34:53.372129425 +0800
3- +++ opencv-4.12.0/modules/core/include/opencv2/core/bindings_utils.hpp 2025-07-13 20:39:39.501062111 +0800
3+ +++ opencv-4.12.0/modules/core/include/opencv2/core/bindings_utils.hpp 2025-07-13 21:38:10.818186252 +0800
44@@ -202,12 +202,6 @@ void generateVectorOfMat(size_t len, int
55 }
66
@@ -31,7 +31,7 @@ diff -Nuarp opencv-4.12.0.orig/modules/core/include/opencv2/core/bindings_utils.
3131
3232diff -Nuarp opencv-4.12.0.orig/modules/core/src/async.cpp opencv-4.12.0/modules/core/src/async.cpp
3333--- opencv-4.12.0.orig/modules/core/src/async.cpp 2025-07-13 20:39:13.959090096 +0800
34- +++ opencv-4.12.0/modules/core/src/async.cpp 2025-07-13 20:39:39.501198699 +0800
34+ +++ opencv-4.12.0/modules/core/src/async.cpp 2025-07-13 21:38:10.818321197 +0800
3535@@ -100,7 +100,6 @@ struct AsyncArray::Impl
3636 if (has_exception)
3737 {
@@ -50,7 +50,7 @@ diff -Nuarp opencv-4.12.0.orig/modules/core/src/async.cpp opencv-4.12.0/modules/
5050 return false;
5151diff -Nuarp opencv-4.12.0.orig/modules/core/src/bindings_utils.cpp opencv-4.12.0/modules/core/src/bindings_utils.cpp
5252--- opencv-4.12.0.orig/modules/core/src/bindings_utils.cpp 2025-07-13 20:34:53.534086711 +0800
53- +++ opencv-4.12.0/modules/core/src/bindings_utils.cpp 2025-07-13 20:40:48.602950223 +0800
53+ +++ opencv-4.12.0/modules/core/src/bindings_utils.cpp 2025-07-13 21:38:10.818378715 +0800
5454@@ -22,7 +22,7 @@ String dumpInputArray(InputArray argumen
5555 return "InputArray: noArray()";
5656 std::ostringstream ss;
@@ -149,7 +149,7 @@ diff -Nuarp opencv-4.12.0.orig/modules/core/src/bindings_utils.cpp opencv-4.12.0
149149
150150diff -Nuarp opencv-4.12.0.orig/modules/core/src/command_line_parser.cpp opencv-4.12.0/modules/core/src/command_line_parser.cpp
151151--- opencv-4.12.0.orig/modules/core/src/command_line_parser.cpp 2025-07-13 20:34:53.537230759 +0800
152- +++ opencv-4.12.0/modules/core/src/command_line_parser.cpp 2025-07-13 20:39:39.501369321 +0800
152+ +++ opencv-4.12.0/modules/core/src/command_line_parser.cpp 2025-07-13 21:38:10.818428600 +0800
153153@@ -119,7 +119,6 @@ static void from_str(const String& str,
154154
155155 void CommandLineParser::getByName(const String& name, bool space_delete, Param type, void* dst) const
@@ -246,9 +246,61 @@ diff -Nuarp opencv-4.12.0.orig/modules/core/src/command_line_parser.cpp opencv-4
246246 }
247247
248248 return vec;
249+ diff -Nuarp opencv-4.12.0.orig/modules/core/src/dxt.cpp opencv-4.12.0/modules/core/src/dxt.cpp
250+ --- opencv-4.12.0.orig/modules/core/src/dxt.cpp 2025-07-13 20:39:13.959381686 +0800
251+ +++ opencv-4.12.0/modules/core/src/dxt.cpp 2025-07-13 21:37:40.157743062 +0800
252+ @@ -826,6 +826,30 @@ struct OcvDftOptions {
253+ }
254+ };
255+
256+ + template<typename T>
257+ + struct HALDFTCaller;
258+ +
259+ + template<>
260+ + struct HALDFTCaller<float> {
261+ + static void call(const OcvDftOptions& c, const Complex<float>* src, Complex<float>* dst) {
262+ + CALL_HAL(dft, cv_hal_dft, reinterpret_cast<const uchar*>(src), reinterpret_cast<uchar*>(dst), CV_32F,
263+ + c.nf, c.factors, c.scale, c.itab, c.wave, c.tab_size, c.n, c.isInverse, c.noPermute);
264+ + }
265+ + };
266+ +
267+ + template<>
268+ + struct HALDFTCaller<double> {
269+ + static void call(const OcvDftOptions& c, const Complex<double>* src, Complex<double>* dst) {
270+ + CALL_HAL(dft, cv_hal_dft, reinterpret_cast<const uchar*>(src), reinterpret_cast<uchar*>(dst), CV_64F,
271+ + c.nf, c.factors, c.scale, c.itab, c.wave, c.tab_size, c.n, c.isInverse, c.noPermute);
272+ + }
273+ + };
274+ +
275+ + template<typename T>
276+ + static void HALDFT(const OcvDftOptions& c, const Complex<T>* src, Complex<T>* dst) {
277+ + HALDFTCaller<T>::call(c, src, dst);
278+ + }
279+ +
280+ // mixed-radix complex discrete Fourier transform: double-precision version
281+ template<typename T> static void
282+ DFT(const OcvDftOptions & c, const Complex<T>* src, Complex<T>* dst)
283+ @@ -841,16 +865,7 @@ DFT(const OcvDftOptions & c, const Compl
284+ Complex<T> t;
285+ T scale = (T)c.scale;
286+
287+ - if(typeid(T) == typeid(float))
288+ - {
289+ - CALL_HAL(dft, cv_hal_dft, reinterpret_cast<const uchar*>(src), reinterpret_cast<uchar*>(dst), CV_32F,
290+ - c.nf, c.factors, c.scale, c.itab, c.wave, c.tab_size, c.n, c.isInverse, c.noPermute);
291+ - }
292+ - if(typeid(T) == typeid(double))
293+ - {
294+ - CALL_HAL(dft, cv_hal_dft, reinterpret_cast<const uchar*>(src), reinterpret_cast<uchar*>(dst), CV_64F,
295+ - c.nf, c.factors, c.scale, c.itab, c.wave, c.tab_size, c.n, c.isInverse, c.noPermute);
296+ - }
297+ + HALDFT(c, src, dst);
298+
299+ if( c.useIpp )
300+ {
249301diff -Nuarp opencv-4.12.0.orig/modules/core/src/glob.cpp opencv-4.12.0/modules/core/src/glob.cpp
250302--- opencv-4.12.0.orig/modules/core/src/glob.cpp 2025-07-13 20:34:53.536156931 +0800
251- +++ opencv-4.12.0/modules/core/src/glob.cpp 2025-07-13 20:39:39.501426119 +0800
303+ +++ opencv-4.12.0/modules/core/src/glob.cpp 2025-07-13 21:38:10.818490446 +0800
252304@@ -243,7 +243,6 @@ static void glob_rec(const cv::String& d
253305 if ((dir = opendir (directory.c_str())) != 0)
254306 {
@@ -271,7 +323,7 @@ diff -Nuarp opencv-4.12.0.orig/modules/core/src/glob.cpp opencv-4.12.0/modules/c
271323 else
272324diff -Nuarp opencv-4.12.0.orig/modules/core/src/matrix.cpp opencv-4.12.0/modules/core/src/matrix.cpp
273325--- opencv-4.12.0.orig/modules/core/src/matrix.cpp 2025-07-13 20:34:53.545189782 +0800
274- +++ opencv-4.12.0/modules/core/src/matrix.cpp 2025-07-13 20:39:39.501490560 +0800
326+ +++ opencv-4.12.0/modules/core/src/matrix.cpp 2025-07-13 21:38:10.818552694 +0800
275327@@ -694,20 +694,11 @@ void Mat::create(int d, const int* _size
276328 MatAllocator *a = allocator, *a0 = getDefaultAllocator();
277329 if(!a)
@@ -315,7 +367,7 @@ diff -Nuarp opencv-4.12.0.orig/modules/core/src/matrix.cpp opencv-4.12.0/modules
315367
316368diff -Nuarp opencv-4.12.0.orig/modules/core/src/parallel/parallel.cpp opencv-4.12.0/modules/core/src/parallel/parallel.cpp
317369--- opencv-4.12.0.orig/modules/core/src/parallel/parallel.cpp 2025-07-13 20:34:53.506481139 +0800
318- +++ opencv-4.12.0/modules/core/src/parallel/parallel.cpp 2025-07-13 20:39:39.501555463 +0800
370+ +++ opencv-4.12.0/modules/core/src/parallel/parallel.cpp 2025-07-13 21:38:10.818617917 +0800
319371@@ -60,7 +60,6 @@ std::shared_ptr<ParallelForAPI> createPa
320372 }
321373 isKnown = true;
@@ -341,7 +393,7 @@ diff -Nuarp opencv-4.12.0.orig/modules/core/src/parallel/parallel.cpp opencv-4.1
341393 {
342394diff -Nuarp opencv-4.12.0.orig/modules/core/src/parallel/plugin_parallel_wrapper.impl.hpp opencv-4.12.0/modules/core/src/parallel/plugin_parallel_wrapper.impl.hpp
343395--- opencv-4.12.0.orig/modules/core/src/parallel/plugin_parallel_wrapper.impl.hpp 2025-07-13 20:34:53.506007655 +0800
344- +++ opencv-4.12.0/modules/core/src/parallel/plugin_parallel_wrapper.impl.hpp 2025-07-13 20:39:39.501592593 +0800
396+ +++ opencv-4.12.0/modules/core/src/parallel/plugin_parallel_wrapper.impl.hpp 2025-07-13 21:38:10.818654306 +0800
345397@@ -155,15 +155,10 @@ protected:
346398 void initBackend()
347399 {
@@ -379,7 +431,7 @@ diff -Nuarp opencv-4.12.0.orig/modules/core/src/parallel/plugin_parallel_wrapper
379431
380432diff -Nuarp opencv-4.12.0.orig/modules/core/src/parallel.cpp opencv-4.12.0/modules/core/src/parallel.cpp
381433--- opencv-4.12.0.orig/modules/core/src/parallel.cpp 2025-07-13 20:34:53.534609328 +0800
382- +++ opencv-4.12.0/modules/core/src/parallel.cpp 2025-07-13 20:39:39.501646595 +0800
434+ +++ opencv-4.12.0/modules/core/src/parallel.cpp 2025-07-13 21:38:10.818707437 +0800
383435@@ -355,29 +355,9 @@ namespace {
384436 CV_TRACE_ARG_VALUE(range_end, "range.end", (int64)r.end);
385437 #endif
@@ -429,7 +481,7 @@ diff -Nuarp opencv-4.12.0.orig/modules/core/src/parallel.cpp opencv-4.12.0/modul
429481 {
430482diff -Nuarp opencv-4.12.0.orig/modules/core/src/persistence.cpp opencv-4.12.0/modules/core/src/persistence.cpp
431483--- opencv-4.12.0.orig/modules/core/src/persistence.cpp 2025-07-13 20:34:53.538606458 +0800
432- +++ opencv-4.12.0/modules/core/src/persistence.cpp 2025-07-13 20:39:39.501753076 +0800
484+ +++ opencv-4.12.0/modules/core/src/persistence.cpp 2025-07-13 21:38:10.818819829 +0800
433485@@ -758,7 +758,7 @@ bool FileStorage::Impl::open(const char
434486 strbufpos = bufOffset;
435487 bufofs = 0;
@@ -474,7 +526,7 @@ diff -Nuarp opencv-4.12.0.orig/modules/core/src/persistence.cpp opencv-4.12.0/mo
474526 bool FileStorage::isOpened() const { return p->is_opened; }
475527diff -Nuarp opencv-4.12.0.orig/modules/core/src/system.cpp opencv-4.12.0/modules/core/src/system.cpp
476528--- opencv-4.12.0.orig/modules/core/src/system.cpp 2025-07-13 20:34:53.503020142 +0800
477- +++ opencv-4.12.0/modules/core/src/system.cpp 2025-07-13 20:39:39.501918218 +0800
529+ +++ opencv-4.12.0/modules/core/src/system.cpp 2025-07-13 21:38:10.818983909 +0800
478530@@ -1272,7 +1272,6 @@ void error( const Exception& exc )
479531 *p = 0;
480532 }
@@ -536,7 +588,7 @@ diff -Nuarp opencv-4.12.0.orig/modules/core/src/system.cpp opencv-4.12.0/modules
536588
537589diff -Nuarp opencv-4.12.0.orig/modules/core/src/umatrix.cpp opencv-4.12.0/modules/core/src/umatrix.cpp
538590--- opencv-4.12.0.orig/modules/core/src/umatrix.cpp 2025-07-13 20:39:13.960069736 +0800
539- +++ opencv-4.12.0/modules/core/src/umatrix.cpp 2025-07-13 20:39:39.502036522 +0800
591+ +++ opencv-4.12.0/modules/core/src/umatrix.cpp 2025-07-13 21:38:10.819101641 +0800
540592@@ -594,14 +594,9 @@ UMat Mat::getUMat(AccessFlag accessFlags
541593 new_u->originalUMatData = u;
542594 }
@@ -617,7 +669,7 @@ diff -Nuarp opencv-4.12.0.orig/modules/core/src/umatrix.cpp opencv-4.12.0/module
617669 return Mat();
618670diff -Nuarp opencv-4.12.0.orig/modules/core/src/utils/filesystem.cpp opencv-4.12.0/modules/core/src/utils/filesystem.cpp
619671--- opencv-4.12.0.orig/modules/core/src/utils/filesystem.cpp 2025-07-13 20:34:53.528264934 +0800
620- +++ opencv-4.12.0/modules/core/src/utils/filesystem.cpp 2025-07-13 20:39:39.502109289 +0800
672+ +++ opencv-4.12.0/modules/core/src/utils/filesystem.cpp 2025-07-13 21:38:10.819174299 +0800
621673@@ -508,14 +508,9 @@ cv::String getCacheDirectory(const char*
622674 && !utils::fs::isDirectory(default_cache_path))
623675 {
@@ -635,7 +687,7 @@ diff -Nuarp opencv-4.12.0.orig/modules/core/src/utils/filesystem.cpp opencv-4.12
635687 CV_LOG_WARNING(NULL, "Creating new OpenCV cache directory: " << default_cache_path);
636688diff -Nuarp opencv-4.12.0.orig/modules/imgproc/src/contours.cpp opencv-4.12.0/modules/imgproc/src/contours.cpp
637689--- opencv-4.12.0.orig/modules/imgproc/src/contours.cpp 2025-07-13 20:39:13.961175625 +0800
638- +++ opencv-4.12.0/modules/imgproc/src/contours.cpp 2025-07-13 20:39:39.502182237 +0800
690+ +++ opencv-4.12.0/modules/imgproc/src/contours.cpp 2025-07-13 21:38:10.819246104 +0800
639691@@ -1760,7 +1760,6 @@ cvFindContours_Impl( void* img, CvMemS
640692 }
641693 else
@@ -659,7 +711,7 @@ diff -Nuarp opencv-4.12.0.orig/modules/imgproc/src/contours.cpp opencv-4.12.0/mo
659711 }
660712diff -Nuarp opencv-4.12.0.orig/modules/video/src/tracking/detail/tracking_feature.cpp opencv-4.12.0/modules/video/src/tracking/detail/tracking_feature.cpp
661713--- opencv-4.12.0.orig/modules/video/src/tracking/detail/tracking_feature.cpp 2025-07-13 20:34:54.331668306 +0800
662- +++ opencv-4.12.0/modules/video/src/tracking/detail/tracking_feature.cpp 2025-07-13 20:39:39.502266586 +0800
714+ +++ opencv-4.12.0/modules/video/src/tracking/detail/tracking_feature.cpp 2025-07-13 21:38:10.819330454 +0800
663715@@ -107,15 +107,9 @@ void CvHaarEvaluator::generateFeatures(i
664716
665717 CvHaarEvaluator::FeatureHaar::FeatureHaar(Size patchSize)
0 commit comments