summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBeniamin Sandu <beniaminsandu@gmail.com>2024-02-09 23:12:21 +0000
committerKhem Raj <raj.khem@gmail.com>2024-02-10 01:48:01 -0800
commit34065357cb504692c9e95fb6b75666bec0f53663 (patch)
tree51355d44deb5b744e08f6d5a3d1c26613ba2b687
parent6ab716910e86e9335870ab924773ef50b7673cd7 (diff)
downloadmeta-openembedded-34065357cb504692c9e95fb6b75666bec0f53663.tar.gz
opencv: upgrade 4.8.0 -> 4.9.0
Full changelogs: https://github.com/opencv/opencv/wiki/ChangeLog#version481 https://github.com/opencv/opencv/wiki/ChangeLog#version490 Also drop python2 support. Signed-off-by: Beniamin Sandu <beniaminsandu@gmail.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
-rw-r--r--meta-oe/recipes-support/opencv/opencv/fix-build-with-protobuf-v22.patch203
-rw-r--r--meta-oe/recipes-support/opencv/opencv_4.9.0.bb (renamed from meta-oe/recipes-support/opencv/opencv_4.8.0.bb)17
2 files changed, 3 insertions, 217 deletions
diff --git a/meta-oe/recipes-support/opencv/opencv/fix-build-with-protobuf-v22.patch b/meta-oe/recipes-support/opencv/opencv/fix-build-with-protobuf-v22.patch
deleted file mode 100644
index 265d723c6e..0000000000
--- a/meta-oe/recipes-support/opencv/opencv/fix-build-with-protobuf-v22.patch
+++ /dev/null
@@ -1,203 +0,0 @@
1From 75f7475fcfb35cbe4d8f5ccf5c4ac8bc78f2dc30 Mon Sep 17 00:00:00 2001
2From: Kumataro <Kumataro@users.noreply.github.com>
3Date: Thu, 19 Oct 2023 14:45:08 +0900
4Subject: [PATCH] Merge pull request #24372 from Kumataro:fix24369
5
6Supporting protobuf v22 and later(with abseil-cpp/C++17) #24372
7
8fix https://github.com/opencv/opencv/issues/24369
9related https://github.com/opencv/opencv/issues/23791
10
111. This patch supports external protobuf v22 and later, it required abseil-cpp and c++17.
12 Even if the built-in protobuf is upgraded to v22 or later,
13 the dependency on abseil-cpp and the requirement for C++17 will continue.
142. Some test for caffe required patched protobuf, so this patch disable them.
15
16This patch is tested by following libraries.
17- Protobuf: /usr/local/lib/libprotobuf.so (4.24.4)
18- abseil-cpp: YES (20230125)
19
20See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request
21
22- [x] I agree to contribute to the project under Apache 2 License.
23- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
24- [x] The PR is proposed to the proper branch
25- [x] There is a reference to the original bug report and related work
26- [x] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
27 Patch to opencv_extra has the same branch name.
28- [x] The feature is well documented and sample code can be built with the project CMake
29
30Upstream-Status: Backport [https://github.com/opencv/opencv/commit/6e4280ea81b59c6dca45bb9801b758377beead55]
31---
32 cmake/OpenCVFindProtobuf.cmake | 35 +++++++++++++++++++++++++++-----
33 modules/dnn/CMakeLists.txt | 6 ++++++
34 modules/dnn/test/test_layers.cpp | 24 ++++++++++++++++++----
35 3 files changed, 56 insertions(+), 9 deletions(-)
36
37diff --git a/cmake/OpenCVFindProtobuf.cmake b/cmake/OpenCVFindProtobuf.cmake
38index 8835347d1d..5b1e17529f 100644
39--- a/cmake/OpenCVFindProtobuf.cmake
40+++ b/cmake/OpenCVFindProtobuf.cmake
41@@ -30,8 +30,14 @@ if(BUILD_PROTOBUF)
42 set(Protobuf_LIBRARIES "libprotobuf")
43 set(HAVE_PROTOBUF TRUE)
44 else()
45+ # we still need this for command PROTOBUF_GENERATE_CPP.
46+ set(protobuf_MODULE_COMPATIBLE ON)
47+
48 unset(Protobuf_VERSION CACHE)
49- find_package(Protobuf QUIET)
50+ find_package(Protobuf QUIET CONFIG)
51+ if(NOT Protobuf_FOUND)
52+ find_package(Protobuf QUIET)
53+ endif()
54
55 # Backwards compatibility
56 # Define camel case versions of input variables
57@@ -67,6 +73,20 @@ else()
58 endif()
59 endif()
60
61+# See https://github.com/opencv/opencv/issues/24369
62+# In Protocol Buffers v22.0 and later drops C++11 support and depends abseil-cpp.
63+# Details: https://protobuf.dev/news/2022-08-03/
64+# And if std::text_view is in abseil-cpp requests C++17 and later.
65+
66+if(HAVE_PROTOBUF)
67+ if(NOT (Protobuf_VERSION VERSION_LESS 22))
68+ if((CMAKE_CXX_STANDARD EQUAL 98) OR (CMAKE_CXX_STANDARD LESS 17))
69+ message(STATUS "CMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD} is too old to support protobuf(${Protobuf_VERSION}) and/or abseil-cpp. Use C++17 or later. Turning HAVE_PROTOBUF off")
70+ set(HAVE_PROTOBUF FALSE)
71+ endif()
72+ endif()
73+endif()
74+
75 if(HAVE_PROTOBUF AND PROTOBUF_UPDATE_FILES AND NOT COMMAND PROTOBUF_GENERATE_CPP)
76 message(FATAL_ERROR "Can't configure protobuf dependency (BUILD_PROTOBUF=${BUILD_PROTOBUF} PROTOBUF_UPDATE_FILES=${PROTOBUF_UPDATE_FILES})")
77 endif()
78@@ -74,15 +94,20 @@ endif()
79 if(HAVE_PROTOBUF)
80 list(APPEND CUSTOM_STATUS protobuf)
81 if(NOT BUILD_PROTOBUF)
82+ unset( __location)
83 if(TARGET "${Protobuf_LIBRARIES}")
84 get_target_property(__location "${Protobuf_LIBRARIES}" IMPORTED_LOCATION_RELEASE)
85 if(NOT __location)
86 get_target_property(__location "${Protobuf_LIBRARIES}" IMPORTED_LOCATION)
87 endif()
88- elseif(Protobuf_LIBRARY)
89- set(__location "${Protobuf_LIBRARY}")
90- else()
91- set(__location "${Protobuf_LIBRARIES}")
92+ endif()
93+
94+ if(NOT __location)
95+ if(Protobuf_LIBRARY)
96+ set(__location "${Protobuf_LIBRARY}")
97+ else()
98+ set(__location "${Protobuf_LIBRARIES}")
99+ endif()
100 endif()
101 endif()
102 list(APPEND CUSTOM_STATUS_protobuf " Protobuf:"
103diff --git a/modules/dnn/CMakeLists.txt b/modules/dnn/CMakeLists.txt
104index 804b78ead2..9fcc460909 100644
105--- a/modules/dnn/CMakeLists.txt
106+++ b/modules/dnn/CMakeLists.txt
107@@ -245,6 +245,12 @@ ocv_create_module(${libs} ${dnn_runtime_libs})
108 ocv_add_samples()
109 ocv_add_accuracy_tests(${dnn_runtime_libs})
110
111+if(NOT BUILD_PROTOBUF)
112+ if(TARGET opencv_test_dnn)
113+ ocv_target_compile_definitions(opencv_test_dnn PRIVATE "OPENCV_DNN_EXTERNAL_PROTOBUF=1")
114+ endif()
115+endif()
116+
117 set(perf_path "${CMAKE_CURRENT_LIST_DIR}/perf")
118 file(GLOB_RECURSE perf_srcs "${perf_path}/*.cpp")
119 file(GLOB_RECURSE perf_hdrs "${perf_path}/*.hpp" "${perf_path}/*.h")
120diff --git a/modules/dnn/test/test_layers.cpp b/modules/dnn/test/test_layers.cpp
121index 763d94b99c..6cb6d54b3f 100644
122--- a/modules/dnn/test/test_layers.cpp
123+++ b/modules/dnn/test/test_layers.cpp
124@@ -756,11 +756,15 @@ TEST_F(Layer_RNN_Test, get_set_test)
125
126 TEST_P(Test_Caffe_layers, Accum)
127 {
128+#ifdef OPENCV_DNN_EXTERNAL_PROTOBUF
129+ throw SkipTestException("Requires patched protobuf");
130+#else
131 if (backend == DNN_BACKEND_OPENCV && target != DNN_TARGET_CPU)
132 applyTestTag(CV_TEST_TAG_DNN_SKIP_OPENCL, CV_TEST_TAG_DNN_SKIP_OPENCL_FP16);
133
134 testLayerUsingCaffeModels("accum", false, false, 0.0, 0.0, 2);
135 testLayerUsingCaffeModels("accum_ref", false, false, 0.0, 0.0, 2);
136+#endif
137 }
138
139 TEST_P(Test_Caffe_layers, FlowWarp)
140@@ -780,27 +784,39 @@ TEST_P(Test_Caffe_layers, ChannelNorm)
141
142 TEST_P(Test_Caffe_layers, DataAugmentation)
143 {
144+#ifdef OPENCV_DNN_EXTERNAL_PROTOBUF
145+ throw SkipTestException("Requires patched protobuf");
146+#else
147 if (backend == DNN_BACKEND_OPENCV && target == DNN_TARGET_OPENCL_FP16)
148 applyTestTag(CV_TEST_TAG_DNN_SKIP_OPENCL_FP16);
149 testLayerUsingCaffeModels("data_augmentation", true, false);
150 testLayerUsingCaffeModels("data_augmentation_2x1", true, false);
151 testLayerUsingCaffeModels("data_augmentation_8x6", true, false);
152+#endif
153 }
154
155 TEST_P(Test_Caffe_layers, Resample)
156 {
157+#ifdef OPENCV_DNN_EXTERNAL_PROTOBUF
158+ throw SkipTestException("Requires patched protobuf");
159+#else
160 if (backend != DNN_BACKEND_OPENCV)
161 applyTestTag(CV_TEST_TAG_DNN_SKIP_IE_NN_BUILDER, CV_TEST_TAG_DNN_SKIP_IE_NGRAPH);
162 testLayerUsingCaffeModels("nearest_2inps", false, false, 0.0, 0.0, 2);
163 testLayerUsingCaffeModels("nearest", false, false);
164+#endif
165 }
166
167 TEST_P(Test_Caffe_layers, Correlation)
168 {
169+#ifdef OPENCV_DNN_EXTERNAL_PROTOBUF
170+ throw SkipTestException("Requires patched protobuf");
171+#else
172 if (backend == DNN_BACKEND_OPENCV && target == DNN_TARGET_OPENCL_FP16)
173 applyTestTag(CV_TEST_TAG_DNN_SKIP_IE_NGRAPH, CV_TEST_TAG_DNN_SKIP_IE_NN_BUILDER,
174 CV_TEST_TAG_DNN_SKIP_OPENCL, CV_TEST_TAG_DNN_SKIP_OPENCL_FP16);
175 testLayerUsingCaffeModels("correlation", false, false, 0.0, 0.0, 2);
176+#endif
177 }
178
179 TEST_P(Test_Caffe_layers, Convolution2Inputs)
180@@ -1641,12 +1657,11 @@ private:
181 int outWidth, outHeight, zoomFactor;
182 };
183
184-#ifndef OPENCV_DNN_EXTERNAL_PROTOBUF
185 TEST_P(Test_Caffe_layers, Interp)
186-#else
187-TEST_P(Test_Caffe_layers, DISABLED_Interp) // requires patched protobuf (available in OpenCV source tree only)
188-#endif
189 {
190+#ifdef OPENCV_DNN_EXTERNAL_PROTOBUF
191+ throw SkipTestException("Requires patched protobuf");
192+#else
193 #if defined(INF_ENGINE_RELEASE) && INF_ENGINE_VER_MAJOR_EQ(2021030000)
194 if (backend == DNN_BACKEND_INFERENCE_ENGINE_NGRAPH && target == DNN_TARGET_MYRIAD)
195 applyTestTag(CV_TEST_TAG_DNN_SKIP_IE_MYRIAD, CV_TEST_TAG_DNN_SKIP_IE_NGRAPH); // exception
196@@ -1670,6 +1685,7 @@ TEST_P(Test_Caffe_layers, DISABLED_Interp) // requires patched protobuf (availa
197
198 // Test an implemented layer.
199 testLayerUsingCaffeModels("layer_interp", false, false);
200+#endif
201 }
202
203 INSTANTIATE_TEST_CASE_P(/*nothing*/, Test_Caffe_layers, dnnBackendsAndTargets());
diff --git a/meta-oe/recipes-support/opencv/opencv_4.8.0.bb b/meta-oe/recipes-support/opencv/opencv_4.9.0.bb
index 85eb230b08..7c96241193 100644
--- a/meta-oe/recipes-support/opencv/opencv_4.8.0.bb
+++ b/meta-oe/recipes-support/opencv/opencv_4.9.0.bb
@@ -10,8 +10,8 @@ ARM_INSTRUCTION_SET:armv5 = "arm"
10 10
11DEPENDS = "libtool swig-native bzip2 zlib glib-2.0 libwebp" 11DEPENDS = "libtool swig-native bzip2 zlib glib-2.0 libwebp"
12 12
13SRCREV_opencv = "f9a59f2592993d3dcc080e495f4f5e02dd8ec7ef" 13SRCREV_opencv = "dad8af6b17f8e60d7b95a1203a1b4d22f56574cf"
14SRCREV_contrib = "f10c84d48b0714f2b408c9e5cccfac1277c8e6cc" 14SRCREV_contrib = "c7602a8f74205e44389bd6a4e8d727d32e7e27b4"
15SRCREV_boostdesc = "34e4206aef44d50e6bbcd0ab06354b52e7466d26" 15SRCREV_boostdesc = "34e4206aef44d50e6bbcd0ab06354b52e7466d26"
16SRCREV_vgg = "fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d" 16SRCREV_vgg = "fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d"
17SRCREV_face = "8afa57abc8229d611c4937165d20e2a2d9fc5a12" 17SRCREV_face = "8afa57abc8229d611c4937165d20e2a2d9fc5a12"
@@ -31,7 +31,6 @@ SRC_URI = "git://github.com/opencv/opencv.git;name=opencv;branch=4.x;protocol=ht
31 file://download.patch \ 31 file://download.patch \
32 file://0001-Make-ts-module-external.patch \ 32 file://0001-Make-ts-module-external.patch \
33 file://0008-Do-not-embed-build-directory-in-binaries.patch \ 33 file://0008-Do-not-embed-build-directory-in-binaries.patch \
34 file://fix-build-with-protobuf-v22.patch \
35 " 34 "
36SRC_URI:append:riscv64 = " file://0001-Use-Os-to-compile-tinyxml2.cpp.patch;patchdir=contrib" 35SRC_URI:append:riscv64 = " file://0001-Use-Os-to-compile-tinyxml2.cpp.patch;patchdir=contrib"
37 36
@@ -114,7 +113,6 @@ PACKAGECONFIG[opencl] = "-DWITH_OPENCL=ON,-DWITH_OPENCL=OFF,opencl-headers virtu
114PACKAGECONFIG[openvino] = "-DWITH_OPENVINO=ON,-DWITH_OPENVINO=OFF,openvino-inference-engine,openvino-inference-engine" 113PACKAGECONFIG[openvino] = "-DWITH_OPENVINO=ON,-DWITH_OPENVINO=OFF,openvino-inference-engine,openvino-inference-engine"
115PACKAGECONFIG[oracle-java] = "-DJAVA_INCLUDE_PATH=${ORACLE_JAVA_HOME}/include -DJAVA_INCLUDE_PATH2=${ORACLE_JAVA_HOME}/include/linux -DJAVA_AWT_INCLUDE_PATH=${ORACLE_JAVA_HOME}/include -DJAVA_AWT_LIBRARY=${ORACLE_JAVA_HOME}/lib/amd64/libjawt.so -DJAVA_JVM_LIBRARY=${ORACLE_JAVA_HOME}/lib/amd64/server/libjvm.so,,ant-native oracle-jse-jdk oracle-jse-jdk-native," 114PACKAGECONFIG[oracle-java] = "-DJAVA_INCLUDE_PATH=${ORACLE_JAVA_HOME}/include -DJAVA_INCLUDE_PATH2=${ORACLE_JAVA_HOME}/include/linux -DJAVA_AWT_INCLUDE_PATH=${ORACLE_JAVA_HOME}/include -DJAVA_AWT_LIBRARY=${ORACLE_JAVA_HOME}/lib/amd64/libjawt.so -DJAVA_JVM_LIBRARY=${ORACLE_JAVA_HOME}/lib/amd64/server/libjvm.so,,ant-native oracle-jse-jdk oracle-jse-jdk-native,"
116PACKAGECONFIG[png] = "-DWITH_PNG=ON,-DWITH_PNG=OFF,libpng," 115PACKAGECONFIG[png] = "-DWITH_PNG=ON,-DWITH_PNG=OFF,libpng,"
117PACKAGECONFIG[python2] = "-DPYTHON2_NUMPY_INCLUDE_DIRS:PATH=${STAGING_LIBDIR}/${PYTHON_DIR}/site-packages/numpy/core/include,,python-numpy,"
118PACKAGECONFIG[python3] = "-DPYTHON3_NUMPY_INCLUDE_DIRS:PATH=${STAGING_LIBDIR}/${PYTHON_DIR}/site-packages/numpy/core/include,,python3-numpy," 116PACKAGECONFIG[python3] = "-DPYTHON3_NUMPY_INCLUDE_DIRS:PATH=${STAGING_LIBDIR}/${PYTHON_DIR}/site-packages/numpy/core/include,,python3-numpy,"
119PACKAGECONFIG[samples] = "-DBUILD_EXAMPLES=ON -DINSTALL_PYTHON_EXAMPLES=ON,-DBUILD_EXAMPLES=OFF,," 117PACKAGECONFIG[samples] = "-DBUILD_EXAMPLES=ON -DINSTALL_PYTHON_EXAMPLES=ON,-DBUILD_EXAMPLES=OFF,,"
120PACKAGECONFIG[tbb] = "-DWITH_TBB=ON,-DWITH_TBB=OFF,tbb," 118PACKAGECONFIG[tbb] = "-DWITH_TBB=ON,-DWITH_TBB=OFF,tbb,"
@@ -123,13 +121,9 @@ PACKAGECONFIG[text] = "-DBUILD_opencv_text=ON,-DBUILD_opencv_text=OFF,tesseract,
123PACKAGECONFIG[tiff] = "-DWITH_TIFF=ON,-DWITH_TIFF=OFF,tiff," 121PACKAGECONFIG[tiff] = "-DWITH_TIFF=ON,-DWITH_TIFF=OFF,tiff,"
124PACKAGECONFIG[v4l] = "-DWITH_V4L=ON,-DWITH_V4L=OFF,v4l-utils," 122PACKAGECONFIG[v4l] = "-DWITH_V4L=ON,-DWITH_V4L=OFF,v4l-utils,"
125 123
126inherit pkgconfig cmake 124inherit pkgconfig cmake setuptools3-base python3native
127
128inherit ${@bb.utils.contains('PACKAGECONFIG', 'python3', 'setuptools3-base', '', d)}
129inherit ${@bb.utils.contains('PACKAGECONFIG', 'python2', 'distutils-base', '', d)}
130 125
131export PYTHON_CSPEC="-I${STAGING_INCDIR}/${PYTHON_DIR}" 126export PYTHON_CSPEC="-I${STAGING_INCDIR}/${PYTHON_DIR}"
132export PYTHON="${STAGING_BINDIR_NATIVE}/${@bb.utils.contains('PACKAGECONFIG', 'python3', 'python3', 'python', d)}"
133export ORACLE_JAVA_HOME="${STAGING_DIR_NATIVE}/usr/bin/java" 127export ORACLE_JAVA_HOME="${STAGING_DIR_NATIVE}/usr/bin/java"
134export JAVA_HOME="${STAGING_DIR_NATIVE}/usr/lib/jvm/openjdk-8-native" 128export JAVA_HOME="${STAGING_DIR_NATIVE}/usr/lib/jvm/openjdk-8-native"
135export ANT_DIR="${STAGING_DIR_NATIVE}/usr/share/ant/" 129export ANT_DIR="${STAGING_DIR_NATIVE}/usr/share/ant/"
@@ -139,7 +133,6 @@ TARGET_CC_ARCH += "-I${S}/include "
139PACKAGES += "${@bb.utils.contains('PACKAGECONFIG', 'samples', '${PN}-samples', '', d)} \ 133PACKAGES += "${@bb.utils.contains('PACKAGECONFIG', 'samples', '${PN}-samples', '', d)} \
140 ${@bb.utils.contains('PACKAGECONFIG', 'oracle-java', '${PN}-java', '', d)} \ 134 ${@bb.utils.contains('PACKAGECONFIG', 'oracle-java', '${PN}-java', '', d)} \
141 ${@bb.utils.contains('PACKAGECONFIG', 'java', '${PN}-java', '', d)} \ 135 ${@bb.utils.contains('PACKAGECONFIG', 'java', '${PN}-java', '', d)} \
142 ${@bb.utils.contains('PACKAGECONFIG', 'python2', 'python-${BPN}', '', d)} \
143 ${@bb.utils.contains('PACKAGECONFIG', 'python3', 'python3-${BPN}', '', d)} \ 136 ${@bb.utils.contains('PACKAGECONFIG', 'python3', 'python3-${BPN}', '', d)} \
144 ${PN}-apps" 137 ${PN}-apps"
145 138
@@ -186,10 +179,6 @@ INSANE_SKIP:${PN}-dbg = "libdir"
186 179
187ALLOW_EMPTY:${PN} = "1" 180ALLOW_EMPTY:${PN} = "1"
188 181
189SUMMARY:python-opencv = "Python bindings to opencv"
190FILES:python-opencv = "${PYTHON_SITEPACKAGES_DIR}/*"
191RDEPENDS:python-opencv = "python-core python-numpy"
192
193SUMMARY:python3-opencv = "Python bindings to opencv" 182SUMMARY:python3-opencv = "Python bindings to opencv"
194FILES:python3-opencv = "${PYTHON_SITEPACKAGES_DIR}/*" 183FILES:python3-opencv = "${PYTHON_SITEPACKAGES_DIR}/*"
195RDEPENDS:python3-opencv = "python3-core python3-numpy" 184RDEPENDS:python3-opencv = "python3-core python3-numpy"