diff options
-rw-r--r-- | meta-oe/recipes-support/opencv/opencv/fix-build-with-protobuf-v22.patch | 412 | ||||
-rw-r--r-- | meta-oe/recipes-support/opencv/opencv_4.8.0.bb | 3 |
2 files changed, 414 insertions, 1 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 new file mode 100644 index 0000000000..536060cfd9 --- /dev/null +++ b/meta-oe/recipes-support/opencv/opencv/fix-build-with-protobuf-v22.patch | |||
@@ -0,0 +1,412 @@ | |||
1 | From 5e4150826fea6f37276f348c65d94ce4847d1211 Mon Sep 17 00:00:00 2001 | ||
2 | From: Kumataro <Kumataro@users.noreply.github.com> | ||
3 | Date: Sat, 7 Oct 2023 10:11:25 +0900 | ||
4 | Subject: [PATCH] 3rdparty: supporting protobuf v22 and later | ||
5 | |||
6 | Upstream-Status: Submitted [https://github.com/opencv/opencv/pull/24372] | ||
7 | --- | ||
8 | cmake/OpenCVFindProtobuf.cmake | 37 ++++++++++++++++++++++++++++++++++ | ||
9 | modules/dnn/CMakeLists.txt | 9 +++++++++ | ||
10 | 2 files changed, 46 insertions(+) | ||
11 | |||
12 | diff --git a/cmake/OpenCVFindProtobuf.cmake b/cmake/OpenCVFindProtobuf.cmake | ||
13 | index 8835347d1d..9bd5c28db8 100644 | ||
14 | --- a/cmake/OpenCVFindProtobuf.cmake | ||
15 | +++ b/cmake/OpenCVFindProtobuf.cmake | ||
16 | @@ -67,6 +67,38 @@ else() | ||
17 | endif() | ||
18 | endif() | ||
19 | |||
20 | +# See https://github.com/opencv/opencv/issues/24369 | ||
21 | +# In Protocol Buffers v22.0 and later drops C++11 support and depends abseil-cpp. | ||
22 | +# Details: https://protobuf.dev/news/2022-08-03/ | ||
23 | +# And if std::text_view is in abseil-cpp requests C++17 and later. | ||
24 | +if(HAVE_PROTOBUF) | ||
25 | + if("${Protobuf_VERSION}" MATCHES [[[0-9]+.([0-9]+).[0-9]+]]) | ||
26 | + string(COMPARE GREATER_EQUAL "${CMAKE_MATCH_1}" "22" REQUEST_ABSL) | ||
27 | + | ||
28 | + if(REQUEST_ABSL) | ||
29 | + string(COMPARE GREATER_EQUAL "${CMAKE_CXX_STANDARD}" "17" USED_AFTER_CXX17) | ||
30 | + if(NOT USED_AFTER_CXX17) | ||
31 | + message("CMAKE_CXX_STANDARD : ${CMAKE_CXX_STANDARD}") | ||
32 | + message("protobuf : ${Protobuf_VERSION}") | ||
33 | + message(FATAL_ERROR "protobuf(v22 and later) and abseil-cpp request CMAKE_CXX_STANDARD=17 and later.") | ||
34 | + endif() | ||
35 | + | ||
36 | + ocv_check_modules(ABSL_STRINGS absl_strings) | ||
37 | + if(NOT ABSL_STRINGS_FOUND) | ||
38 | + message(FATAL_ERROR "protobuf(v22 and later) requests abseil-cpp(strings), but missing.") | ||
39 | + endif() | ||
40 | + | ||
41 | + ocv_check_modules(ABSL_LOG absl_log) | ||
42 | + if(NOT ABSL_LOG_FOUND) | ||
43 | + message(FATAL_ERROR "protobuf(v22 and later) requests abseil-cpp(log), but missing.") | ||
44 | + endif() | ||
45 | + | ||
46 | + endif() | ||
47 | + else() | ||
48 | + message(FATAL_ERROR "Protobuf version(${Protobuf_VERSION}) is unexpected to split.") | ||
49 | + endif() | ||
50 | +endif() | ||
51 | + | ||
52 | if(HAVE_PROTOBUF AND PROTOBUF_UPDATE_FILES AND NOT COMMAND PROTOBUF_GENERATE_CPP) | ||
53 | message(FATAL_ERROR "Can't configure protobuf dependency (BUILD_PROTOBUF=${BUILD_PROTOBUF} PROTOBUF_UPDATE_FILES=${PROTOBUF_UPDATE_FILES})") | ||
54 | endif() | ||
55 | @@ -89,3 +121,8 @@ if(HAVE_PROTOBUF) | ||
56 | BUILD_PROTOBUF THEN "build (${Protobuf_VERSION})" | ||
57 | ELSE "${__location} (${Protobuf_VERSION})") | ||
58 | endif() | ||
59 | + | ||
60 | +if(HAVE_ABSL_STRINGS AND HAVE_ABSL_LOG) | ||
61 | + list(APPEND CUSTOM_STATUS absl) | ||
62 | + list(APPEND CUSTOM_STATUS_absl " abseil-cpp:" "YES (${ABSL_STRINGS_VERSION})" ) | ||
63 | +endif() | ||
64 | diff --git a/modules/dnn/CMakeLists.txt b/modules/dnn/CMakeLists.txt | ||
65 | index 804b78ead2..d32007b37e 100644 | ||
66 | --- a/modules/dnn/CMakeLists.txt | ||
67 | +++ b/modules/dnn/CMakeLists.txt | ||
68 | @@ -149,6 +149,15 @@ if(NOT BUILD_PROTOBUF) | ||
69 | list(APPEND include_dirs ${Protobuf_INCLUDE_DIRS}) | ||
70 | endif() | ||
71 | |||
72 | +if(HAVE_ABSL_STRINGS) | ||
73 | + list(APPEND libs ${ABSL_STRINGS_LIBRARIES}) | ||
74 | + list(APPEND include_dirs ${ABSL_STRTRINGS_INCLUDE_DIRS}) | ||
75 | +endif() | ||
76 | +if(HAVE_ABSL_LOG) | ||
77 | + list(APPEND libs ${ABSL_LOG_LIBRARIES}) | ||
78 | + list(APPEND include_dirs ${ABSL_LOG_INCLUDE_DIRS}) | ||
79 | +endif() | ||
80 | + | ||
81 | set(sources_options "") | ||
82 | |||
83 | list(APPEND libs ${LAPACK_LIBRARIES}) | ||
84 | From 06a7669521d205f647d3e718322ccd153cdbbb77 Mon Sep 17 00:00:00 2001 | ||
85 | From: Kumataro <Kumataro@users.noreply.github.com> | ||
86 | Date: Sun, 8 Oct 2023 09:39:35 +0900 | ||
87 | Subject: [PATCH] dnn: disable some tests for external protobuf | ||
88 | |||
89 | --- | ||
90 | modules/dnn/CMakeLists.txt | 5 +++++ | ||
91 | modules/dnn/src/caffe/caffe_io.cpp | 24 ++++++++++++++++++++++-- | ||
92 | modules/dnn/test/test_layers.cpp | 16 ++++++++++++++++ | ||
93 | 3 files changed, 43 insertions(+), 2 deletions(-) | ||
94 | |||
95 | diff --git a/modules/dnn/CMakeLists.txt b/modules/dnn/CMakeLists.txt | ||
96 | index d32007b37e..face38465f 100644 | ||
97 | --- a/modules/dnn/CMakeLists.txt | ||
98 | +++ b/modules/dnn/CMakeLists.txt | ||
99 | @@ -254,6 +254,12 @@ ocv_create_module(${libs} ${dnn_runtime_libs}) | ||
100 | ocv_add_samples() | ||
101 | ocv_add_accuracy_tests(${dnn_runtime_libs}) | ||
102 | |||
103 | +if(NOT BUILD_PROTOBUF) | ||
104 | + if(TARGET opencv_test_dnn) | ||
105 | + ocv_target_compile_definitions(opencv_test_dnn PRIVATE "OPENCV_DNN_EXTERNAL_PROTOBUF=1") | ||
106 | + endif() | ||
107 | +endif() | ||
108 | + | ||
109 | set(perf_path "${CMAKE_CURRENT_LIST_DIR}/perf") | ||
110 | file(GLOB_RECURSE perf_srcs "${perf_path}/*.cpp") | ||
111 | file(GLOB_RECURSE perf_hdrs "${perf_path}/*.hpp" "${perf_path}/*.h") | ||
112 | @@ -318,3 +322,4 @@ if(OPENCV_TEST_DNN_TFLITE) | ||
113 | ocv_target_compile_definitions(opencv_perf_dnn PRIVATE "OPENCV_TEST_DNN_TFLITE=1") | ||
114 | endif() | ||
115 | endif() | ||
116 | + | ||
117 | diff --git a/modules/dnn/src/caffe/caffe_io.cpp b/modules/dnn/src/caffe/caffe_io.cpp | ||
118 | index ebecf95eea..ebceca84cf 100644 | ||
119 | --- a/modules/dnn/src/caffe/caffe_io.cpp | ||
120 | +++ b/modules/dnn/src/caffe/caffe_io.cpp | ||
121 | @@ -1130,7 +1130,17 @@ bool ReadProtoFromTextFile(const char* filename, Message* proto) { | ||
122 | parser.AllowUnknownField(true); | ||
123 | parser.SetRecursionLimit(1000); | ||
124 | #endif | ||
125 | - return parser.Parse(&input, proto); | ||
126 | + const bool ret = parser.Parse(&input, proto); | ||
127 | + | ||
128 | +#ifdef OPENCV_DNN_EXTERNAL_PROTOBUF | ||
129 | + if(!ret) | ||
130 | + { | ||
131 | + LOG(ERROR) << "Some data requires patched protobuf (available in OpenCV source tree only)."; | ||
132 | + CV_Error_(Error::StsError,("Some data requires patched protobuf (available in OpenCV source tree only).")); | ||
133 | + } | ||
134 | +#endif | ||
135 | + | ||
136 | + return ret; | ||
137 | } | ||
138 | |||
139 | bool ReadProtoFromBinaryFile(const char* filename, Message* proto) { | ||
140 | @@ -1148,7 +1158,17 @@ bool ReadProtoFromTextBuffer(const char* data, size_t len, Message* proto) { | ||
141 | parser.AllowUnknownField(true); | ||
142 | parser.SetRecursionLimit(1000); | ||
143 | #endif | ||
144 | - return parser.Parse(&input, proto); | ||
145 | + const bool ret = parser.Parse(&input, proto); | ||
146 | + | ||
147 | +#ifdef OPENCV_DNN_EXTERNAL_PROTOBUF | ||
148 | + if(!ret) | ||
149 | + { | ||
150 | + LOG(ERROR) << "Some data requires patched protobuf (available in OpenCV source tree only)."; | ||
151 | + CV_Error_(Error::StsError,("Some data requires patched protobuf (available in OpenCV source tree only).")); | ||
152 | + } | ||
153 | +#endif | ||
154 | + | ||
155 | + return ret; | ||
156 | } | ||
157 | |||
158 | |||
159 | diff --git a/modules/dnn/test/test_layers.cpp b/modules/dnn/test/test_layers.cpp | ||
160 | index 763d94b99c..a07d442d76 100644 | ||
161 | --- a/modules/dnn/test/test_layers.cpp | ||
162 | +++ b/modules/dnn/test/test_layers.cpp | ||
163 | @@ -754,7 +754,11 @@ TEST_F(Layer_RNN_Test, get_set_test) | ||
164 | EXPECT_EQ(shape(outputs[1]), shape(nT, nS, nH)); | ||
165 | } | ||
166 | |||
167 | +#ifndef OPENCV_DNN_EXTERNAL_PROTOBUF | ||
168 | TEST_P(Test_Caffe_layers, Accum) | ||
169 | +#else | ||
170 | +TEST_P(Test_Caffe_layers, DISABLED_Accum) // requires patched protobuf (available in OpenCV source tree only) | ||
171 | +#endif | ||
172 | { | ||
173 | if (backend == DNN_BACKEND_OPENCV && target != DNN_TARGET_CPU) | ||
174 | applyTestTag(CV_TEST_TAG_DNN_SKIP_OPENCL, CV_TEST_TAG_DNN_SKIP_OPENCL_FP16); | ||
175 | @@ -778,7 +782,11 @@ TEST_P(Test_Caffe_layers, ChannelNorm) | ||
176 | testLayerUsingCaffeModels("channel_norm", false, false); | ||
177 | } | ||
178 | |||
179 | +#ifndef OPENCV_DNN_EXTERNAL_PROTOBUF | ||
180 | TEST_P(Test_Caffe_layers, DataAugmentation) | ||
181 | +#else | ||
182 | +TEST_P(Test_Caffe_layers, DISABLED_DataAugmentation) // requires patched protobuf (available in OpenCV source tree only) | ||
183 | +#endif | ||
184 | { | ||
185 | if (backend == DNN_BACKEND_OPENCV && target == DNN_TARGET_OPENCL_FP16) | ||
186 | applyTestTag(CV_TEST_TAG_DNN_SKIP_OPENCL_FP16); | ||
187 | @@ -787,7 +795,11 @@ TEST_P(Test_Caffe_layers, DataAugmentation) | ||
188 | testLayerUsingCaffeModels("data_augmentation_8x6", true, false); | ||
189 | } | ||
190 | |||
191 | +#ifndef OPENCV_DNN_EXTERNAL_PROTOBUF | ||
192 | TEST_P(Test_Caffe_layers, Resample) | ||
193 | +#else | ||
194 | +TEST_P(Test_Caffe_layers, DISABLED_Resample) // requires patched protobuf (available in OpenCV source tree only) | ||
195 | +#endif | ||
196 | { | ||
197 | if (backend != DNN_BACKEND_OPENCV) | ||
198 | applyTestTag(CV_TEST_TAG_DNN_SKIP_IE_NN_BUILDER, CV_TEST_TAG_DNN_SKIP_IE_NGRAPH); | ||
199 | @@ -795,7 +807,11 @@ TEST_P(Test_Caffe_layers, Resample) | ||
200 | testLayerUsingCaffeModels("nearest", false, false); | ||
201 | } | ||
202 | |||
203 | +#ifndef OPENCV_DNN_EXTERNAL_PROTOBUF | ||
204 | TEST_P(Test_Caffe_layers, Correlation) | ||
205 | +#else | ||
206 | +TEST_P(Test_Caffe_layers, DISABLED_Correlation) // requires patched protobuf (available in OpenCV source tree only) | ||
207 | +#endif | ||
208 | { | ||
209 | if (backend == DNN_BACKEND_OPENCV && target == DNN_TARGET_OPENCL_FP16) | ||
210 | applyTestTag(CV_TEST_TAG_DNN_SKIP_IE_NGRAPH, CV_TEST_TAG_DNN_SKIP_IE_NN_BUILDER, | ||
211 | From 2c33798f41942aefc203183d673ce4846f32dba4 Mon Sep 17 00:00:00 2001 | ||
212 | From: Kumataro <Kumataro@users.noreply.github.com> | ||
213 | Date: Sun, 8 Oct 2023 13:28:40 +0900 | ||
214 | Subject: [PATCH] use GREATER instead of GREATER_EQUAL and remove new blank | ||
215 | line at EOF | ||
216 | |||
217 | --- | ||
218 | cmake/OpenCVFindProtobuf.cmake | 6 ++++-- | ||
219 | 1 file changed, 4 insertions(+), 2 deletions(-) | ||
220 | |||
221 | diff --git a/cmake/OpenCVFindProtobuf.cmake b/cmake/OpenCVFindProtobuf.cmake | ||
222 | index 9bd5c28db8..ba147526d6 100644 | ||
223 | --- a/cmake/OpenCVFindProtobuf.cmake | ||
224 | +++ b/cmake/OpenCVFindProtobuf.cmake | ||
225 | @@ -71,12 +71,14 @@ endif() | ||
226 | # In Protocol Buffers v22.0 and later drops C++11 support and depends abseil-cpp. | ||
227 | # Details: https://protobuf.dev/news/2022-08-03/ | ||
228 | # And if std::text_view is in abseil-cpp requests C++17 and later. | ||
229 | + | ||
230 | if(HAVE_PROTOBUF) | ||
231 | if("${Protobuf_VERSION}" MATCHES [[[0-9]+.([0-9]+).[0-9]+]]) | ||
232 | - string(COMPARE GREATER_EQUAL "${CMAKE_MATCH_1}" "22" REQUEST_ABSL) | ||
233 | + string(COMPARE GREATER "${CMAKE_MATCH_1}" "21" REQUEST_ABSL) # >=22 | ||
234 | |||
235 | if(REQUEST_ABSL) | ||
236 | - string(COMPARE GREATER_EQUAL "${CMAKE_CXX_STANDARD}" "17" USED_AFTER_CXX17) | ||
237 | + string(COMPARE GREATER "${CMAKE_CXX_STANDARD}" "16" USED_AFTER_CXX17) # >=17 | ||
238 | + | ||
239 | if(NOT USED_AFTER_CXX17) | ||
240 | message("CMAKE_CXX_STANDARD : ${CMAKE_CXX_STANDARD}") | ||
241 | message("protobuf : ${Protobuf_VERSION}") | ||
242 | From cd709eefbeedd116bf3495b42280323b932791ff Mon Sep 17 00:00:00 2001 | ||
243 | From: Kumataro <Kumataro@users.noreply.github.com> | ||
244 | Date: Mon, 9 Oct 2023 21:51:04 +0900 | ||
245 | Subject: [PATCH] fix for review | ||
246 | |||
247 | --- | ||
248 | cmake/OpenCVFindProtobuf.cmake | 5 ---- | ||
249 | modules/dnn/src/caffe/caffe_io.cpp | 24 ++---------------- | ||
250 | modules/dnn/test/test_layers.cpp | 40 +++++++++++++++--------------- | ||
251 | 3 files changed, 22 insertions(+), 47 deletions(-) | ||
252 | |||
253 | diff --git a/cmake/OpenCVFindProtobuf.cmake b/cmake/OpenCVFindProtobuf.cmake | ||
254 | index ba147526d6..2faf1010bf 100644 | ||
255 | --- a/cmake/OpenCVFindProtobuf.cmake | ||
256 | +++ b/cmake/OpenCVFindProtobuf.cmake | ||
257 | @@ -123,8 +123,3 @@ if(HAVE_PROTOBUF) | ||
258 | BUILD_PROTOBUF THEN "build (${Protobuf_VERSION})" | ||
259 | ELSE "${__location} (${Protobuf_VERSION})") | ||
260 | endif() | ||
261 | - | ||
262 | -if(HAVE_ABSL_STRINGS AND HAVE_ABSL_LOG) | ||
263 | - list(APPEND CUSTOM_STATUS absl) | ||
264 | - list(APPEND CUSTOM_STATUS_absl " abseil-cpp:" "YES (${ABSL_STRINGS_VERSION})" ) | ||
265 | -endif() | ||
266 | diff --git a/modules/dnn/src/caffe/caffe_io.cpp b/modules/dnn/src/caffe/caffe_io.cpp | ||
267 | index ebceca84cf..ebecf95eea 100644 | ||
268 | --- a/modules/dnn/src/caffe/caffe_io.cpp | ||
269 | +++ b/modules/dnn/src/caffe/caffe_io.cpp | ||
270 | @@ -1130,17 +1130,7 @@ bool ReadProtoFromTextFile(const char* filename, Message* proto) { | ||
271 | parser.AllowUnknownField(true); | ||
272 | parser.SetRecursionLimit(1000); | ||
273 | #endif | ||
274 | - const bool ret = parser.Parse(&input, proto); | ||
275 | - | ||
276 | -#ifdef OPENCV_DNN_EXTERNAL_PROTOBUF | ||
277 | - if(!ret) | ||
278 | - { | ||
279 | - LOG(ERROR) << "Some data requires patched protobuf (available in OpenCV source tree only)."; | ||
280 | - CV_Error_(Error::StsError,("Some data requires patched protobuf (available in OpenCV source tree only).")); | ||
281 | - } | ||
282 | -#endif | ||
283 | - | ||
284 | - return ret; | ||
285 | + return parser.Parse(&input, proto); | ||
286 | } | ||
287 | |||
288 | bool ReadProtoFromBinaryFile(const char* filename, Message* proto) { | ||
289 | @@ -1158,17 +1148,7 @@ bool ReadProtoFromTextBuffer(const char* data, size_t len, Message* proto) { | ||
290 | parser.AllowUnknownField(true); | ||
291 | parser.SetRecursionLimit(1000); | ||
292 | #endif | ||
293 | - const bool ret = parser.Parse(&input, proto); | ||
294 | - | ||
295 | -#ifdef OPENCV_DNN_EXTERNAL_PROTOBUF | ||
296 | - if(!ret) | ||
297 | - { | ||
298 | - LOG(ERROR) << "Some data requires patched protobuf (available in OpenCV source tree only)."; | ||
299 | - CV_Error_(Error::StsError,("Some data requires patched protobuf (available in OpenCV source tree only).")); | ||
300 | - } | ||
301 | -#endif | ||
302 | - | ||
303 | - return ret; | ||
304 | + return parser.Parse(&input, proto); | ||
305 | } | ||
306 | |||
307 | |||
308 | diff --git a/modules/dnn/test/test_layers.cpp b/modules/dnn/test/test_layers.cpp | ||
309 | index a07d442d76..5c6fc541d7 100644 | ||
310 | --- a/modules/dnn/test/test_layers.cpp | ||
311 | +++ b/modules/dnn/test/test_layers.cpp | ||
312 | @@ -754,17 +754,17 @@ TEST_F(Layer_RNN_Test, get_set_test) | ||
313 | EXPECT_EQ(shape(outputs[1]), shape(nT, nS, nH)); | ||
314 | } | ||
315 | |||
316 | -#ifndef OPENCV_DNN_EXTERNAL_PROTOBUF | ||
317 | TEST_P(Test_Caffe_layers, Accum) | ||
318 | -#else | ||
319 | -TEST_P(Test_Caffe_layers, DISABLED_Accum) // requires patched protobuf (available in OpenCV source tree only) | ||
320 | -#endif | ||
321 | { | ||
322 | +#ifdef OPENCV_DNN_EXTERNAL_PROTOBUF | ||
323 | + throw SkipTestException("Requires patched protobuf"); | ||
324 | +#else | ||
325 | if (backend == DNN_BACKEND_OPENCV && target != DNN_TARGET_CPU) | ||
326 | applyTestTag(CV_TEST_TAG_DNN_SKIP_OPENCL, CV_TEST_TAG_DNN_SKIP_OPENCL_FP16); | ||
327 | |||
328 | testLayerUsingCaffeModels("accum", false, false, 0.0, 0.0, 2); | ||
329 | testLayerUsingCaffeModels("accum_ref", false, false, 0.0, 0.0, 2); | ||
330 | +#endif | ||
331 | } | ||
332 | |||
333 | TEST_P(Test_Caffe_layers, FlowWarp) | ||
334 | @@ -782,42 +782,42 @@ TEST_P(Test_Caffe_layers, ChannelNorm) | ||
335 | testLayerUsingCaffeModels("channel_norm", false, false); | ||
336 | } | ||
337 | |||
338 | -#ifndef OPENCV_DNN_EXTERNAL_PROTOBUF | ||
339 | TEST_P(Test_Caffe_layers, DataAugmentation) | ||
340 | -#else | ||
341 | -TEST_P(Test_Caffe_layers, DISABLED_DataAugmentation) // requires patched protobuf (available in OpenCV source tree only) | ||
342 | -#endif | ||
343 | { | ||
344 | +#ifdef OPENCV_DNN_EXTERNAL_PROTOBUF | ||
345 | + throw SkipTestException("Requires patched protobuf"); | ||
346 | +#else | ||
347 | if (backend == DNN_BACKEND_OPENCV && target == DNN_TARGET_OPENCL_FP16) | ||
348 | applyTestTag(CV_TEST_TAG_DNN_SKIP_OPENCL_FP16); | ||
349 | testLayerUsingCaffeModels("data_augmentation", true, false); | ||
350 | testLayerUsingCaffeModels("data_augmentation_2x1", true, false); | ||
351 | testLayerUsingCaffeModels("data_augmentation_8x6", true, false); | ||
352 | +#endif | ||
353 | } | ||
354 | |||
355 | -#ifndef OPENCV_DNN_EXTERNAL_PROTOBUF | ||
356 | TEST_P(Test_Caffe_layers, Resample) | ||
357 | -#else | ||
358 | -TEST_P(Test_Caffe_layers, DISABLED_Resample) // requires patched protobuf (available in OpenCV source tree only) | ||
359 | -#endif | ||
360 | { | ||
361 | +#ifdef OPENCV_DNN_EXTERNAL_PROTOBUF | ||
362 | + throw SkipTestException("Requires patched protobuf"); | ||
363 | +#else | ||
364 | if (backend != DNN_BACKEND_OPENCV) | ||
365 | applyTestTag(CV_TEST_TAG_DNN_SKIP_IE_NN_BUILDER, CV_TEST_TAG_DNN_SKIP_IE_NGRAPH); | ||
366 | testLayerUsingCaffeModels("nearest_2inps", false, false, 0.0, 0.0, 2); | ||
367 | testLayerUsingCaffeModels("nearest", false, false); | ||
368 | +#endif | ||
369 | } | ||
370 | |||
371 | -#ifndef OPENCV_DNN_EXTERNAL_PROTOBUF | ||
372 | TEST_P(Test_Caffe_layers, Correlation) | ||
373 | -#else | ||
374 | -TEST_P(Test_Caffe_layers, DISABLED_Correlation) // requires patched protobuf (available in OpenCV source tree only) | ||
375 | -#endif | ||
376 | { | ||
377 | +#ifdef OPENCV_DNN_EXTERNAL_PROTOBUF | ||
378 | + throw SkipTestException("Requires patched protobuf"); | ||
379 | +#else | ||
380 | if (backend == DNN_BACKEND_OPENCV && target == DNN_TARGET_OPENCL_FP16) | ||
381 | applyTestTag(CV_TEST_TAG_DNN_SKIP_IE_NGRAPH, CV_TEST_TAG_DNN_SKIP_IE_NN_BUILDER, | ||
382 | CV_TEST_TAG_DNN_SKIP_OPENCL, CV_TEST_TAG_DNN_SKIP_OPENCL_FP16); | ||
383 | testLayerUsingCaffeModels("correlation", false, false, 0.0, 0.0, 2); | ||
384 | } | ||
385 | +#endif | ||
386 | |||
387 | TEST_P(Test_Caffe_layers, Convolution2Inputs) | ||
388 | { | ||
389 | @@ -1657,12 +1657,11 @@ private: | ||
390 | int outWidth, outHeight, zoomFactor; | ||
391 | }; | ||
392 | |||
393 | -#ifndef OPENCV_DNN_EXTERNAL_PROTOBUF | ||
394 | TEST_P(Test_Caffe_layers, Interp) | ||
395 | -#else | ||
396 | -TEST_P(Test_Caffe_layers, DISABLED_Interp) // requires patched protobuf (available in OpenCV source tree only) | ||
397 | -#endif | ||
398 | { | ||
399 | +#ifdef OPENCV_DNN_EXTERNAL_PROTOBUF | ||
400 | + throw SkipTestException("Requires patched protobuf"); | ||
401 | +#else | ||
402 | #if defined(INF_ENGINE_RELEASE) && INF_ENGINE_VER_MAJOR_EQ(2021030000) | ||
403 | if (backend == DNN_BACKEND_INFERENCE_ENGINE_NGRAPH && target == DNN_TARGET_MYRIAD) | ||
404 | applyTestTag(CV_TEST_TAG_DNN_SKIP_IE_MYRIAD, CV_TEST_TAG_DNN_SKIP_IE_NGRAPH); // exception | ||
405 | @@ -1686,6 +1685,7 @@ TEST_P(Test_Caffe_layers, DISABLED_Interp) // requires patched protobuf (availa | ||
406 | |||
407 | // Test an implemented layer. | ||
408 | testLayerUsingCaffeModels("layer_interp", false, false); | ||
409 | +#endif | ||
410 | } | ||
411 | |||
412 | 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.8.0.bb index 9564bbbe9d..85eb230b08 100644 --- a/meta-oe/recipes-support/opencv/opencv_4.8.0.bb +++ b/meta-oe/recipes-support/opencv/opencv_4.8.0.bb | |||
@@ -31,6 +31,7 @@ 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 \ | ||
34 | " | 35 | " |
35 | SRC_URI:append:riscv64 = " file://0001-Use-Os-to-compile-tinyxml2.cpp.patch;patchdir=contrib" | 36 | SRC_URI:append:riscv64 = " file://0001-Use-Os-to-compile-tinyxml2.cpp.patch;patchdir=contrib" |
36 | 37 | ||
@@ -98,7 +99,7 @@ PACKAGECONFIG:remove:libc-musl:riscv32 = "tbb" | |||
98 | PACKAGECONFIG[gapi] = "-DWITH_ADE=ON -Dade_DIR=${STAGING_LIBDIR},-DWITH_ADE=OFF,ade" | 99 | PACKAGECONFIG[gapi] = "-DWITH_ADE=ON -Dade_DIR=${STAGING_LIBDIR},-DWITH_ADE=OFF,ade" |
99 | PACKAGECONFIG[amdblas] = "-DWITH_OPENCLAMDBLAS=ON,-DWITH_OPENCLAMDBLAS=OFF,libclamdblas," | 100 | PACKAGECONFIG[amdblas] = "-DWITH_OPENCLAMDBLAS=ON,-DWITH_OPENCLAMDBLAS=OFF,libclamdblas," |
100 | PACKAGECONFIG[amdfft] = "-DWITH_OPENCLAMDFFT=ON,-DWITH_OPENCLAMDFFT=OFF,libclamdfft," | 101 | PACKAGECONFIG[amdfft] = "-DWITH_OPENCLAMDFFT=ON,-DWITH_OPENCLAMDFFT=OFF,libclamdfft," |
101 | PACKAGECONFIG[dnn] = "-DBUILD_opencv_dnn=ON -DPROTOBUF_UPDATE_FILES=ON -DBUILD_PROTOBUF=OFF,-DBUILD_opencv_dnn=OFF,protobuf protobuf-native," | 102 | PACKAGECONFIG[dnn] = "-DBUILD_opencv_dnn=ON -DPROTOBUF_UPDATE_FILES=ON -DBUILD_PROTOBUF=OFF -DCMAKE_CXX_STANDARD=17,-DBUILD_opencv_dnn=OFF,protobuf protobuf-native," |
102 | PACKAGECONFIG[eigen] = "-DWITH_EIGEN=ON,-DWITH_EIGEN=OFF,libeigen gflags glog," | 103 | PACKAGECONFIG[eigen] = "-DWITH_EIGEN=ON,-DWITH_EIGEN=OFF,libeigen gflags glog," |
103 | PACKAGECONFIG[freetype] = "-DBUILD_opencv_freetype=ON,-DBUILD_opencv_freetype=OFF,freetype," | 104 | PACKAGECONFIG[freetype] = "-DBUILD_opencv_freetype=ON,-DBUILD_opencv_freetype=OFF,freetype," |
104 | PACKAGECONFIG[gphoto2] = "-DWITH_GPHOTO2=ON,-DWITH_GPHOTO2=OFF,libgphoto2," | 105 | PACKAGECONFIG[gphoto2] = "-DWITH_GPHOTO2=ON,-DWITH_GPHOTO2=OFF,libgphoto2," |