783 Commits

Autor SHA1 Mensagem Data
Andrey Kamaev facab40745 Disable -fomit-frame-pointer for OS X Clang as it leads to crash on exception thrown 2013-03-01 19:44:17 +04:00
Andrey Kamaev 08545b8f96 Merge pull request #603 from taka-no-me:avoid_deps_on_missing_lib 2013-03-01 17:10:46 +04:00
Andrey Kamaev f22ee8fc19 Merge pull request #602 from bitwangyaoyao:2.4_fixAdd 2013-03-01 17:10:11 +04:00
Andrey Kamaev e6cb44edc3 Merge pull request #600 from taka-no-me:fix_build_warnings 2013-03-01 17:09:56 +04:00
Andrey Kamaev 1094179155 Avoid build falure in armeabi build with Android SDK 2013-03-01 16:50:42 +04:00
cuda-geek a706de2446 Merge pull request #601 from apavlenko:android_tutorial_update 2013-03-01 16:09:25 +04:00
yao 65bb4250a4 Fix a bug in addWeighted x64 mode
And a potential problem in remap
2013-03-01 18:08:53 +08:00
Andrey Pavlenko 07b1ccdeb0 removing redundant picture resize 2013-03-01 13:56:50 +04:00
Andrey Kamaev 2128b82c6b Merge pull request #598 from asmorkalov:lib_info_fix 2013-03-01 13:52:57 +04:00
Andrey Pavlenko 978132edc1 minor Android tutorial fixes 2013-03-01 13:52:14 +04:00
Andrey Kamaev 22d33373fa Fix build warnings on MSVC x64 and OS X clang 2013-03-01 13:29:43 +04:00
Andrey Kamaev eaaba1336a Merge pull request #595 from bitwangyaoyao:2.4_perfTest 2013-03-01 12:49:43 +04:00
Andrey Kamaev 85c7a36f93 Merge pull request #594 from asmorkalov:android_all_build_fix 2013-03-01 12:49:27 +04:00
Andrey Kamaev 6be6adbbed Merge pull request #593 from apavlenko:java_tutorial_fixes 2013-03-01 12:49:15 +04:00
Alexander Smorkalov da455efc26 Full package version fixed. 2013-03-01 12:44:14 +04:00
Vadim Pisarevsky a910360689 Merge pull request #586 from bitwangyaoyao:2.4_FixBFMatcher 2013-03-01 10:55:11 +04:00
yao 8f3883a28d fix a compile warning 2013-03-01 10:06:51 +08:00
yao 82b9854837 fix compile warnings 2013-03-01 08:47:20 +08:00
Alexander 3cfd3d3ee0 Build with OpenCV.mk for all terget fixed. 2013-02-28 21:43:57 +04:00
Andrey Pavlenko af2552d72c fixing issues from http://www.code.opencv.org/issues/2807 2013-02-28 19:11:24 +04:00
Andrey Kamaev c865b28243 Merge pull request #591 from jet47:gpu-sanity-tests 2013-02-28 18:08:11 +04:00
Andrey Kamaev 79cf292d78 Merge pull request #590 from apavlenko:java_fixes 2013-02-28 18:07:33 +04:00
Andrey Kamaev 1018d110d6 Merge pull request #589 from taka-no-me:2digit_pyversion 2013-02-28 18:06:43 +04:00
Andrey Kamaev fba0e6fc5c Merge pull request #587 from bitwangyaoyao:2.4_fixHog 2013-02-28 18:06:28 +04:00
Andrey Kamaev 4811988caf Merge pull request #585 from bitwangyaoyao:2.4_SURF 2013-02-28 18:06:14 +04:00
Andrey Kamaev 2a73a6c445 Merge pull request #525 from odeniz:2.4 2013-02-28 18:05:55 +04:00
Andrey Pavlenko d18b2c2502 patch -> revision 2013-02-28 17:19:52 +04:00
Andrey Pavlenko c24d7cc066 adding more version-related variables 2013-02-28 16:56:53 +04:00
Vladislav Vinogradov f533f0dca9 fixed gpu sanity tests 2013-02-28 16:54:37 +04:00
Andrey Kamaev bd38a1945d Honor 2-digit python version 2013-02-28 16:32:13 +04:00
Andrey Pavlenko 29b763dc60 updating samples to load JNI lib with correct suffix 2013-02-28 16:24:52 +04:00
Andrey Pavlenko 5321da92cb adding/fixing version suffix for desktop java library on all OSes 2013-02-28 16:12:44 +04:00
Andrey Kamaev f4b413e830 Merge pull request #570 from taka-no-me:fix_android_cmakeconfig 2013-02-28 15:45:45 +04:00
Andrey Kamaev 1f411b5a2b Merge pull request #572 from asmorkalov:manager_4_digit_version 2013-02-28 15:44:57 +04:00
Andrey Kamaev bf4c8c6ff1 Merge pull request #584 from bitwangyaoyao:2.4_perfTest 2013-02-28 15:44:06 +04:00
Andrey Kamaev d0e340bc80 Merge pull request #582 from bitwangyaoyao:2.4_fixBlend 2013-02-28 15:43:51 +04:00
Alexander Smorkalov ddc2e334da OpenCV version swithed to 4 digit in GUI and package revision number. 2013-02-28 12:59:24 +04:00
yao f12369a53c Fix ocl::HOG crash on Intel OCL 2013-02-28 16:56:39 +08:00
Andrey Kamaev 831580ef31 Merge pull request #578 from jet47:nmake-ffmpeg-copy 2013-02-28 12:56:26 +04:00
Andrey Kamaev 6ce51d88a4 Merge pull request #573 from jet47:config-cross-compilation 2013-02-28 12:56:08 +04:00
cuda-geek 0771fd82c0 Merge pull request #557 from jet47:gpu-sanity 2013-02-28 11:17:12 +04:00
yao f791344810 linux warning fix 2013-02-28 14:37:37 +08:00
Vladislav Vinogradov 61ef48eee6 fixed OpenCVConfig for cross-compilation:
* added CUDA to EXTRA libs if OpenCV uses it
* added -rpath-link option for linker if OpenCV was built as SHARED libs
2013-02-28 10:33:05 +04:00
yao 504008dbe0 Fix ocl::bruteforcematcher crash on Intel OCL 2013-02-28 14:31:08 +08:00
Vladislav Vinogradov df456245e7 fixed ffmpeg destination folder for NMake generator 2013-02-28 10:16:41 +04:00
yao 7c1f1d8837 fix bug #2787 2013-02-28 14:05:36 +08:00
yao ed3c3822fc adjust some test cases, use original template file name in Haar 2013-02-28 12:15:13 +08:00
yao 69eebdd608 fix the blend crash in some cases 2013-02-28 09:03:10 +08:00
Andrey Kamaev 2be893a21e Revise git attributes 2013-02-28 03:18:54 +04:00
Andrey Kamaev a5d2253be8 Merge pull request #544 from AnnaKogan8:added-regressions-only-option 2013-02-28 00:38:47 +04:00
Andrey Kamaev 5b7a4cd955 Merge pull request #579 from bitwangyaoyao:2.4_perfTest 2013-02-27 19:34:17 +04:00
Andrey Kamaev 0a8711d76b Merge pull request #576 from bitwangyaoyao:2.4_customMat2 2013-02-27 19:33:54 +04:00
Andrey Kamaev af13c8604d Merge pull request #568 from bitwangyaoyao:2.4_moments 2013-02-27 19:33:26 +04:00
yao cbff75db9e fix build errors 2013-02-27 21:56:03 +08:00
yao bf427c01c1 adjust matchTemplate in performance sample, as current version is too slow when template size isn't small 2013-02-27 21:41:04 +08:00
Andrey Kamaev 024185b9ed Fix OpenCVConfig.cmake generated for Android platform (issue #2496)
* fix path to libraries in Android SDK
* allow to link to opencv_java.so as Android.mk does

To link to opencv_java.so you can either change your cmake to find OpenCV as

    find_package(OpenCV opencv_java)

or pass -DOpenCV_FIND_COMPONENTS=opencv_java to your cmake command
2013-02-27 15:04:29 +04:00
yao 9ccf27c7f5 add interfaces enable custom oclMat device memory type 2013-02-27 17:32:32 +08:00
cuda-geek 5d43ce853e Merge pull request #559 from jet47:gpu-hough-circles 2013-02-27 12:29:45 +04:00
Andrey Kamaev 1a82ceac9c Merge pull request #563 from taka-no-me:perf_classify_speedups 2013-02-27 11:37:18 +04:00
Andrey Kamaev b836e3c65b Merge pull request #556 from bitwangyaoyao:2.4_SURF 2013-02-27 11:37:04 +04:00
Andrey Kamaev f03c04c151 Merge pull request #554 from bitwangyaoyao:2.4_impvInterFrame 2013-02-27 11:36:40 +04:00
Andrey Kamaev c54c7c8b2c Merge pull request #553 from bitwangyaoyao:2.4_perfTest 2013-02-27 11:36:23 +04:00
yao dba2ec0539 remove the compile warnings 2013-02-27 14:53:27 +08:00
yao 6df23428af Add moments function 2013-02-27 13:45:16 +08:00
yao 6409a4b112 fix the compile warnings 2013-02-27 11:16:46 +08:00
yao 9ec5333a9b pyrlk also take advantages of cl_image support detection 2013-02-27 10:45:07 +08:00
yao da47ccec9c Put the cl_image support detection in utils 2013-02-27 10:24:03 +08:00
Andrey Kamaev 8304f17d63 Merge pull request #565 from cuda-geek:auto-arch 2013-02-27 00:05:16 +04:00
Andrey Kamaev e9307259d7 Merge pull request #564 from apavlenko:eclipse_import_fix 2013-02-27 00:05:02 +04:00
marina.kolpakova 7a08bbbcc7 add CUDA_GENERATION macro 2013-02-26 20:13:47 +04:00
cuda-geek 0e5255d4fb Merge pull request #561 from asmorkalov:android_tutorial_2_4_4_update 2013-02-26 19:58:34 +04:00
Andrey Pavlenko 1c1c3c29c3 fixing eclipse import errors 2013-02-26 19:52:59 +04:00
Andrey Kamaev 4d2c864bea Add option --with-score to summary.py to automatically classify speedups
Legend for new column is:
* FASTER - strong speedup
* faster - spedup is detected but it is unreliable
* <empty> - no change in speed
* slower - slowdown is detected but it is unreliable
* SLOWER - strong slowdown
2013-02-26 19:42:51 +04:00
Andrey Kamaev 2304d5367f Merge pull request #549 from asmorkalov:android_mips_static_build_fix 2013-02-26 19:03:43 +04:00
Andrey Kamaev f6dd3651ea Merge pull request #552 from taka-no-me:fix_invert 2013-02-26 18:31:30 +04:00
Andrey Kamaev dcf7a69430 Merge pull request #555 from bitwangyaoyao:2.4_fixFft 2013-02-26 18:31:17 +04:00
yao 04faaa9e35 Fix ocl::dft the compile warning on Linux 2013-02-26 21:18:51 +08:00
Alexander Smorkalov 8458f5c489 Android tutorial updated
OpenCV version incremented;
New CvCameraViewListener interface description added.
2013-02-26 16:35:02 +04:00
yao 3ff5689fe5 Merge branch '2.4_fixFft' of https://github.com/bitwangyaoyao/opencv into 2.4 2013-02-26 20:30:42 +08:00
Vladislav Vinogradov 10402c8a85 fixed gpu HoughCircles test 2013-02-26 16:10:35 +04:00
Vladislav Vinogradov c9868fc01f fixed warp tests 2013-02-26 13:53:39 +04:00
Vladislav Vinogradov 4f7cfbc26e fixed gpu bitwise operations with scalars 2013-02-26 13:53:39 +04:00
Vladislav Vinogradov a138e12a26 refactored gpu perf tests and fixed sanity tests 2013-02-26 13:53:38 +04:00
yao ea433cc496 remove the device specific logic 2013-02-26 17:53:08 +08:00
yao 62f8b0fc48 Fix ocl::dft error when program end on Linux 2013-02-26 17:44:19 +08:00
yao 0ac7f0d374 Simplify the bind texture logic of interpolate frame function 2013-02-26 17:12:03 +08:00
yao e3a715882e fix the mismatch of perf_test, add a performance sample for ocl module 2013-02-26 16:52:30 +08:00
Alexander Smorkalov 11885e86ee Feature #2833 Sepia size in Image Manipulations demo implemented. 2013-02-26 11:25:33 +04:00
Andrey Kamaev ab221e94c0 Fix invert under MSVC 2013-02-26 11:16:57 +04:00
Anna Kogan a9b1c5db78 Added --regressions-only=X-FACTOR option 2013-02-26 11:09:17 +04:00
Alexander Smorkalov 3c7bc6a51e Static ANdroid samples build for MIPS fixed 2013-02-26 10:32:10 +04:00
Andrey Kamaev 0d12f451be Merge pull request #524 from LeonidBeynenson:add_float_and_unsigned_parameters_to_cv_algorithm 2013-02-26 01:00:55 +04:00
Andrey Kamaev 11b83d4000 Merge pull request #547 from vpisarev:fixes_244 2013-02-26 01:00:36 +04:00
Vadim Pisarevsky 416432a8e5 replaced tabs with spaces 2013-02-25 23:10:38 +04:00
Vadim Pisarevsky 087537463d attempt to make the ultimate fix for the failure in Core_Invert.small 2013-02-25 22:46:30 +04:00
Vadim Pisarevsky 25bbcba0ea fixed Core_MulSpectrums failure 2013-02-25 22:02:24 +04:00
Andrey Kamaev 9f15daf0a0 Merge pull request #542 from asmorkalov:manager_2.4.4_filter 2013-02-25 18:00:14 +04:00
LeonidBeynenson 41dc829341 Made changes to avoid warnings (Windows compilation). 2013-02-25 15:38:59 +04:00
Alexander Smorkalov bb7af3f78e OpenCV Manager preparation to 2.4.4 release
2.4.4 constant added to Manager filter;
Added additional native tests.
2013-02-25 15:34:06 +04:00
Andrey Kamaev 6082f351ab Merge pull request #541 from bitwangyaoyao:2.4_fixCvtColor 2013-02-25 14:04:02 +04:00
Andrey Kamaev b6cdc849db Merge pull request #540 from hgaspar:244 2013-02-25 14:03:36 +04:00
yao 59ebf4ed9f Fix the ocl::cvtColor mismatch on some devices 2013-02-25 15:19:39 +08:00
hgaspar 60981565fa updated the ocl module introduction 2013-02-24 22:34:44 -05:00
Andrey Kamaev 620c699456 Merge pull request #538 from NCBee:patch-2 2013-02-24 15:27:01 +04:00
Andrey Kamaev cfd019e2a2 Merge pull request #537 from bitwangyaoyao:2.4_fixWarpAffine 2013-02-24 15:26:42 +04:00
Andrey Kamaev 7047c23489 Merge pull request #535 from bitwangyaoyao:2.4_clean 2013-02-24 15:26:24 +04:00
Andrey Kamaev 3b1fc16f36 Merge pull request #536 from bitwangyaoyao:2.4_fixHaar 2013-02-24 15:26:06 +04:00
NCBee 7249457771 Update doc/tutorials/core/adding_images/adding_images.rst
Quick fix for: http://code.opencv.org/issues/2803
2013-02-23 10:28:24 -05:00
yao f1a5c1328c remove the empty implementation when HAVE_OPENCL not defined 2013-02-23 20:50:03 +08:00
yao b7ebedc23e fix mismatch of WarpAffine 2013-02-23 17:43:10 +08:00
yao 9bbf170054 some cleanup 2013-02-23 15:34:43 +08:00
yao 720eaf1e1a fix the haar kernel problems on Nvidia and Intel OCL 2013-02-23 15:19:46 +08:00
yao d050159f07 Remove the perf running from ocl::matchTemplate accuracy tests 2013-02-23 14:30:04 +08:00
Oscar Deniz Suarez 07ea88b8c6 Update samples/c/smiledetect.cpp
Fixed isdigit() Android build error
2013-02-22 16:23:42 +01:00
OpenCV Buildbot e6dd4e840d Update FFMPEG wrapper binaries 2013-02-22 16:56:01 +04:00
Andrey Kamaev dfbd5f6a02 Merge pull request #506 from asmorkalov:crosscompile_tutorial 2013-02-22 16:41:16 +04:00
Andrey Kamaev 9bbb0ed060 Merge pull request #531 from asmorkalov:android_mips_fix 2013-02-22 16:40:20 +04:00
Andrey Kamaev 051aa4cb98 Merge pull request #530 from bitwangyaoyao:2.4_fixEqHist 2013-02-22 16:40:06 +04:00
Andrey Kamaev 58f546dd93 Merge pull request #529 from bitwangyaoyao:2.4_fixGemm 2013-02-22 16:39:50 +04:00
Andrey Kamaev 3406832aa2 Merge pull request #528 from bitwangyaoyao:2.4_fixPyrLK 2013-02-22 16:35:30 +04:00
Andrey Kamaev b1975fb13d Merge pull request #527 from bitwangyaoyao:2.4_fixMeanShift 2013-02-22 16:35:18 +04:00
Andrey Kamaev e68901bbce Merge pull request #523 from taka-no-me:fix_2815 2013-02-22 16:34:28 +04:00
Andrey Kamaev 7cd4edd695 Merge pull request #518 from asmorkalov:ts_refactor 2013-02-22 16:34:14 +04:00
yao 1a488c0542 fix the warning on Linux when OpenCL 1.2 not supported 2013-02-22 18:33:16 +08:00
Alexander Smorkalov 4bbdfbc9e7 Bug #2821 Installation of OpenCV modules breaks build on MIPS Android fixed.
Native camera libs for MIPS installation fixed.
2013-02-22 11:57:42 +04:00
yao 7810254198 Fix ocl::equalizeHist mismatch 2013-02-22 15:48:31 +08:00
yao 3316d0bfb2 Fix the compiling errors of gemm on Linux 2013-02-22 15:05:49 +08:00
cuda-geek dea6148a1a Merge pull request #526 from taka-no-me:fix_compatibility 2013-02-22 09:18:19 +04:00
yao 2e3f4fdada fix pyrLK's mismatch on Linux 2013-02-22 11:23:43 +08:00
yao f4ef0c1598 fix meanShift mismatch on none-double GPUs 2013-02-22 10:13:20 +08:00
Andrey Kamaev c17e9ef7ba Repair binary compatibility of ocl module 2013-02-22 01:58:01 +04:00
Oscar Deniz Suarez 8cfba6456b Update samples/c/smiledetect.cpp
- Changed to floating neighbor maximum mode
- Fixed some previous errors.
2013-02-21 22:55:28 +01:00
Andrey Kamaev 995154d10d Fix binary compatibility of gpu module 2013-02-22 00:14:58 +04:00
Oscar Deniz Suarez 379dcf87d5 Added smile detector 2013-02-21 17:17:34 +01:00
LeonidBeynenson bfb644ac04 Changed error message in Algorithm::get. 2013-02-21 20:10:42 +04:00
LeonidBeynenson e7b214b6d2 Removed urequired functions 2013-02-21 19:49:37 +04:00
Andrey Kamaev eda2a76ee9 Merge pull request #520 from jet47:gpu-updates 2013-02-21 18:03:06 +04:00
gferry e3803f9985 fix for OpenCV issue #2815
- libavcodec issue
- some decoders alter AVCodecContext width/height values, in a wrong way
- eg. in issue 2815, vp6f decoder changes these values, resulting in distorted / invalid frames
- this patch forces default AVCodecContext values
2013-02-21 17:37:24 +04:00
Andrey Kamaev f0dce1fa35 Merge pull request #521 from asmorkalov:2.4.4_preparation 2013-02-21 17:25:21 +04:00
Vladislav Vinogradov 73ffd71a22 Fixed documentation build 2013-02-21 17:06:53 +04:00
Vladislav Vinogradov 8b1f88c40f updated gpu module API 2013-02-21 16:12:33 +04:00
Andrey Kamaev afa993316f Merge pull request #502 from jet47:opengl-updates 2013-02-21 15:12:43 +04:00
Alexander Smorkalov 9f39c8eaa1 OpenCV 2.4.4 preparation
Manager verison incremented;
Additional constatnt for library intialization added;
Documents updated.
2013-02-21 14:42:28 +04:00
Andrey Kamaev 16461247ce Merge pull request #498 from asmorkalov:doc_ptr 2013-02-21 13:30:34 +04:00
Andrey Kamaev ff0d23e55b Merge pull request #519 from bitwangyaoyao:2.4_findOCL 2013-02-21 13:30:20 +04:00
Vladislav Vinogradov 21f95a3b11 restored source compatibility 2013-02-21 12:38:12 +04:00
Andrey Kamaev d4e7bec29a Merge pull request #440 from AnnaKogan8:fixed-perfomance-tests 2013-02-21 12:29:57 +04:00
Andrey Kamaev decf04dfec Merge pull request #512 from jet47:core-gpu-updates 2013-02-21 12:22:04 +04:00
Vladislav Vinogradov a938534a7e restored binary compatibility 2013-02-21 12:18:08 +04:00
Alexander 4091eab45e cv::Ptr description extended. 2013-02-21 12:14:42 +04:00
yao f816e10ac9 Add auto detection to Intel OCL 2013-02-21 16:11:18 +08:00
Alexander Smorkalov e21a1d3124 Test system refactoring
cmpEps replaced on cmpEps2 to reduce code dublication;
Constants for cmpEps return values added.
2013-02-21 12:07:04 +04:00
Andrey Kamaev c1a5d1c44a Merge pull request #508 from bitwangyaoyao:2.4_interpKernel 2013-02-21 11:51:06 +04:00
Vladislav Vinogradov ce2559b332 optimized DeviceInfo class and ensureSizeIsEnough 2013-02-20 19:30:57 +04:00
Anna Kogan f6e0d327b0 Increased time limits 2013-02-20 17:34:00 +04:00
Anna Kogan a567c03fdf Switched to TEST_CYCLE_MULTIRUN for fast tests 2013-02-20 17:05:54 +04:00
yao 429ae44ae3 add openCLExecuteKernelInterop method 2013-02-20 17:46:43 +08:00
Alexander Smorkalov 637b48eec8 Tutorial for ARM Linux cross compilation added. 2013-02-20 12:48:30 +04:00
Andrey Kamaev 6ebb0e2ad2 Merge pull request #505 from abidrahmank:2.4 2013-02-20 12:29:53 +04:00
Abid K 96b2898f38 Update samples/python2/hist.py
range in calcHist() changed from [0,255] to [0,256]. Otherwise, it won't count pixels with value 255. It can be verified taking sum of histogram values and checking it with image size.
2013-02-19 19:31:53 +05:30
Andrey Kamaev 5691fd3abe Merge pull request #503 from taka-no-me:fix_docs 2013-02-19 18:01:51 +04:00
Andrey Kamaev 5cc2a6bdbf Merge pull request #500 from nielsgm:predict_python_wrapper_to_docs 2013-02-19 18:01:30 +04:00
Andrey Kamaev afa8e4e645 Merge pull request #492 from taka-no-me:fix_warnings_gcov 2013-02-19 18:01:06 +04:00
Andrey Kamaev 60f7b1d98d Whitelist functions/structs in check_docs2 that are impossible to fix in 2.4 2013-02-19 16:22:20 +04:00
Andrey Kamaev 2fe7482b73 Add support for enums into rst ocv domain 2013-02-19 16:22:20 +04:00
Andrey Kamaev ff7b604a25 Fix several inconsistent declarations identified by check_doc2 script 2013-02-19 16:22:20 +04:00
Vladislav Vinogradov e06c3ec7c5 updated OpenGL functionality:
* removed OpenGLFuncTab, now extensions are loaded internally
* added support of GlBuffer and GlTexture2D to InputArray/OutputArray
* added ELEMENT_ARRAY_BUFFER and PIXEL_PACK_BUFFER targets
* added copyFrom/copyTo method for GlBuffer and GlTexture2D
* removed GlFont
* removed pointCloudShow
* removed OpenGLCleanCallback
* added Access parameter to GlBuffer::mapHost
* added autoRelease parameter to all create methods
2013-02-19 14:13:11 +04:00
Andrey Kamaev 2bbb777d95 Fix warnings about missing parent for class members 2013-02-19 11:49:05 +04:00
Andrey Kamaev 535f1fb2e2 Hack to stop parsing of problematic CvStatModel::train definition 2013-02-19 10:39:31 +04:00
Andrey Kamaev 0570aa6494 Avoid problem of old sphinx reporting an error on lines starting from :
See http://sourceforge.net/tracker/?func=detail&aid=3484857&group_id=38414&atid=422030
2013-02-19 10:34:43 +04:00
Niels Gerlif Myrtue 7697d79d93 Added the predict_all function wrapper for python that was missing from the documentation
Copied the docstring description
2013-02-19 13:11:30 +11:00
Andrey Kamaev 39baa2237e Merge pull request #499 from vpisarev:zeroelem_fix 2013-02-18 18:05:02 +04:00
Andrey Kamaev c6f6f9ab35 Merge pull request #451 from bitwangyaoyao:2.4_operator 2013-02-18 18:04:44 +04:00
Vadim Pisarevsky a1c7e0368c fixed problem reported by Thouis (Ray) Jones 2013-02-18 17:01:21 +04:00
Andrey Kamaev 6503836b4d Merge pull request #469 from asmorkalov:android_manager_4number_version 2013-02-18 15:41:25 +04:00
yao 9613135e8d fix compiling errors on Linux
more operators use oclMatExpr
2013-02-16 18:41:43 +08:00
yao 69fd2d8273 add oclMatExpr class to prevent extra allocations 2013-02-16 11:05:23 +08:00
Andrey Kamaev 7e5eee5bf1 Merge pull request #301 from emchristiansen:javasample2.4 2013-02-15 18:38:25 +04:00
Andrey Kamaev 3ead4449ad Fix several warnings about uninitialized variables from gcov build 2013-02-15 17:28:23 +04:00
Andrey Pavlenko 2853bab471 converting images to PNG 2013-02-15 16:46:30 +04:00
Andrey Pavlenko edb15dee3d review feed-back considered 2013-02-15 16:33:13 +04:00
Andrey Kamaev f58dffe31f Merge pull request #401 from Daniil-Osokin:bugfix_doc_setNumThreads 2013-02-14 19:07:41 +04:00
OpenCV Buildbot 50d3e565c5 Update FFMPEG wrapper binaries 2013-02-14 18:39:24 +04:00
Andrey Kamaev 49c664fad4 Merge pull request #489 from jet47:carma-obsolete 2013-02-14 18:20:31 +04:00
Andrey Pavlenko a8c2fc6908 changing layout, adding ant and eclipse sections, more pictures 2013-02-14 17:54:37 +04:00
Daniil Osokin 5f32e0e24d Rewrote doc for set-get number of threads functionality with support new frameworks (bug #2064) 2013-02-14 17:11:16 +04:00
Daniil Osokin 6deda2531c Fixed getNumThreads() for C= 2013-02-14 17:07:36 +04:00
Andrey Kamaev da1ddc752b Merge pull request #487 from asmorkalov:manager_localref_fix 2013-02-14 16:50:16 +04:00
Vladislav Vinogradov 78c924baad removed obsolete CARMA toolchain and CMake variable 2013-02-14 16:27:17 +04:00
Andrey Kamaev f3874abf68 Merge pull request #488 from AnnaKogan8:updated-ABI-compliance-descriptor-script 2013-02-14 16:08:05 +04:00
Andrey Kamaev 37c6357b97 Merge pull request #485 from jet47:gpu-new-functionality 2013-02-14 16:00:55 +04:00
Anna Kogan f9cf70e93e Updated script for ABI compliance check 2013-02-14 14:59:26 +04:00
Alexander Smorkalov 6619941c90 Issues in management of local reference to jni objects fixed. 2013-02-14 13:29:51 +04:00
Vladislav Vinogradov a3a09cf4d1 refactored OpticalFlowDual_TVL1:
* added DenseOpticalFlow interface
* moved OpticalFlowDual_TVL1 to src folder
2013-02-14 13:26:47 +04:00
Andrey Kamaev 8547984d29 Merge pull request #486 from amroamroamro:2.4 2013-02-14 11:21:16 +04:00
Andrey Kamaev 37e2664cf0 Merge pull request #479 from ilya-lavrenov:TestHighGUI 2013-02-14 11:21:01 +04:00
Amro 42a2cb0a38 add description of ddepth param of cv::boxFilter
bug #2709
2013-02-13 15:16:17 +03:00
Vladislav Vinogradov 2181a41a07 added perf4au app 2013-02-13 15:58:24 +04:00
Vladislav Vinogradov aa73bf6079 added gpu optical flow sample 2013-02-13 15:58:12 +04:00
Vladislav Vinogradov 50f28c9e25 added Warp::reduce function 2013-02-13 15:57:55 +04:00
Vladislav Vinogradov 36e42084f0 added gpu BM optical flow implementation 2013-02-13 15:57:40 +04:00
Vladislav Vinogradov fe2e89df1b added gpu::HoughLinesP function 2013-02-13 15:56:58 +04:00
Vladislav Vinogradov 86bd325131 added gpu::normalize function 2013-02-13 15:55:58 +04:00
Vladislav Vinogradov 61b54149b1 added mask support to gpu norm and sum 2013-02-13 15:54:50 +04:00
Vladislav Vinogradov 08914aa708 added gpu compare with scalar 2013-02-13 15:53:03 +04:00
Vladislav Vinogradov a828b60765 added enqueueHostCallback method to gpu::Stream 2013-02-13 15:51:27 +04:00
Vladislav Vinogradov ce2fd7fec9 added dual tvl1 optical flow gpu implementation 2013-02-13 15:50:05 +04:00
Andrey Kamaev 54a0e5085c Merge pull request #483 from taka-no-me:cmake_tweaks 2013-02-13 15:50:02 +04:00
Vladislav Vinogradov 1498d2f427 added dual tvl1 optical flow implementation 2013-02-13 15:42:58 +04:00
Andrey Kamaev c7df17e77b Detect and report parallel framework used 2013-02-13 15:09:30 +04:00
Andrey Kamaev 0b20faf3d2 Use git describe to get source control version 2013-02-13 14:50:32 +04:00
Andrey Kamaev 9e4792af1f Add separate status section for java 2013-02-13 14:36:56 +04:00
Andrey Kamaev 82313b3f6c Add OpenCL section to status report 2013-02-13 14:27:12 +04:00
Andrey Kamaev 247df9f3fc Detect version of clang compiler 2013-02-13 14:11:56 +04:00
Andrey Kamaev ca5e6f9522 Merge pull request #480 from taka-no-me:ffmpeg_warnings 2013-02-12 20:29:03 +04:00
Andrey Kamaev ac389507a0 Fix warnings from ffmpeg wrapper 2013-02-12 19:58:59 +04:00
Andrey Kamaev 8b7a28a7e4 Merge pull request #477 from asmorkalov:android_version_info 2013-02-12 17:06:27 +04:00
Andrey Kamaev 0cf9c16adc Merge pull request #478 from jet47:gpu-reduction-fix 2013-02-12 17:06:07 +04:00
Andrey Kamaev 7c77b402db Merge pull request #468 from kirill-kornyakov:test-for-saturate-cast 2013-02-12 17:04:54 +04:00
Ilya Lavrenov 5512f91d08 removed libstdc++ dependency 2013-02-12 14:20:23 +04:00
Alexander Smorkalov 1751a963f2 Build info output for all android apps added.
OpenCV build information output to logcat added to OpenCV initialization code;
Documenation for cv::getBuildInformation() added.
2013-02-12 11:19:05 +04:00
Vladislav Vinogradov fdb07a0ac1 fix performance issue of gpu reduction 2013-02-12 09:50:41 +04:00
Andrey Kamaev b6e7aeabe0 Merge pull request #476 from apavlenko:eclipse_import_fix 2013-02-11 21:38:07 +04:00
Andrey Kamaev 3990564a83 Merge pull request #470 from kirill-kornyakov:bug_2788_testing_add_method_for_column 2013-02-11 21:16:39 +04:00
Andrey Kamaev 2495b23a7d Merge pull request #473 from prclibo:2.4 2013-02-11 20:48:03 +04:00
Andrey Kamaev 059ea5bebe Merge pull request #471 from apavlenko:jar_install 2013-02-11 20:46:48 +04:00
Andrey Pavlenko 54bcaa4934 fixing eclipse import errors that can also be fixed via 'Fix Project Properties' menu 2013-02-11 19:49:18 +04:00
Andrey Kamaev 80d760c96e Merge pull request #467 from asmorkalov:manager_jni_overflow 2013-02-11 19:17:41 +04:00
Andrey Kamaev a370404d9c Merge pull request #416 from asmaloney:mat-docs-cleanup 2013-02-11 18:51:03 +04:00
Bo Li 92e7e7d8e8 fix issue 2788 2013-02-11 15:09:42 +01:00
Kirill Kornyakov 74e5650350 Reenabled second test 2013-02-11 16:53:41 +04:00
Andrey Kamaev 5cae645ba1 Temporary disabled parallel_writers_and_readers test 2013-02-11 16:52:20 +04:00
Andrey Pavlenko b337d84adf configure desktop Java install, making JNI library name correct, and making it fat when possible 2013-02-11 16:28:19 +04:00
Alexander Smorkalov 9f9c333a26 Bug #2759 android.os.DeadObjectException on OpenCV Manager connection fixed.
DeleteLocalRef calls for jclass objects added.
2013-02-11 16:03:19 +04:00
Kirill Kornyakov 7071bd63ab Added two tests to highlight bug #2788 2013-02-11 15:25:15 +04:00
Alexander Smorkalov 9f01074f4c Bug in hardware ratings fixed. 2013-02-11 15:03:52 +04:00
Alexander Smorkalov 8c44e1ff81 Native testing for OpenCV Manager enabled
All tests added to CMake;
All tests ported on 4 digit version support;
Some test fixes and bug fixes were done.
2013-02-11 15:03:52 +04:00
Kirill Kornyakov 81b9f9b16b Added a test that documents that negative numbers are not clipped by cv::saturate_cast 2013-02-11 14:58:38 +04:00
Andrey Kamaev 1869f77c0f Merge pull request #457 from taka-no-me:fix_vars_expansion 2013-02-11 14:37:14 +04:00
Andrey Kamaev ffb3b5ddbe Adjust OpenCV version to 2.4.4 2013-02-11 14:17:29 +04:00
Andrey Kamaev 2ed6bc8aaf Revert ffmpeg related changes from "thread-safe VideoWriter and VideoCapture"
This reverts commit 4abf0b3193.

Changes are reverted because they break build of proxy dlls on Windows
2013-02-11 14:15:29 +04:00
Andrey Kamaev 9d7300f003 Merge pull request #465 from asmorkalov:android_camera_connect 2013-02-11 14:05:37 +04:00
Andrey Kamaev c61d7088ae Merge pull request #466 from taka-no-me:fix_android_package 2013-02-11 14:04:07 +04:00
Andrey Kamaev 5335c2f920 Merge pull request #464 from asmaloney:missing_fclose 2013-02-11 14:03:51 +04:00
Andrey Kamaev d92a56ee2d Merge pull request #458 from taka-no-me:tbb_4.1u2 2013-02-11 14:03:11 +04:00
Andrey Kamaev cc79f40e2b Merge pull request #454 from asmorkalov:android_samples_reorganize 2013-02-11 14:02:54 +04:00
Andrey Kamaev 2a98c1f89c Merge pull request #446 from AnnaKogan8:updated-perf-timing-script 2013-02-11 14:02:39 +04:00
Andrey Kamaev 81832d76a8 Fix build of package for Google Play 2013-02-11 12:59:37 +04:00
Alexander Smorkalov d067dc5a05 Code review notes fixed. 2013-02-11 11:36:12 +04:00
Alexander Smorkalov 283b26e2db Issue in NativeCameraView and JavaCameraView fixed.
In previous version getWidth() and getHeight() values were used instead method parameters.
2013-02-11 09:43:44 +04:00
Andy Maloney 2075236757 If generating a bin file (second half of conditional), make sure the file is closed
(Also fix spelling in comment)
2013-02-10 21:55:20 -05:00
Andrey Kamaev 716e0192b3 Merge pull request #456 from vpisarev:python_ptseq_fix 2013-02-08 18:52:04 +04:00
Andrey Kamaev 3ed6c09485 Merge pull request #428 from bitwangyaoyao:2.4_erode_dilate 2013-02-08 18:48:37 +04:00
Andrey Kamaev 504264ab7b Merge pull request #402 from asmorkalov:samples_data_rase_fix 2013-02-08 18:48:13 +04:00
Andrey Kamaev 4045e6e588 Update tbb to version 4.1 update 2 2013-02-08 18:45:24 +04:00
Andrey Kamaev 46ca5c32cd Merge pull request #455 from AlexeySpizhevoy:2.4 2013-02-08 18:45:24 +04:00
Andrey Kamaev bb25111d23 Merge pull request #452 from asmorkalov:android_tutorial_update 2013-02-08 18:43:57 +04:00
Andrey Kamaev 4f4fe553bc Merge pull request #450 from bitwangyaoyao:2.4_dft 2013-02-08 18:43:34 +04:00
Andrey Kamaev 571665b559 Fix CMake variables substitution in Android project files 2013-02-08 18:21:49 +04:00
Vadim Pisarevsky 43d61d961e fixed problem with Nx2 numpy arrays in geometrical functions (#2783) 2013-02-08 18:11:56 +04:00
Alexey Spizhevoy e0ead7b606 fixed assertion failure (vector out of range) for the 'vc10,debug' build (#2775) 2013-02-08 17:44:57 +04:00
Alexander Smorkalov c7e7b77093 Tutorial for Android synchronized with actual application framework. 2013-02-08 16:53:06 +04:00
Andrey Kamaev 6ffd5edfb5 Merge pull request #442 from asmorkalov:linux_cross_compile 2013-02-08 14:37:09 +04:00
Andrey Kamaev 9591fb8f63 Merge pull request #448 from Nerei:bp_doc_change_24 2013-02-08 14:29:56 +04:00
Alexander Smorkalov 9a2d6f854b Tutorial-1-Java -> Tutorial-1-CameraPreview
Issues fix.
2013-02-08 13:13:37 +04:00
Alexander Smorkalov 507e2dc0ad Project files for Eclipse updated. 2013-02-08 12:50:58 +04:00
Alexander Smorkalov b558bb4894 Tutorial-5 -> Tutorial-3 2013-02-08 12:50:58 +04:00
Alexander Smorkalov 902463b6e9 Tutorial4 sample renamed to Tutorial-2-MixedProcessing 2013-02-08 12:50:07 +04:00
Alexander Smorkalov 08cd51df1f Tutorial-3 removed as dublicate part of tutorial-4. 2013-02-08 12:47:45 +04:00
Alexander Smorkalov b943277559 Tutorial-2 removed as dublicate of tutorial-1 and image manipulations sample. 2013-02-08 12:47:23 +04:00
Alexander Smorkalov 33502c86ac Tutorial 1 renamed 2013-02-08 12:45:48 +04:00
Alexander Smorkalov 192ee15520 Code review notes fixed;
HardFP and SoftFP toolchains joined to one;
RPATH skiping added.
2013-02-08 12:42:03 +04:00
Alexander Smorkalov 076941bb07 15-puzzle app reverted to usage of old CvCameraViewListener implementation;
super.onPause() call moved to begining of onPause method according Google recomandations.
2013-02-08 12:36:33 +04:00
yao 0b365f6aa5 add +-*/ operators to oclMat 2013-02-08 11:41:46 +08:00
yao 4d6827212d some bugs fix in using AmdFft library 2013-02-08 10:46:43 +08:00
Anatoly Baksheev 79d5724794 BP doc change according to Adrian's request (OpenCV book co-author) 2013-02-07 22:31:39 +04:00
Anna Kogan 51e58aeb25 Added --failed-only option and multiple input files support 2013-02-07 19:08:31 +04:00
Alexander Smorkalov f8720ec60e Code review issues fixed. Compatibility issues fixed. 2013-02-07 13:11:08 +04:00
Andrey Kamaev 03f7d2f1ca Merge pull request #444 from taka-no-me:fix_o0_warnings 2013-02-07 00:15:52 +04:00
Andrey Kamaev afe85e7e51 Fix some warnings from -O0 build 2013-02-06 20:57:36 +04:00
LeonidBeynenson 203849d5e4 The next attempt to fix a build error on Mac. 2013-02-06 18:07:02 +04:00
Andrey Kamaev 93d4abecf8 Merge pull request #443 from taka-no-me:fix_cascade_test 2013-02-06 16:40:38 +04:00
LeonidBeynenson 50cd5d9ce7 Try to fix Mac compilation issue. 2013-02-06 15:31:51 +04:00
Andrey Kamaev 6e4aeff4c9 Merge pull request #441 from jet47:filter-speckles-8u 2013-02-06 15:12:02 +04:00
Andrey Kamaev 37d695a62e Use gtest assertions in cascade test
This simplifies test debugging a lot
2013-02-06 15:07:31 +04:00
Alexander Smorkalov b81f0887f0 Carma board support fixed. 2013-02-06 14:47:42 +04:00
Alexander Smorkalov 4e243e1759 TBB build for arm linux fixed. Processors count detected correctly. 2013-02-06 14:43:57 +04:00
Alexander Smorkalov 6645f50dd0 CUDA toolkit support added to crosscompilation toolchain. 2013-02-06 14:43:57 +04:00
Alexander Smorkalov 1120289fdb Compiler and linker flags for arm cross compilation fixed. 2013-02-06 14:43:57 +04:00
Alexander Smorkalov 3ed99b7700 Code review notes applied.
Toolchain for arm hardfp added.
2013-02-06 14:43:57 +04:00
Alexander Smorkalov ffb9da14fb TBB build defines for Linux added. 2013-02-06 14:43:57 +04:00
Alexander Smorkalov 60f056061a Cross compilation toolchain for arm linux added. 2013-02-06 14:43:57 +04:00
Alexander Smorkalov 7882aba7af TBB download and build option enabled for non Android platfroms. 2013-02-06 14:43:57 +04:00
Alexander Smorkalov 2e2e1355ac Video IO perf tests guarded. 2013-02-06 14:43:57 +04:00
Vladislav Vinogradov bb3b1441c5 added 8u type support to filterSpeckles function 2013-02-06 14:14:45 +04:00
Andrey Kamaev bf575ba7fb Merge pull request #434 from taka-no-me:fix_parallel_writer_test 2013-02-06 14:04:59 +04:00
Andrey Kamaev 7cdede0c55 Merge pull request #438 from bitwangyaoyao:2.4_fixwarings 2013-02-06 14:04:28 +04:00
yao e31e924cf7 remove the warnings in accuracy test 2013-02-06 09:12:40 +08:00
Andrey Kamaev fe0516c877 Merge pull request #432 from bitwangyaoyao:2.4_blend 2013-02-05 14:53:49 +04:00
Andrey Kamaev 53e77ed468 Merge pull request #431 from snosov1:matchTemplate-tegra 2013-02-05 14:50:15 +04:00
yao 568b935246 remove a warning on Linux
fix a error in doc
2013-02-05 17:16:40 +08:00
LeonidBeynenson b85a098d9c Added float, uint64, and uchar params to Algorithm
Made changes to work in cv::Algorithm with parameters of these types.
Also fixed SimpleBlobDetector -- now it can be created by
cv::Algorithm::create and it can work with cv::Algorithm::set/get.
2013-02-04 20:25:18 +04:00
Alexander Smorkalov 6b5eac328f Android samples updated according onCameraFrame callback signature change.
FpsMeter class removed from Image Manipulations and Face Detection examples as unused code.
2013-02-04 17:43:46 +04:00
Alexander Smorkalov 3ef588b877 onCameraFrame callback signature changed. CvCameraFame interface added.
New interface allows to get one RGBA or Gray frame from camera or both in the same time;
New interface fixes data rase in samples also.
2013-02-04 17:43:45 +04:00
Andrey Kamaev f608df9640 Merge pull request #427 from vrabaud:brisk_fixes_2.4 2013-02-04 17:10:02 +04:00
Sergei Nosov c0e3d48ebc stricter eps for normed methods 2013-02-04 16:02:01 +04:00
Andrey Kamaev 7244fc1f6a Merge pull request #404 from asmorkalov:android_opencvmk_fix 2013-02-04 15:49:48 +04:00
Andrey Kamaev 727b6a7259 Merge pull request #408 from asmorkalov:giganetix_cams_patch 2013-02-04 14:56:54 +04:00
Andrey Kamaev 3c39e146a3 Make parallel video writer test pass if compiled without threading support 2013-02-04 14:34:44 +04:00
Vincent Rabaud d235c3a678 define the default remapping in the right scope 2013-02-04 11:08:00 +01:00
Vincent Rabaud 0b1599d88a write documentation for BRISK 2013-02-04 11:07:53 +01:00
yao 9711ef6dee blend use vector to optimize 2013-02-04 17:29:20 +08:00
Sergei Nosov 15d0484485 matchTemplate perf tests added 2013-02-04 12:57:22 +04:00
Sergei Nosov c768731e89 enable Tegra optimizations 2013-02-04 12:57:03 +04:00
Andrey Kamaev 9c939a8dcf Merge pull request #420 from asmaloney:check-mem-alloc 2013-02-04 12:56:36 +04:00
Alexander Smorkalov e58f4e44c8 Modules redifinition in case of multiple includes of OpenCV.mk in single Android.mk fixed. 2013-02-04 12:22:22 +04:00
Andrey Kamaev 650609aaeb Merge pull request #429 from bitwangyaoyao:2.4_setdevEx 2013-02-04 12:03:24 +04:00
Andrey Kamaev 6dc3b662f6 Merge pull request #425 from asmaloney:vector_empty 2013-02-04 12:03:03 +04:00
Andrey Kamaev 58c4d5f4b4 Merge pull request #424 from asmaloney:additional-checks 2013-02-04 12:02:43 +04:00
Andrey Kamaev fc4a2244fa Merge pull request #421 from asmaloney:check-mem-alloc2 2013-02-04 12:02:28 +04:00
Andrey Kamaev 37460acb21 Merge pull request #410 from taka-no-me:fix_cap_dshow_setfps 2013-02-04 11:57:33 +04:00
Andrey Kamaev e2536f1c35 Merge pull request #395 from LeonidBeynenson:fix_ml_large_data_bug__2.4 2013-02-04 11:54:43 +04:00
yao a639a1ae5c add setDeviceEx interface
simplify the logic of save binary
2013-02-04 15:06:36 +08:00
yao 3c5cb4931e simplify the kernel logic when using rect kernel or without ROI 2013-02-04 13:33:27 +08:00
Andy Maloney ac8744af6a No need to check vector size before clear() 2013-02-02 19:00:41 -05:00
Andy Maloney c8cad0857e Remove unused constructor
Add checks for valid values
Fix wording on some errors
2013-02-02 16:09:10 -05:00
Andy Maloney b79e8053c1 Check memory allocation
Declare vars as locally as possible
2013-02-02 08:44:25 -05:00
Andy Maloney b497380a68 Check memory allocation
Initialize local variables
2013-02-02 08:33:40 -05:00
Andrey Kamaev 2a669555de Merge pull request #414 from asmaloney:remove-unused-vars2 2013-02-02 14:34:47 +04:00
Andrey Kamaev 7e06b4755b Merge pull request #415 from asmaloney:cvCopyHist-fix 2013-02-02 14:34:33 +04:00
Andy Maloney e7ea90f87f Mat tutorial - grammar and spelling fixes 2013-02-01 23:39:40 -05:00
Andy Maloney 3154cdf8ac Fix subtle bug when src & dst agree on sparsity but have different dimensions
Remove unused var "total"
Declare vars as locally as possible
2013-02-01 22:57:22 -05:00
Andy Maloney bc68dfb4e8 Remove unused vars 2013-02-01 18:09:58 -05:00
Andrey Kamaev 0cd8684ade Fix setting of FPS after frame width and height with DShow cameras
Issue #2114
2013-02-01 18:01:13 +04:00
cuda-geek db9de43fa5 Merge pull request #407 from taka-no-me:fix_java_after_surf_change 2013-02-01 17:48:21 +04:00
Andrey Kamaev 6f1961031c Update regression checks in Java test
This follows SURF changes in 1f261c2
2013-02-01 17:16:28 +04:00
LeonidBeynenson 87b0126e0d Fixed dummy warning. 2013-02-01 16:16:43 +04:00
Alexander Smorkalov 25086ed257 Smartek Giganetix Cameras support (Patch #2192) integrated. 2013-02-01 16:07:32 +04:00
Andrey Kamaev 9e32c6993a Merge pull request #405 from vpisarev:znah_patch 2013-02-01 16:06:54 +04:00
LeonidBeynenson 013d54c230 Changed types of some variables from int64 back to int.
Also corrected some indexes to be size_t.
2013-02-01 14:41:14 +04:00
Vadim Pisarevsky 51eba617a8 a part of PR269 (parallelization of several functions) by Alexander Mordvintsev 2013-02-01 14:01:44 +04:00
Andrey Kamaev b179e2dd2d Merge pull request #396 from vpisarev:facedetect_fixes 2013-02-01 12:49:48 +04:00
Andrey Kamaev 992d47e9dc Merge pull request #400 from ilysenkov:bugfix_2560 2013-02-01 12:05:48 +04:00
Andrey Kamaev 5ef58a474a Merge pull request #397 from ilysenkov:bugfix_2677 2013-02-01 12:04:38 +04:00
Andrey Kamaev 0b6677f6d3 Merge pull request #398 from ilysenkov:bugfix_2330 2013-02-01 11:19:33 +04:00
Vadim Pisarevsky 638c0d1bf4 fixed compile warnings 2013-02-01 10:47:27 +04:00
Andrey Kamaev 57aa089ad6 Merge pull request #392 from vpisarev:python_fixes2 2013-02-01 10:20:52 +04:00
Ilya Lysenkov b24e4bddb1 Documented the TermCriteria class (#2560) 2013-02-01 10:16:30 +04:00
Ilya Lysenkov 7745c8806c Added info() method in descriptor matchers (#2330) 2013-02-01 02:23:40 +04:00
Ilya Lysenkov 098ea6fcb7 Checked key_size in LSH table for validness (#2677) 2013-01-31 23:19:19 +04:00
Ilya Lysenkov 1becbd9fcc Added a test for invalid key sizes in LSH tables 2013-01-31 23:17:07 +04:00
Vadim Pisarevsky 50299c1d5e disabled the use of SSE4 instructions as well to make the code compatible with the old Intel and AMD chips 2013-01-31 22:57:46 +04:00
Vadim Pisarevsky 18039d7829 added test for the old cvHaarDetectObjects. disabled AVX optimization in haar.cpp. it should cover tickets #2534, #2591, #2669 2013-01-31 22:55:04 +04:00
Andrey Kamaev 39b4bf1828 Merge pull request #390 from taka-no-me:fix_relative_error_check 2013-01-31 21:32:45 +04:00
Andrey Kamaev a8c014de33 Merge pull request #318 from AnnaKogan8:fixed-perf-tests 2013-01-31 21:01:44 +04:00
Andrey Kamaev 13d2412d24 Merge pull request #394 from taka-no-me:fix_tiff_test 2013-01-31 20:52:35 +04:00
Andrey Kamaev 34ef209940 Merge pull request #393 from Daniil-Osokin:bugfix_doc_multi_issues 2013-01-31 20:30:33 +04:00
Vadim Pisarevsky 54e0765d80 yet another minor fix in cv::transpose() 2013-01-31 20:26:16 +04:00
Vadim Pisarevsky 7ca38d63d9 fixed failure of the C++ test for estimateAffine3D 2013-01-31 19:44:16 +04:00
LeonidBeynenson 6de422701a Made changes to allow ml module to work with big data. 2013-01-31 19:37:20 +04:00
Andrey Kamaev 92460adebe Merge pull request #391 from taka-no-me:fix_buildbot_issues 2013-01-31 18:55:09 +04:00
Andrey Kamaev 55b90d7bae Modify decode_tile16384x16384 test to not fail when available memory is not enough for test 2013-01-31 18:51:24 +04:00
Daniil Osokin fe5b9df45f Fixed multiple issues in docs (bug #2410) 2013-01-31 17:34:40 +04:00
Vadim Pisarevsky 79e278c008 applied patch #2587 2013-01-31 16:19:20 +04:00
Anna Kogan ed4c687d45 Increased time limits, eliminated extra params 2013-01-31 16:18:52 +04:00
Vadim Pisarevsky 82b6419d12 added tests for fast (ticket #2613) and estimateAffine3D (#2375) 2013-01-31 16:15:40 +04:00
Andrey Kamaev e3b45910aa Temporary disable unstable Features2d_RotationInvariance_Detector_SIFT test 2013-01-31 16:06:22 +04:00
Andrey Kamaev e63b4591ff Suppress clang build warning 2013-01-31 16:01:04 +04:00
Andrey Kamaev 4f1913ed26 Correct tolerance value for sanity checks with ERROR_RELATIVE
Use min/max bounds instead of local value to calculate acceptance threshold.
Threshold based on local values somethimes does not work because cancellation
of big values may produce error bigger than local value.
2013-01-31 15:47:14 +04:00
Vadim Pisarevsky abd9675a99 fixed bugs #1718, #2375; attached the new tests to test.py. 2013-01-31 15:34:09 +04:00
Andrey Kamaev acb2cb5bf0 Merge pull request #389 from Daniil-Osokin:bugfix_doc_opencv_with_cmake 2013-01-31 15:04:56 +04:00
cuda-geek 53b0df87f1 Merge pull request #385 from etalanin:bug2607 2013-01-31 13:46:01 +04:00
cuda-geek bf53ebd590 Merge pull request #381 from vpisarev:surf_fixes 2013-01-31 13:36:10 +04:00
Daniil Osokin b5ed86c6a1 Fixed sample files in "Using OpenCV with gcc and CMake" tutorial (bug #2663, #2588) 2013-01-31 13:26:29 +04:00
cuda-geek fe30da6e2c Merge pull request #387 from taka-no-me:fix_dshow_fourcc_conversion 2013-01-31 13:26:26 +04:00
Andrey Kamaev fda32d3d8d Merge pull request #382 from cuda-geek:fix-broken-links-bug-2689 2013-01-31 13:08:01 +04:00
Evgeny Talanin 50c2f87add Fix and test for #2607 2013-01-31 12:23:08 +04:00
cuda-geek f3ae185fd0 Merge pull request #383 from cuda-geek:apply-opencv-macosx-patch 2013-01-31 12:04:13 +04:00
Andrey Kamaev 2d6253609c Fix truncation of fourcc value in dshow capture property setter (bug #2535)
Added test checking that all valid fourcc values are converted properly
2013-01-31 12:00:04 +04:00
Andrey Kamaev e0426148ba Merge pull request #374 from ivan-korolev:fix_estimateRigidTransform 2013-01-30 20:26:54 +04:00
marina.kolpakova 8b3c717e8f apply patch #2686 2013-01-30 20:20:06 +04:00
cuda-geek e72c7736e7 Merge pull request #375 from taka-no-me:fix_opticalflow_2075 2013-01-30 20:18:53 +04:00
Andrey Kamaev 9b4f2d1b53 Merge pull request #373 from ilysenkov:bugfix_2440 2013-01-30 19:37:16 +04:00
Andrey Kamaev 33c26a93c6 Merge pull request #376 from taka-no-me:solve_tiff_conflict 2013-01-30 19:36:09 +04:00
marina.kolpakova 5b03d47fb8 fix broken links in cascade classification documentation 2013-01-30 19:28:16 +04:00
Andrey Kamaev 4ceb8dd149 Merge pull request #378 from ivan-korolev:fix_OpenCVDetectTBB_cmake 2013-01-30 19:16:31 +04:00
cuda-geek bc53a054f2 Merge pull request #380 from asmorkalov:java_test_fix2 2013-01-30 19:03:35 +04:00
cuda-geek 31d3c508db Merge pull request #377 from ivan-korolev:fix_v4l_yes-yes_build 2013-01-30 18:59:56 +04:00
Vadim Pisarevsky 1f261c2f9d changed default parameters of SURF, which improved its performance. Restored bi-linear interpolation in SURF descriptor extractor. Added test for SURF homography + check for non-zero (positive) responses. 2013-01-30 18:07:37 +04:00
Andrey Kamaev f65a14d1ef Merge pull request #379 from taka-no-me:fix_ocl_samples_warnings 2013-01-30 18:06:49 +04:00
Alexander Smorkalov 5bc6365ba5 TestCheckVector java test fixed. Warning fixed. 2013-01-30 17:28:22 +04:00
Andrey Kamaev f489eb9a5d Fix build warnings in OpenCL samples 2013-01-30 17:25:03 +04:00
Ivan Korolev 26c7e7f292 fix default include dirs for TBB 2013-01-30 17:17:04 +04:00
Ivan Korolev eaa5012163 fix v4l yes-yes build 2013-01-30 17:04:33 +04:00
Andrey Kamaev 11871528ce Solve conflict between tiff.h and opencv2/core/types_c.h
Сonflict exists between some versions of libtiff and opencv headers
2013-01-30 16:36:50 +04:00
Andrey Kamaev c9d8e9900f Allow input of calcOpticalFlowPyrLK be submats of different size images
This fixes bug #2075
2013-01-30 16:07:55 +04:00
Andrey Kamaev 6a29b13c45 Add test for issue #2075 2013-01-30 16:07:38 +04:00
Ivan Korolev b362affd13 Fixed bug in the cv::estimateRigidTransform (#1949) 2013-01-30 15:27:23 +04:00
Ilya Lysenkov 3c8787980c Fixed cvDestroyAllWindows() without windows in QT (#2440) 2013-01-30 15:26:49 +04:00
Ilya Lysenkov 56fbcc541f Tested cvDestroyAllWindows() without windows 2013-01-30 15:25:10 +04:00
Andrey Kamaev 3a55fb9d1b Merge pull request #365 from ivan-korolev:fix_HoughLines_segfault 2013-01-30 15:16:30 +04:00
Andrey Kamaev 52b32ba8f0 Merge pull request #371 from taka-no-me:fix_build 2013-01-30 15:06:19 +04:00
Andrey Kamaev b6de1fccc3 Merge pull request #370 from ilysenkov:bugfix_1747 2013-01-30 14:42:10 +04:00
Andrey Kamaev d7874238f6 Merge pull request #369 from asmorkalov:corner_detection_tutorial 2013-01-30 14:41:56 +04:00
Andrey Kamaev 62b9180c50 Merge pull request #368 from ilysenkov:checkSubset-fix 2013-01-30 14:41:37 +04:00
Andrey Kamaev 81f5e72630 Merge pull request #366 from asmorkalov:gstreamer_codec_list 2013-01-30 14:41:22 +04:00
Andrey Kamaev 8d9af7de61 Merge pull request #362 from Daniil-Osokin:bugfix_doc_StereoSGBM 2013-01-30 14:41:06 +04:00
Andrey Kamaev ae7460440e Merge pull request #361 from taka-no-me:tiff_big_tile 2013-01-30 14:40:51 +04:00
Andrey Kamaev 86b4b30a6d Merge pull request #358 from taka-no-me:objc_exceptions 2013-01-30 14:40:32 +04:00
Andrey Kamaev 68be50bbab Fix clang build warning 2013-01-30 13:31:00 +04:00
Andrey Kamaev e79e81c6cd Fix Windows build warnings 2013-01-30 13:24:49 +04:00
Ilya Lysenkov 6feade3110 Added support of different resolution in rectify3Collinear 2013-01-30 13:19:12 +04:00
Andrey Kamaev eeb865ee8a Fix Android build warnings 2013-01-30 13:11:33 +04:00
Alexander Smorkalov 627b441022 Bugfix #2532 patch 4 corner detection sample possible bug solved.
Tutorial text was not consistent with tutorial source code in samples directory.
Inline source code was replaced on "includeliteral" directive with link to cpp file.
2013-01-30 13:05:57 +04:00
Andrey Kamaev 7e5f877ad9 Merge pull request #364 from Daniil-Osokin:bugfix_doc_features2d_tutorial 2013-01-30 13:05:47 +04:00
Andrey Kamaev d0350402de Merge pull request #356 from Daniil-Osokin:bugfix_imread_tutorial 2013-01-30 13:05:31 +04:00
Ilya Lysenkov 9ce2197e9d Added processing of trivial subsets 2013-01-30 13:03:03 +04:00
Andrey Kamaev 9690ed8232 Fix build of OpenCV samples (Linux) 2013-01-30 12:48:01 +04:00
Alexander Smorkalov 82e325cbfa Patch #2721 More FourCC for gstreamer applied. 2013-01-30 11:44:14 +04:00
Ivan Korolev 9908ff33de Added regression test for HoughLines algorithm 2013-01-30 11:27:19 +04:00
Daniil Osokin 7305f955a5 Added nonfree header in "Feature description" tutorial code sample (bug #2527) 2013-01-30 11:07:09 +04:00
Daniil Osokin f9de98ec64 Fixed proposed values for speckleRange in StereoSGBM docs (bug #1937) 2013-01-30 09:02:17 +04:00
Daniil Osokin 568591670c Fixed color code in cvtColor in "Load, Modify, and Save an Image" tutorial (bug #2739) 2013-01-30 08:16:47 +04:00
Andrey Kamaev 62ce815197 Fix rollover when computing buffer size in tiff decoder (bug #2161) 2013-01-30 00:07:33 +04:00
Andrey Kamaev b4d0dff4c5 Added minimal support for tiff encoder parameters and test for issue #2161 2013-01-30 00:07:30 +04:00
Andrey Kamaev daa02aaa98 Merge pull request #360 from vpisarev:sift_fixes 2013-01-29 20:39:13 +04:00
Vadim Pisarevsky c69312ea0d fixed #2580, #2210. some work on #2025.
modified SIFT to 1) double image before finding keypoints, 2) use floating-point internally instead of 16-bit integers, 3) set the keypoint response to the abs(interpolated_DoG_value). step 1) increases the number of detected keypoints significantly and together with 2) and 3) it improves some detection benchmarks. On the other hand, the stability of the small keypoints is lower, so the rotation and scale invariance tests now struggle a bit. In 2.5 need to make this feature optional and add some more intelligence to the algorithm.

added test that finds a planar object using SIFT.
2013-01-29 19:38:56 +04:00
Andrey Kamaev 3dbb98e454 Merge pull request #357 from taka-no-me:build_opencv_apps 2013-01-29 19:25:52 +04:00
Andrey Kamaev c78cb21999 Merge pull request #346 from taka-no-me:decouple_V4L2 2013-01-29 19:25:30 +04:00
Andrey Kamaev 0b1fe53a46 Add -fobjc-exceptions flag to ObjectiveC sources if supported (bug #2657) 2013-01-29 17:09:23 +04:00
Andrey Kamaev daead680cd Add option to control build of applications (feature #2568) 2013-01-29 16:38:59 +04:00
Andrey Kamaev ab8d92e1b8 Rebase and merge pull request #342 from ilysenkov/bugfix_2470 2013-01-29 15:53:42 +04:00
Ilya Lysenkov 5021a792b1 Fixed #2470 2013-01-29 15:53:28 +04:00
Ilya Lysenkov fe86f31f44 Added a test of CvModelEstimator2::checkSubset(...) 2013-01-29 15:53:28 +04:00
Andrey Kamaev 98fdd70466 Merge pull request #339 from vpisarev:core_fixes 2013-01-29 15:51:22 +04:00
Andrey Kamaev 287fb2c611 Fix build warning 2013-01-29 14:52:03 +04:00
Andrey Kamaev 63873a8393 Merge pull request #355 from asmaloney:copy_paste_cond 2013-01-29 14:13:01 +04:00
Andrey Kamaev 519e23bf0b Merge pull request #354 from asmaloney:fix_mem_dealloc 2013-01-29 14:12:12 +04:00
Andrey Kamaev da884b4e1d Merge pull request #347 from asmorkalov:WITH_FFMPEG_logic 2013-01-29 14:00:10 +04:00
Vadim Pisarevsky e7cbf65280 Merge pull request #351 from vpisarev:python_fixes 2013-01-29 13:34:50 +04:00
Alexander Smorkalov 8c45b9d03d Video IO perf tests guarded. 2013-01-29 11:09:49 +04:00
cuda-geek 04f01ed21d Merge pull request #353 from asmaloney:arg_checks 2013-01-29 11:04:33 +04:00
cuda-geek 11dfceb2c9 Merge pull request #328 from jet47:new-gpu-fixes 2013-01-29 11:00:37 +04:00
Andy Maloney bdf189faac {calib3d} Fix copy-paste error in conditional 2013-01-28 18:09:10 -05:00
Andy Maloney 5bd56e7464 Fix mem leak and mismatched new/delete 2013-01-28 17:57:19 -05:00
Andy Maloney 7a6475c3f9 Check pointers before using them in var init 2013-01-28 16:51:28 -05:00
Andrey Kamaev 2b4ffd1161 Merge pull request #350 from asmorkalov:android_java_warnings 2013-01-28 23:57:14 +04:00
Andrey Kamaev d7ea27b279 Merge pull request #349 from Daniil-Osokin:bugfix_opencv_cheatsheet 2013-01-28 23:56:55 +04:00
Andrey Kamaev 3a9c978b5e Merge pull request #348 from Daniil-Osokin:bugfix_YCrCb_formula 2013-01-28 23:56:42 +04:00
Andrey Kamaev 6abb69bd25 Merge pull request #345 from Daniil-Osokin:bugfix_2550 2013-01-28 23:56:26 +04:00
Andrey Kamaev 17130477c9 Merge pull request #344 from taka-no-me:improve_jpeg_encoder_errors 2013-01-28 23:56:01 +04:00
Vadim Pisarevsky 4044fbcb33 hopefully fixed handling of 'long' Python type in OpenCV bindings (bug #2193). added the corresponding test 2013-01-28 21:03:59 +04:00
Vadim Pisarevsky 2320ec76b4 Extended python bindings to support scalar values and tuples in place of InputArray (i.e. Mat) - ticket #2658. Added tests for #2611, #2505, #2658 2013-01-28 20:45:00 +04:00
Vadim Pisarevsky a519bbc617 Extended python bindings to support scalar values and tuples in place of InputArray (i.e. Mat) - ticket #2658. Added tests for #2611, #2505, #2658 2013-01-28 20:44:47 +04:00
Andrey Kamaev 09d93af975 Merge pull request #343 from taka-no-me:fix_nlmeans_2646 2013-01-28 20:35:39 +04:00
Alexander Smorkalov ca98710640 Resolve warning in OpenCV Library project in Eclipse (Bug #2714)
Warning in auto generated code was suppressed by project settings.
2013-01-28 19:44:58 +04:00
Daniil Osokin e33f3e8345 Fixed cheatsheet for loop (bug #2701) 2013-01-28 18:41:59 +04:00
Vadim Pisarevsky cd46a674d1 applied patch #2611 that also likely fixes #2505 2013-01-28 18:30:20 +04:00
Daniil Osokin 4c9c27b244 Fixed formula of YCrCb to RGB conversion (bug #2725) 2013-01-28 18:29:01 +04:00
Andrey Kamaev cf407c2ec0 Don't check for EINTR and replace xioctl with ioctl
This should be safe todo unless we are writing a signal handler.
2013-01-28 17:58:57 +04:00
Daniil Osokin f9bff103dd Removed obsolete steps from Windows installation tutorial (bug #2550) 2013-01-28 17:46:03 +04:00
Vadim Pisarevsky 146ca61a27 added tests for #1373, #2629, #2719; fixed another bug in determinant(Matx<T,n,n>) 2013-01-28 17:27:08 +04:00
Patrick Welche 1a84bcc565 NetBSD video(4) support, patch 3 of 3
xioctl() assumes that ioctl takes int request. Cope with
  int ioctl(int d, unsigned long request, ...)
to avoid "invalid argument".
2013-01-28 17:11:44 +04:00
Patrick Welche 681ffd9a21 NetBSD video(4) support, patch 2 of 3
* Decouple Video4Linux2 support from Video4Linux as existence of
  v4l2 on a system does not imply support for v4l.
* Don't use V4L's struct video_window in V4L2 code.
* Removed __USE_GNU as comment says:
      /* support for MJPEG is only available with libjpeg and gcc,
         because it's use libjepg and fmemopen()
  so replace with test for fmemopen() if found necessary.
2013-01-28 17:11:41 +04:00
Patrick Welche d90b8d615c NetBSD video(4) support, patch 1 of 3
The video(4) driver provides a Video4Linux2 compatible API for
various video peripherals. This patch propagates HAVE_VIDEOIO if
the sys/videoio.h include file is found, which is the signature of
video(4).
2013-01-28 17:11:36 +04:00
Andrey Kamaev 255cd61a8c Improve error reporting of JPEG image encoder
OpenCV issue #2604

After this patch applied an attempt to encode empty images produces exception
saying "Raw image encoder error: Empty JPEG image (DNL not supported)"
2013-01-28 16:55:00 +04:00
Andrey Kamaev 7374445398 Fix integer overflow in NL-Means denoising on white input
Issues #2646
2013-01-28 14:35:51 +04:00
Andrey Kamaev 7e92826efc Add test for issue #2646 2013-01-28 14:35:51 +04:00
Andrey Kamaev d83914d478 Change Imgproc_ prefix to Photo_ in all accuracy tests of photo module 2013-01-28 14:01:22 +04:00
Andrey Kamaev 8521ac5d21 Merge branch 'fix_jpg2000' into 2.4 2013-01-28 12:41:35 +04:00
Andy Maloney e87355463f {highgui} Fix copy-paste error in conditional 2013-01-26 16:38:01 -05:00
Vadim Pisarevsky 1df10553bb fixed bugs #1373, #2629, #2719 2013-01-25 23:45:41 +04:00
Andrey Kamaev d8f749da52 Merge pull request #337 from taka-no-me:ocl_appsdk 2013-01-25 16:23:36 +04:00
Andrey Kamaev 9509dfd1de Fix OpenCL build warnings 2013-01-25 16:19:59 +04:00
Andrey Kamaev b445f4b01d Find OpenCL in AMD APP SDK 2013-01-25 14:15:26 +04:00
Andrey Kamaev dc11acf041 Merge pull request #336 from ivan-korolev:fix_relative_error_formula 2013-01-25 14:10:06 +04:00
Ivan Korolev 6385b0f7ed Fixed a formula to calculate the relative error 2013-01-25 11:19:38 +04:00
Andrey Kamaev ed949bc211 Merge pull request #324 from bitwangyaoyao:2.4_cvtcolor 2013-01-25 00:53:42 +04:00
Andrey Kamaev 20de2f35f9 Merge pull request #325 from bitwangyaoyao:2.4_fixcanny 2013-01-25 00:46:35 +04:00
Andrey Kamaev f9ed0037b3 Merge pull request #327 from bitwangyaoyao:2.4_vs2012 2013-01-25 00:46:20 +04:00
Andrey Kamaev 14c31bfda0 Merge pull request #334 from asmaloney:2.4 2013-01-25 00:45:34 +04:00
Andy Maloney 5d65d000ab Docs: Fix invalid conversion format in example (CV_BGR2GREY -> CV_BGR2GRAY) 2013-01-24 10:08:58 -05:00
Andrey Kamaev 94e2b5c140 Merge pull request #305 from stephenfalken:2.4 2013-01-24 18:24:36 +04:00
Andrey Kamaev 7ad81ed46f Merge pull request #332 from taka-no-me:fix_ocl_warnings 2013-01-24 17:44:11 +04:00
Andrey Kamaev d5b15d6523 Fix ocl build warnings 2013-01-24 17:08:30 +04:00
Andrey Kamaev 33ca4ba5c7 Merge pull request #331 from taka-no-me:fix_java_debug 2013-01-24 15:49:14 +04:00
Siegfried Hochdorfer 195d501b43 fixed broken indentation 2013-01-24 11:40:35 +01:00
Andrey Kamaev cc399e2ade Merge pull request #330 from sromberg:2.4 2013-01-24 14:26:54 +04:00
Andrey Kamaev a441980d68 Fix debug build of Java warppers 2013-01-24 13:25:12 +04:00
Andrey Kamaev 3c4cfccc88 Merge pull request #321 from apavlenko:warp_sanity_check 2013-01-24 13:05:54 +04:00
Stefan Romberg 9f417268b3 Fixed visualization by choosing the color appropriate to the detection
Fixed visualization by choosing the color appropriate to the detection
score.
Previously the example showed all detections with the same color
disregarding the confidence. This led to the impression that the object
detection did not work at all because there are many detections with low
confidences.

PR to master was
https://github.com/Itseez/opencv/pull/320
2013-01-24 10:01:18 +01:00
yao 2aae501234 make ocl module compile on VS2012 2013-01-24 15:45:29 +08:00
yao d574e6dc09 fix canny crash in bug #2279 2013-01-24 14:58:41 +08:00
yao 4f778436b5 ocl::cvtColor support YUV and YCbCr formats 2013-01-24 14:33:28 +08:00
Vladislav Vinogradov 395f0201e3 fixed build for CARMA:
- added CMake toolchain file
- added WITH_NVCUVID flag
2013-01-23 21:05:08 +04:00
Vladislav Vinogradov 9cb4292d5c implemented Luv/Lab <-> RGB conversion 2013-01-23 21:05:08 +04:00
Vladislav Vinogradov e446903aac added more types support for gpu separable filters 2013-01-23 21:05:07 +04:00
Vladislav Vinogradov 281d036fcf optimizations:
- new reduce implementation (with kepler optimizations)
- saturate_cast via asm command
- video SIMD instructions in element operations
- float arithmetics instead of double
- new deviceSupports function
2013-01-23 21:05:07 +04:00
Vladislav Vinogradov ae6266e101 fixes for gpu module:
- fixed printCudaDeviceInfo for new CC
- fixed some compilation errors and warnings
- removed unset command from CMake script
- removed unused std imports
2013-01-23 21:05:06 +04:00
Vladislav Vinogradov b7e6b5af1b fixed tests (call resetDevice, if there was a gpu failure) 2013-01-23 21:05:04 +04:00
Andrey Kamaev 0773ab4d07 Merge pull request #315 from taka-no-me:java_on 2013-01-23 19:02:27 +04:00
Andrey Pavlenko e287dea91b fixing build warnings 2013-01-23 18:45:06 +04:00
Andrey Kamaev 2c32536bf4 Enable Java bindings on all platforms by default 2013-01-23 18:08:09 +04:00
Andrey Kamaev caa2c06e50 Quiet output of cv::error in Java tests
Introduced new Java API
void org.opencv.core.Core.setErrorVerbosity(boolean verbose)
used to suppress output to stderr from OpenCV's asserts
2013-01-23 18:08:09 +04:00
Andrey Kamaev 5eabcf8e4f Java tests: print summary for tests run 2013-01-23 18:08:09 +04:00
Andrey Kamaev 4668a133f0 Java API: fix build warning on OS X
Common part of all source files is extracted to special header
2013-01-23 18:08:09 +04:00
Andrey Kamaev 3889b34ec3 Add option to run java tests with run.py 2013-01-23 18:08:08 +04:00
Andrey Pavlenko 81721d0dce enabling sanity checks for warp and resize functions on Android
- add syntetic images generation function to ts
- use generated syntetic images
2013-01-23 17:25:30 +04:00
Andrey Kamaev 311d799344 Merge pull request #299 from branch 'bitwangyaoyao_ocl' into 2.4 2013-01-23 14:50:29 +04:00
yao e05112a364 some host side optimizations to ocl::GaussianBlur 2013-01-23 14:48:04 +04:00
yao 9060365f5e use format on filtering.cpp 2013-01-23 14:48:04 +04:00
yao 56c1a7fab6 make oclHaarDetectObjects running on more ocl platforms 2013-01-23 14:48:04 +04:00
yao b5bd2cde9e A few optimizations to ocl::pyrLK::sparse, make it running on more OCL platforms 2013-01-23 14:48:04 +04:00
yao 02c9e0a3e0 add default clAmdFft and clAmdBlas path 2013-01-23 14:48:04 +04:00
yao f6d82773f9 fix bug #2674 2013-01-23 14:48:04 +04:00
Andrey Kamaev 78dc44a7fd Merge pull request #295 from apavlenko:test_surf_keypoints_invariance 2013-01-23 14:40:05 +04:00
Andrey Kamaev 4d64db8be7 Merge pull request #319 from AnnaKogan8:added-surf-keypoints-cleanup 2013-01-23 10:36:02 +04:00
Anna Kogan 608fab60fd Added cleanup of keypoints vector 2013-01-22 18:05:18 +04:00
Andrey Kamaev 46c4390a2e Hardly refactored CMake script for Java wrappers 2013-01-22 17:59:01 +04:00
Andrey Kamaev c92743d124 Eliminate intermediate build target "opencv_java_api" 2013-01-22 17:59:00 +04:00
Andrey Kamaev 594f969641 Merge pull request #316 from mdim:draw_matches_fix 2013-01-22 16:09:48 +04:00
Eric Christiansen c2c2403a79 Added a desktop Java tutorial 2013-01-21 14:57:25 -08:00
mdim 93f8e7ba74 check of keypoint index range in drawMatches 2013-01-22 00:37:27 +04:00
Andrey Kamaev a45eb275e3 Merge pull request #306 from AnnaKogan8:perf_tests_timing.py-improvement 2013-01-21 18:10:08 +04:00
Andrey Kamaev abb9e08671 Merge pull request #314 from vpisarev:2.4 2013-01-21 17:52:35 +04:00
Vadim Pisarevsky f14b7af5ac changed diagnostic from "warning" to "note" in the python wrapper generator, to suppress some noise in opencv utilities 2013-01-21 15:00:32 +04:00
Andrey Kamaev 9c7a8dd584 Merge pull request #312 from taka-no-me:cheatsheet 2013-01-19 12:03:20 +04:00
Andrey Kamaev 1ed507c065 Merge pull request #310 from taka-no-me:4digit_version 2013-01-19 12:03:04 +04:00
Andrey Kamaev 55c74ebea8 Merge pull request #309 from asmorkalov:android_manager_4number_version 2013-01-19 12:02:49 +04:00
Andrey Kamaev e9301c3c4b Add opencv_cheatsheet.pdf to documentation build and silence Latex output 2013-01-18 18:27:43 +04:00
Andrey Kamaev e3474878b6 Consistently use 4-digit library version 2013-01-18 14:57:55 +04:00
Alexander Smorkalov 4feae810fa 4 digit library version numeration implemented in OpenCV Manager
Code refactoring done.
OpenCV library version type changed to int.
Some UI labels updated.
OpenCV Manager verison incremented.
2013-01-18 11:42:48 +04:00
Andrey Kamaev 101e9bd456 Merge pull request #304 from apavlenko:test_java_fix_double 2013-01-17 18:20:47 +04:00
Siegfried Hochdorfer 82a9f9a5a9 MeanshiftGrouping Bugfix (Bug #2685) 2013-01-17 11:46:24 +01:00
Andrey Pavlenko a8c0f1d962 fixing test failure on some systems 2013-01-16 18:33:35 +04:00
Andrey Kamaev 7341eaa654 Merge pull request #296 from asmorkalov:html_docs_warning_fix 2013-01-16 16:44:13 +04:00
Andrey Kamaev 28afa8d2d4 Merge pull request #297 from taka-no-me:fix_deps 2013-01-16 16:30:38 +04:00
Andrey Kamaev 0fed75a880 Merge pull request #302 from taka-no-me:fix_doc_sphinx107 2013-01-16 16:07:49 +04:00
Andrey Kamaev 069844cd4e Merge pull request #300 from taka-no-me:java_64bit 2013-01-16 14:49:46 +04:00
Andrey Kamaev b362d47d95 Fix documentation build with Sphinx 1.07 2013-01-16 12:43:12 +04:00
Eric Christiansen 6169b1dc90 Adds samples for Java and Scala 2013-01-15 12:03:55 -08:00
Andrey Kamaev bf3c2b0bbb Fix incorrect Mat address reconstruction on 64-bit platforms
This fixes random failures in Java wrappers.
2013-01-15 19:23:49 +04:00
Anna Kogan 0587bef667 Switched time from seconds to minutes 2013-01-15 15:32:22 +04:00
Anna Kogan 3cdfa654ae Added 'Num of tests' col, changed headers, added 'overall time' row 2013-01-15 15:26:43 +04:00
Andrey Kamaev 3cb84ed17c Fix dependencies inference for auto-disabled targets
Sometimes information about dependencies causing disabling were loosed and it
was not possible to correctly display these dependencies in status report
2013-01-14 18:58:24 +04:00
Andrey Pavlenko 9f0d5f60b5 fixinf warning on non-Windows systems 2013-01-14 18:15:51 +04:00
Alexander Smorkalov 8cb0343f4c Documentation build warning fixes.
Invalid links and refences fixed.
SpaeseMat class documentation updated.
2013-01-14 17:58:27 +04:00
Andrey Pavlenko 8e42ca1764 SURF keypoints rotation invariance test.
It calcs kpts for a cross and checks that 4 kpts at the edges have equal responce.
2013-01-14 14:06:00 +04:00
Andrey Kamaev c49b23d4dd Merge pull request #240 from emchristiansen:javatest2.4 2013-01-14 11:06:44 +04:00
Andrey Pavlenko b0e1cb473a more tests fixes 2013-01-11 09:13:25 +04:00
Andrey Kamaev 5e2726fb17 Merge pull request #287 from taka-no-me:fix_cvCalcOpticalFlow_2526 2013-01-10 19:56:44 +04:00
Andrey Kamaev 64d89d3546 Merge pull request #288 from taka-no-me:fix_unused_cmake_variable 2013-01-10 19:56:26 +04:00
Andrey Kamaev cf8deac2b2 Always touch variable controlling build of the module
This suppresses "unused variable" CMake warning when user explicilty disables
module unavailable in selected configuration
2013-01-10 19:05:39 +04:00
Andrey Kamaev b1384a6da8 Fix cvCalcOpticalFlow when the status parameter is NULL
issue 2526
2013-01-10 18:14:08 +04:00
Andrey Kamaev dff59ec960 Merge pull request #284 from taka-no-me:fix_equalize_hist_2678 2013-01-10 16:58:36 +04:00
Andrey Kamaev 59c6e2cc44 Merge pull request #283 from AnnaKogan8:perf_tests_timing.py-improved-console-output 2013-01-10 16:58:22 +04:00
Andrey Kamaev 6131a847a2 Fix histogram calculation in equalizeHist
issue #2678
2013-01-10 14:48:31 +04:00
Andrey Kamaev b81d1b25c7 Merge pull request #280 from vpisarev:bug_fixes_jan9 2013-01-10 13:31:04 +04:00
Anna Kogan 3271e395c8 Improved console output 2013-01-10 13:19:59 +04:00
Anna Kogan 0d7ce141aa Cleaned code 2013-01-10 13:18:26 +04:00
Anna Kogan 0334cf11cc Fixed last testsuit disregarding 2013-01-10 13:16:46 +04:00
Vadim Pisarevsky e383d39598 fixed bug #2679 2013-01-09 17:53:19 +04:00
Andrey Kamaev 399c20a928 Merge pull request #272 from 5kg:fix_haar 2013-01-09 16:53:11 +04:00
Andrey Kamaev e34aba60d9 Merge pull request #278 from taka-no-me:fix_build_jpeg9 2013-01-09 16:52:56 +04:00
Andrey Kamaev 873aefae19 Merge pull request #279 from taka-no-me:mingw_java 2013-01-09 16:52:41 +04:00
Vadim Pisarevsky 46cf2e96b5 Merge pull request #265 from taka-no-me:doc_signatures 2013-01-09 15:40:39 +04:00
Andrey Kamaev 4e1ba6f02f Fix build with libjpeg release 9 2013-01-08 19:55:29 +04:00
Andrey Kamaev da9089612a Fix build of java bindings on mingw 2012-12-30 23:24:39 +04:00
cuda-geek 47df8f4c2a Merge pull request #275 from mdim:bug_fix_cvboost 2012-12-30 00:31:03 +04:00
Andrey Kamaev dcde359181 Merge pull request #270 from wswld:2.4 2012-12-29 16:47:39 +04:00
Andrey Kamaev 7f4bcd3d72 Merge pull request #271 from 5kg:fix_cascade 2012-12-29 15:04:11 +04:00
Maria Dimashova 0e2958e888 fixed CvBoost::predict
(Sometimes sample_data became bad because the buffer with its values was deallocated early).
2012-12-29 00:30:52 +04:00
Zifei Tong 260bdc057c Changed parallel_for to parallel_for_ in haar.cpp 2012-12-28 22:56:47 +08:00
Andrey Pavlenko c49b1bc6d5 partial fix for failing tests; fix for Windows launcher script; more quiet output 2012-12-28 17:03:35 +04:00
Zifei Tong e331787645 Fix race condition for Cascade Classifier when TBB enabled. 2012-12-28 20:51:02 +08:00
Vsevolod Glumov c0411caef4 Fixed a bunch of minor issues in 'dev_with_OCV_on_Android.rst'. 2012-12-28 16:37:05 +04:00
Andrey Kamaev b401c6a0c3 Fix discrepancies between function signatures in headers and documentation 2012-12-26 18:24:50 +04:00
Andrey Kamaev aabbe11e64 Improve function arguments parsing and checking
* always use "argN" names for unnamed arguments
* honor space symbol between typename and "*", "&" symbols
* fix indent errors
2012-12-26 17:55:03 +04:00
Andrey Kamaev 5f41971305 Merge pull request #264 from kirill-kornyakov:remove-hack-from-hough-lines-perf-test 2012-12-26 12:53:50 +04:00
Kirill Kornyakov 5023afffc7 Removed hack from perf test on HoughLines, since I hope it is fixed by pr263 2012-12-26 10:33:02 +04:00
Andrey Kamaev 04f3c19b9a Merge pull request #263 from taka-no-me:hough_explicit_double 2012-12-25 18:54:54 +04:00
Andrey Kamaev b78811112f Merge pull request #261 from apavlenko:samples_remove_empty_menu 2012-12-25 18:28:05 +04:00
Andrey Kamaev 2e2972cef3 Merge pull request #262 from kirill-kornyakov:minor-cleanings-for-android-sdk 2012-12-25 18:26:17 +04:00
Andrey Kamaev 16687a2655 Explicitly use double precision sin & cos in hough implementation
On some platforms sin and cos are calculated in single precision resulting in
diversity of results.
2012-12-25 18:05:05 +04:00
Kirill Kornyakov e21f106159 Updated OpenCV Manager rst documentation 2012-12-25 17:50:31 +04:00
Andrey Pavlenko dd8e648d78 hiding empty menu button on Android 4 2012-12-25 17:49:10 +04:00
Kirill Kornyakov def1745132 Updated readme.txt with desciption about different OCV Manager packages 2012-12-25 17:16:30 +04:00
Andrey Kamaev 6bc795308e Merge pull request #247 from wswld:2.4 2012-12-24 21:02:04 +04:00
Andrey Pavlenko 1e5b533d01 updating tutorial #2 2012-12-24 20:05:27 +04:00
Andrey Kamaev 02d1e68c64 Merge pull request #257 from AnnaKogan8:perf-tests-timing-script 2012-12-24 19:38:49 +04:00
Andrey Kamaev 1af55b4bcb Merge pull request #259 from asmorkalov:manager_outofbound_fix 2012-12-24 19:32:51 +04:00
Andrey Kamaev efecf3b8fd Merge ppull request #258 from asmorkalov/android_emu_fix 2012-12-24 19:25:57 +04:00
Andrey Kamaev 8cf6bcb20a Merge pull request #260 from alekcac:css_fix 2012-12-24 19:26:15 +04:00
Andrey Pavlenko 99299b3605 updating tutorial #1 2012-12-24 19:25:42 +04:00
Alexander Shishkov 7e52a8d1b6 modify default css for search button (error #2654) 2012-12-24 18:26:02 +04:00
Alexander Smorkalov 064bf167ad OpenCV Manager crashes with exception (Bug #2660)
String checking and range cheching added.
2012-12-24 18:05:48 +04:00
Alexander Smorkalov 9ca65ceef8 OpenCV example-tutorial1 does not work on Android emulator (Bug #2656)
Problems with Android 2.3.3 (API level 10) fixed;
Android 2.2 does not work due to unsupported camera frame format (known android-2.2 emulator issue).
2012-12-24 17:49:49 +04:00
Anna Kogan f57d692cd7 Improved code 2012-12-24 17:09:04 +04:00
Anna Kogan e1331b44f5 Wrote script generating timing table 2012-12-24 17:09:04 +04:00
Andrey Kamaev 014a500f79 Merge pull request #256 from znah:2.4 2012-12-24 16:11:19 +04:00
Andrey Kamaev 524bde2aeb Merge pull request #255 from taka-no-me:fix_batchdist_test 2012-12-24 13:29:32 +04:00
Alexander Mordvintsev 20838b6f6e fix #2643: use SVD to solve least squares in cvStereoRectifyUncalibrated 2012-12-24 12:59:39 +04:00
Andrey Kamaev 02c7e221a3 Merge pull request #252 from taka-no-me:fix_stlport_build 2012-12-24 12:44:13 +04:00
Andrey Kamaev 0c3bdbf23a Merge pull request #254 from taka-no-me:array_total 2012-12-24 12:43:31 +04:00
Andrey Kamaev d6d1d20816 Show STL type in CMake status report 2012-12-22 22:52:27 +04:00
Andrey Kamaev b870b246e1 Fix memory corruption in batchDistance perf tests 2012-12-22 21:01:57 +04:00
Andrey Kamaev f87987ed72 Honor multidimensional matrices in InputArray::total 2012-12-22 17:56:02 +04:00
Andrey Kamaev 9944282b09 Fix build with STLPort from NDK r8d 2012-12-22 00:59:56 +04:00
Andrey Kamaev ffdbddd6b1 Merge pull request #250 from taka-no-me:android_ndk_r8d 2012-12-21 17:57:59 +04:00
Andrey Kamaev f22ee7f0df Workaround "Segmentation fault" when built with gcc 4.7 from NDK r8d 2012-12-21 16:44:54 +04:00
Vsevolod Glumov e9e46d3086 Updated Android introductory tutorials, based on frequent Q&A questions/issues. 2012-12-21 16:10:20 +04:00
Andrey Kamaev b6efec5f8b Add support for Android NDK r8d 2012-12-21 15:39:23 +04:00
Andrey Kamaev 512f0091db Merge pull request #248 from taka-no-me:reduce_tmp_size 2012-12-20 20:09:35 +04:00
Andrey Kamaev 9526907cba Use .yml.gz format to reduce space requirement from ~260Mb to ~17Mb for ml tests
The size of temporary files is an issue on mobile platforms.
2012-12-20 18:46:54 +04:00
Andrey Kamaev aaf779a3a2 Adjust OpenCV version to 2.4.3.2 2012-12-20 17:19:34 +04:00
Andrey Kamaev 0d00109f05 Merge pull request #244 from asmorkalov:manager_nonarm_fix 2012-12-20 17:21:59 +04:00
Andrey Kamaev 7bee55b84e Merge pull request #243 from takacsd:2.4 2012-12-20 16:58:14 +04:00
Alexander Smorkalov ee144852f2 Hardware platform detection for non arm devices fixed. 2012-12-20 16:44:56 +04:00
Andrey Kamaev 7c37f5d7de Merge pull request #242 from asmorkalov:manager_warning_fix 2012-12-20 16:13:45 +04:00
takacsd 64f821908e Add missing _WIN32 check in core/operations.hpp.
Fix a compilation error with MinGW gcc 4.7 with enabled C++11 support (-std=c++11).
Issue number: #2555
2012-12-20 11:28:16 +01:00
Andrey Kamaev 875294aa92 Merge pull request #241 from taka-no-me:less_cc_tests 2012-12-20 13:05:05 +04:00
Alexander Smorkalov 71e7d444d8 All OpenCV Manager compiler warrnings fixed. 2012-12-20 12:28:30 +04:00
Andrey Kamaev ca7abe1239 Reduce number of performance tests for LBP cascade 2012-12-20 12:25:59 +04:00
Andrey Kamaev f4433ff9c4 Merge pull request #238 from asmorkalov:android_resolution_sample 2012-12-20 12:10:57 +04:00
Alexander Smorkalov 77df8730ef Tutorial-5 sample extended.
Application menu reorganized;
Resolution control added.
2012-12-20 11:16:34 +04:00
Eric Christiansen ad326cb0be adds desktop java junit tests 2012-12-19 14:28:59 -08:00
Andrey Kamaev c8b658fdb6 Merge pull request #237 from asmorkalov:android_make_install_fix 2012-12-19 22:09:04 +04:00
Andrey Kamaev 48f19fba76 Merge pull request #235 from asmorkalov:doc_manager_selection 2012-12-19 18:00:49 +04:00
Alexander Smorkalov 1555922228 OpenCV for Android SDK installation improved;
ReadMe.txt for OpenCV Manager added;
share folder excluded from SDK.
2012-12-19 17:28:46 +04:00
Andrey Kamaev 8763ad6c99 Fix ccache search in Android CMake toolchain. 2012-12-19 16:50:08 +04:00
Andrey Kamaev 35ac95930f Merge pull request #236 from asmorkalov:javadoc_fix 2012-12-19 16:32:45 +04:00
Andrey Kamaev b35fa6c4ff Merge pull request #202 from Daniil-Osokin:calcHist 2012-12-19 15:07:40 +04:00
Alexander Smorkalov d7c89fc649 A lot of javadoc warnings duting javadoc build (Bug #2647) issue fixed
Black list of entities, that are not implemented in Java API added to javadoc generator
2012-12-19 12:53:44 +04:00
Vadim Pisarevsky a75e5ac277 Merge pull request #232 from asmorkalov:compiler_bug_workaround 2012-12-19 10:20:10 +04:00
Andrey Kamaev 2c56a09bee Merge pull request #226 from taka-no-me/equalizeHist
Fix equalization formula in equalizeHist function & rewrite in C++
2012-12-18 15:53:13 -08:00
Daniil Osokin 98d7d99244 Add threaded version of equalizeHist 2012-12-18 23:59:50 +04:00
Alexander Smorkalov 3c09b075fc OpenCV Manager selection chapter added to documentation. 2012-12-18 18:34:51 +04:00
Alexander Smorkalov dfa4b2fefa Workaround for gcc overoptimization compiler bug. 2012-12-18 15:58:17 +04:00
Daniil-Osokin cd501d947c perf tests for calcHist 2-3D case 2012-12-17 12:35:32 +04:00
Daniil-Osokin 7d94236c14 TBB version of calcHist 2012-12-17 11:01:31 +04:00
Vadim Pisarevsky 09be997ed8 Merge pull request #225 from pieleric:2.4 2012-12-16 22:18:24 +04:00
Vadim Pisarevsky 5c88577138 Merge pull request #227 from taka-no-me:sanity_MatND 2012-12-16 22:17:51 +04:00
Andrey Kamaev 80a1d569ca Add support for multidimentional matrices into the sanity checks 2012-12-15 20:15:34 +04:00
Andrey Kamaev 3de6846d12 Merge pull request #224 from wswld:2.4 2012-12-15 16:06:32 +04:00
Andrey Kamaev 0bbba847a4 Fix equalization formula in equalizeHist function & rewrite in C++
Old implementation did

    lut[i] = 255 * (count(Y <= i)) / (width * height)

which actually shifts uniform histograms.
From now histogram is equalized as

    C = count(Y == min(Y))
    lut[i] = 255 * (count(Y <= i) - C) / (width * height - C)
2012-12-15 15:29:15 +04:00
Éric Piel 7701fa7a63 highgui: fix segfault on CvCapture_GStreamer::open
when compiled with GStreamer, open (of a file) segfaults.

Fix was suggested by Bostjan Vesnicer.
2012-12-15 12:11:13 +01:00
Vadim Pisarevsky 9b09f09b9a Merge pull request #222 from taka-no-me:perf_verify_sanity 2012-12-14 12:26:18 +04:00
Vsevolod Glumov 3f417f1ec3 Fixes for issues #2570, #2492, #2559, #2489, #2592. 2012-12-14 10:49:51 +04:00
Andrey Kamaev 5a407153bd Fix sanity checks in stitching test 2012-12-12 20:29:23 +04:00
Andrey Kamaev 817a4c0c30 Merge branch 2.4 into perf_verify_sanity 2012-12-12 20:14:25 +04:00
Andrey Kamaev 932204d197 Added thresholds to some sanity checks 2012-12-12 20:14:20 +04:00
Andrey Kamaev e1afb1409f Add --perf_verify_sanity option to performance tests
This option provides an easy way to identify tests having no regression data
for sanity checks
2012-12-12 19:42:24 +04:00
Andrey Kamaev 64cf113d23 Merge pull request #215 from asmorkalov:manager_depricated_packages 2012-12-12 18:47:14 +04:00
Andrey Kamaev 770a466dd2 Merge pull request #223 from taka-no-me:perf_tests 2012-12-12 18:38:48 +04:00
Andrey Kamaev b876308d77 Merge pull request #200 from asmorkalov:t5_fix 2012-12-12 18:38:17 +04:00
Vadim Pisarevsky 5cc0abffa5 Merge pull request #221 from asmorkalov:doc_install_fix 2012-12-12 13:39:25 +04:00
Andrey Kamaev 6e244c83cd Corrected sanity checks in several perf tests
Also fixed a typo in performance testing framework and removed hardcoded
temporary file name from highgui perf test
2012-12-12 01:00:47 +04:00
Alexander Smorkalov e5468008aa Installation of documents fixed. 2012-12-11 19:08:20 +04:00
Alexander Smorkalov f29c727ada Tag "safe to remove" added to unused packages;
OpenCV Manager version++.
2012-12-11 12:36:01 +04:00
Andrey Kamaev 60ad505a63 Merge pull request #212 from taka-no-me/fix_2602
Prevent imread from illegal memory access (Bug #2602)
2012-12-10 11:48:28 -08:00
Andrey Kamaev 2bf56961c0 Merge pull request #204 from asmorkalov/manager_internal_lib
Feature #2565 implementation
2012-12-10 08:07:39 -08:00
Andrey Kamaev f7dc98f67b Merge pull request #205 from taka-no-me/gtest_r629
Update googletest to the latest upstream
2012-12-10 08:07:30 -08:00
Andrey Kamaev 9c6eed0ba3 Merge pull request #206 from asmorkalov/manager_version_fix
Bug #2595 in OpenCV Manager fixed.
2012-12-10 08:07:19 -08:00
Andrey Kamaev 7660fe03a6 Merge pull request #214 from jmunk1/bugfix-2610
Fixed typo in OpenCVDetectOpenCL.cmake that resulted in cmake not findin...
2012-12-10 08:06:50 -08:00
Andrey Kamaev e21884f4c4 Merge pull request #219 from kirill-kornyakov/hack-hough-lines-sanity-test-on-win32
Ugly hack to make HoughLines sanity check pass on Windows
2012-12-10 08:06:15 -08:00
Kirill Kornyakov cdbbfc98e1 Ugly hack to make HoughLines sanity check pass on Wun32 2012-12-10 18:16:15 +04:00
Andrey Kamaev 7c6191ec11 Refactored run.py script and temporary file generation logic
* use OPENCV_TEMP_PATH environment variable on all platforms
* fix cleanup after OpenCV tests on Windows
* add --list flag to output names of all tests found
* do not override user-passed --perf_min_samples and --perf_force_samples
  options by --check flag
* fix complier checks inside run.py
2012-12-08 15:43:23 +04:00
Alexander Smorkalov d550f95347 Date and time added to saved file name. 2012-12-07 14:46:53 +04:00
Justin Muncaster 709a1cc083 Fixed typo in OpenCVDetectOpenCL.cmake that resulted in cmake not finding OpenCL on windows. 2012-12-06 13:17:25 -08:00
Andrey Kamaev 1821d21f5b Prevent imread from illegal memory access (Bug #2602)
The change is based on pull request #211.
2012-12-06 19:42:17 +04:00
Alexander Smorkalov 257d8df1d4 Bug with skiped packages fixed. 2012-12-06 14:11:30 +04:00
Alexander Smorkalov d2ed8e5f30 Bug #2595 in OpenCV Manager fixed.
OpenCV Manager 2.x marks old 2.4.2 binary package for Tegra as "in use".
The latest version of OpenCV library compatible with platform is used now.
2012-12-05 18:03:42 +04:00
Alexander Smorkalov 4ebcf2b224 GetPublicName function removed for OpenCV LibraryInfo class;
Some OpenCV Manager UI behavior updates;
CMake build fix.
2012-12-05 13:19:28 +04:00
Andrey Kamaev b0d3830399 Update gtest to upstream r629 2012-12-05 03:02:37 +04:00
Vadim Pisarevsky 7852b68c20 Merge pull request #197 from asmorkalov:ffmpeg_status_message_fix 2012-12-04 21:02:10 +04:00
Alexander Smorkalov 0f64f847b2 Info library loading implemeneted. 2012-12-04 16:34:53 +04:00
Alexander Smorkalov 9823b7cd08 Internal version of OpenCV inside OpenCV Manager added to the list of installed packages. 2012-12-04 15:37:27 +04:00
Alexander Smorkalov a0c504aabc Initial stub for OpenCVLibraryInfo class added. 2012-12-04 15:36:52 +04:00
Alexander Smorkalov 6e0db3f527 Feature #1322 "If dll cannot be loaded a warning should be generated" implemented. 2012-12-03 13:52:49 +04:00
Alexander Smorkalov 22484872fa Sample Tutorial-5 improved
Aditional toasts added;
Exception handling improved;
Bitmap recycling added.
2012-11-30 18:41:46 +04:00
Andrey Kamaev f6ca38a579 Adjust Android Manager version from 2.2 to 2.3 2012-11-30 17:09:30 +04:00
Andrey Kamaev f12d945712 Remove compiled pdf files from source control
The documentation is available online at http://opencv.org/documentation.html
2012-11-30 14:56:00 +04:00
Andrey Kamaev 49c35fafc0 Adjust OpenCV version to 2.4.3.1 2012-11-30 14:33:28 +04:00
Andrey Kamaev 60a98aa5f7 Merge pull request #199 from apavlenko/remove_android_tutorial0
removing Android tutorial 0
2012-11-30 01:20:07 -08:00
Andrey Kamaev 677443f3ef Merge pull request #191 from asmorkalov:custom_cam_init 2012-11-30 12:53:26 +04:00
Andrey Pavlenko ea83d384c1 removing Android tutorial 0 since it has become irrelevant after moving to the new application framework 2012-11-30 12:32:16 +04:00
Andrey Kamaev bbfccb61f3 Merge pull request #198 from asmorkalov:disable_warp_tests 2012-11-29 20:29:22 +04:00
Alexander Smorkalov d36f8b9eb3 Code review comments applied
Sample renamed to CameraControl;
Picture taking added to show camera preview restart.
2012-11-29 18:26:57 +04:00
Alexander Smorkalov f6ff2b87fa Some perf tests on warping and resize disabled on Android
MatInfo_Size_Size.resizeDownLinear
MatInfo_Size_Size.resizeUpLinear
TestWarpPerspectiveNear_t.WarpPerspectiveNear
TestWarpPerspective.WarpPerspective
2012-11-29 18:21:22 +04:00
Andrey Kamaev 64bed2060a Merge pull request #194 from asmorkalov/v4l_fix
Patch #2323 applied
2012-11-29 01:27:34 -08:00
Andrey Kamaev 7e8fab0747 Merge pull request #195 from vpisarev/inv3x3_fix
now invert 3x3 on "bad" matrices works well on Windows
2012-11-29 01:27:27 -08:00
Andrey Kamaev c646bd4b7a Merge pull request #196 from jet47/gpu-bug-2581
fixed Bug #2581
2012-11-29 01:27:14 -08:00
Vladislav Vinogradov 362655b02a fixed Bug #2581
GoodFeaturesToTrackDetector_GPU fails when no corners found
2012-11-29 11:19:30 +04:00
Vadim Pisarevsky b57e801c04 now invert 3x3 on "bad" matrices works well on Windows 2012-11-28 23:05:51 +04:00
Alexander Smorkalov bb3d14e1a0 Patch #2323 "cap_libv4l.cpp clears default width and height after setting them" applied. 2012-11-28 21:53:39 +04:00
Andrey Kamaev 5047b3fba2 Merge pull request #193 from AnnaKogan8/perf-tests-increase-time-limits
Increased time limits for perf tests
2012-11-28 07:18:11 -08:00
Andrey Kamaev e1a4d22da6 Merge pull request #192 from taka-no-me/ndk_selection_fix
Android: always sort list of NDK toolchains
2012-11-28 07:17:49 -08:00
Anna Kogan 4e21f42714 increased time-limits 2012-11-28 18:17:33 +04:00
Anna Kogan 8877066846 increased time-limits 2012-11-28 18:17:33 +04:00
Andrey Kamaev 157cdeb443 Merge pull request #175 from taka-no-me:run_py 2012-11-28 12:44:05 +04:00
Andrey Kamaev ae149adb29 Merge pull request #190 from asmorkalov:ninja_fix 2012-11-27 23:41:30 +04:00
Andrey Kamaev cbe22fb5d1 Android: always sort list of NDK toolchains
Order returned by CMake is unreliable but we need clang to go after gcc for
automatic toolchain selection.
2012-11-27 18:16:36 +04:00
Alexander Smorkalov 86f7a357ae Tutorial-5 functionality implemented. 2012-11-27 18:06:43 +04:00
Alexander Smorkalov 24c920a33a Base for new sample added. 2012-11-27 18:06:43 +04:00
Andrey Kamaev 03f402892d Merge pull request #188 from asmorkalov:app_framework 2012-11-27 17:50:39 +04:00
Andrey Kamaev 930b580e0d Merge pull request #189 from wswld:2.4 2012-11-27 17:48:55 +04:00
Alexander Smorkalov 383e04d9e4 OpenCV Manager build via ninja (Bug #2575) fixed. 2012-11-27 17:30:05 +04:00
Vsevolod Glumov 0711e65972 Added a note to the android_dev_intro.rst. 2012-11-27 15:10:57 +04:00
Alexander Smorkalov 2e5a7284d2 Code review comments applied. 2012-11-27 14:55:49 +04:00
Alexander Smorkalov e95fc27490 Samples updated
In tutorial-1 fps meter enabled via layout.xml. Camera id is set to "any" via lauout.xml;
In tutorial-2 message moved ion the bottom of the screen.
2012-11-27 12:47:41 +04:00
Alexander Smorkalov 0efc32fc21 Attribure loading from layout improved.
OpenCV namespace added;
Default values for camera_id added;
Aditional constructor with cameraId added.
Resolution added to FPS message.
2012-11-27 12:47:41 +04:00
Alexander Smorkalov 8266eab8b4 OpenCV app framework improved
FPS meter added;
Camera switching posibility added;
Attributes loading for layout filed implemented.
2012-11-27 12:47:41 +04:00
Andrey Kamaev 214629b220 Merge pull request #187 from vpisarev:doc_fixes_2.4 2012-11-26 22:33:01 +04:00
Andrey Kamaev dc3aa27be4 Merge pull request #183 from apavlenko:perf/android_filters_accuracy 2012-11-26 22:32:38 +04:00
Andrey Kamaev 8286e1a5f7 Merge pull request #185 from apavlenko:bug2569/simplify_samples_jni_code 2012-11-26 22:32:22 +04:00
Andrey Pavlenko c36dcbcada Increase accuracy interval for image filters on Android and other platforms when sensible 2012-11-26 22:29:05 +04:00
Vadim Pisarevsky db965353f4 fixed a few compile errors/warnings in 2.4 branch of the docs 2012-11-26 18:48:23 +04:00
marina.kolpakova 39da17a02a Merge pull requst #177 from cuda-geek/another-one-integral-fix 2012-11-26 18:10:21 +04:00
marina.kolpakova a22edb037f fixed typo 2012-11-26 17:57:56 +04:00
Andrey Pavlenko b19f672843 (#2569) simplifying code to avoid Eclipse CDT editor confusion, removing warnings and typos in comments 2012-11-26 17:32:10 +04:00
marina.kolpakova 7df45c0dcc remove unnecessary copying in SURF 2012-11-25 03:26:50 +04:00
marina.kolpakova 91913364d6 reintegrate warp shuffle based integral 2012-11-25 03:21:51 +04:00
marina.kolpakova 5460cee9e9 fix cascade classifier GFF NMS for empty candidates vector 2012-11-25 03:19:24 +04:00
Andrey Kamaev 23011ffd81 Merge pull request #179 from cuda-geek:usr-bin-env-python 2012-11-24 19:24:01 +04:00
Andrey Kamaev 6eed90e5e8 Merge pull request #180 from mdim:fix_compile_error 2012-11-24 19:22:02 +04:00
Andrey Kamaev 901c0d80c3 Merge pull request #178 from cuda-geek:fix-2504 2012-11-24 19:20:53 +04:00
Maria Dimashova 97e36b9375 fix a compile error in case of building without highgui 2012-11-24 18:10:29 +04:00
marina.kolpakova 68d04d28b6 replace offsets in surf to simple copy for better speed 2012-11-24 16:50:29 +04:00
Andrey Kamaev 8daebeac8a run.py: add --check option for easy run of sanity checks 2012-11-24 14:12:32 +04:00
Andrey Kamaev 9db1d9ba13 run.py: improve handling of multiple Android devices
* do not lose auto-selected device while running several tests
* reduce output noise
* list available devices if unable to auto-select device
* fix error message when no devices connected
2012-11-24 14:11:07 +04:00
marina.kolpakova be0c20b758 align grid by 4 2012-11-24 01:55:03 +04:00
marina.kolpakova fceb62386d fix for 2504: WITH_CUDA disabled with OSX in 2.4.3. 2012-11-23 23:11:44 +04:00
marina.kolpakova 285d6320be add #/usr/bin/env python to all python files 2012-11-23 22:57:22 +04:00
Andrey Kamaev f45b5b13f1 Merge pull request #172 from asmorkalov:default_cam_lib_path 2012-11-23 14:31:04 +04:00
Andrey Kamaev 081887ee16 Merge pull request #174 from asmorkalov:full_sreen_fix 2012-11-23 14:30:48 +04:00
Alexander Smorkalov 2c67731a7b Issue #2549 OpenCV Samples does not expand on full screen fixed.
All samples use application style in android manifest instead of system calls in onCreate event now.
2012-11-23 13:12:11 +04:00
Alexander Smorkalov 3282e08f55 Default native library path for native camera updated.
New versions tries to search library in arm-v7a and Manager packages only.
2012-11-22 12:40:25 +04:00
Alexander Smorkalov 845e52b676 OpenCV Manager headers refactoring.
All constants moved to android independent header file.
2012-11-22 12:39:06 +04:00
Andrey Kamaev 8579666b03 Merge pull request #171 from asmorkalov:android_8_neon_fix 2012-11-21 14:55:38 +04:00
Andrey Kamaev 24af691843 Merge pull request #168 from asmorkalov:android_42_camera_fix 2012-11-21 14:50:53 +04:00
Alexander Smorkalov 8ecd22ba48 Automatic minsdkversion setup added;
Linker problems on armeabi-v7a+NEON with Android 2.2 fixed;
2012-11-21 14:03:11 +04:00
Vadim Pisarevsky c31f106012 Merge branch 'ParallelVideoStreams' of https://github.com/ilya-lavrenov/opencv into 2.4 2012-11-21 11:43:18 +04:00
Alexander Smorkalov aa4e6a8a83 Issue #2547 Native camera does not work on Google Nexus 7 with Android 4.2 fixed;
Issue #2506 Unnecessary log printouts in OpenCV::camera fixed;
Native camera for MIPS Android 4.1.1 added.
Build script for camera updated.
2012-11-21 11:37:29 +04:00
Andrey Kamaev d559c18ee5 Merge pull request #161 from apavlenko:fix/sdk_r21 2012-11-20 19:07:08 +04:00
Andrey Pavlenko cfd634ca3e Improving compatibility with the latest Android SDK (r21) and NDK (r8c).
- Adding Android SDK/ADT r21 compatibility;
- fixing stl headers path for new ndk;
- fixing native API level for Android projects
2012-11-20 18:40:22 +04:00
Andrey Kamaev 4fce5a5e83 Merge pull request #170 from asmorkalov:engine_build_fix 2012-11-20 18:27:43 +04:00
Andrey Kamaev 934b623fa9 Merging pull request #169 from taka-no-me:android-ndk-r8c 2012-11-20 17:56:12 +04:00
Andrey Kamaev d3397a1d6d Merging pull request #167 from asmorkalov:java_api_manager_test 2012-11-20 17:53:06 +04:00
Alexander Smorkalov 5b148083fe Libinfo build fix;
Libinfo revision formating fix;
HW dependent VersionCode for Manager implemented.
2012-11-20 17:39:45 +04:00
Andrey Kamaev f172947ed5 Merging pull request #162 from taka-no-me/opencv 2012-11-20 17:33:34 +04:00
Andrey Kamaev 5527fc62f4 'Merging pull request 163 from asmorkalov/opencv' 2012-11-20 17:23:02 +04:00
Andrey Kamaev 04481d9ef4 Fix Android build with clang compiler 2012-11-20 15:20:04 +04:00
Andrey Kamaev ab9311947a Update Android CMake toolchain for NDK r8c 2012-11-20 15:20:04 +04:00
Alexander Smorkalov 66a1ea7604 Test execution inside Eclipse fixed;
OpenCV testing via OpenCV Manager implemented.
2012-11-20 10:45:46 +04:00
Ilya Lavrenov 4abf0b3193 thread-safe VideoWriter and VideoCapture 2012-11-19 16:44:23 +04:00
Alexander Smorkalov 1f1d43fc88 Issue #2548 Missing static library libtbb.a for armeabi and mips build fixed. 2012-11-19 12:58:17 +04:00
Andrey Kamaev 9ca1162be8 Update URL for TBB download. Update to TBB 4.1 update 1 2012-11-19 11:43:28 +04:00
Andrey Kamaev 6cd70c83fb Merge pull request #160 from asmorkalov/android_4_2_manager_fix 2012-11-16 17:44:34 +04:00
Andrey Kamaev f6f1861a2f Merge pull request #159 from asmorkalov/libinfo_install_fix 2012-11-16 17:44:02 +04:00
Andrey Kamaev 590d1d8118 Merge pull request #157 from vpisarev/bug_fixes5 2012-11-16 17:43:21 +04:00
Alexander Smorkalov 759863d95c Issue #2537 OpenCV Manager doesn't work on Android 4.2 fixed. 2012-11-16 17:01:25 +04:00
Alexander Smorkalov 1e0bff3268 Issue #2541 make install does not work for Android build fixed. 2012-11-15 11:24:41 +04:00
Alexander Mordvintsev 9cfa51a483 added CV_OUT to StereoVar output paramiter 2012-11-13 23:17:54 +04:00
Andrey Kamaev 72a63922d2 Merge pull request #156 from jet47/gpu-hough-lines-fix 2012-11-13 18:24:36 +04:00
Andrey Kamaev e4fb680566 Merge pull request #155 from jet47/gpu-test-fix 2012-11-13 18:23:52 +04:00
Andrey Kamaev 5bc66ec8e4 Merge pull request #149 from taka-no-me/osx_warnings 2012-11-13 18:21:40 +04:00
Andrey Kamaev a218507586 Merge pull request #148 from taka-no-me/tutorial_codes 2012-11-13 18:20:49 +04:00
Andrey Kamaev 8ba9289a2c Merge pull request #146 from taka-no-me/win_opengl 2012-11-13 18:19:42 +04:00
Andrey Kamaev 4d6bdc1533 Merge pull request #145 from taka-no-me/vec_print 2012-11-13 18:18:48 +04:00
Andrey Kamaev c803cbb93b Merge pull request #143 from vpisarev/bug_fixes4 2012-11-13 18:17:33 +04:00
Andrey Kamaev 7e301c5c0e Merge pull request #141 from jet47/gpu-pyrlk-fix 2012-11-13 18:16:19 +04:00
Andrey Kamaev b5e009eb87 Merge pull request #144 from asmorkalov/fd_package_fix_2.4 2012-11-13 18:13:33 +04:00
Vladislav Vinogradov a9919e01d0 fixed bug in gpu::HoughLines 2012-11-13 17:54:17 +04:00
Vladislav Vinogradov 606c23b9aa fixed gpu module tests
uses old CommandLineParser class
2012-11-13 17:50:29 +04:00
Andrey Kamaev a126532cb7 Fix OS X build warnings 2012-11-09 11:29:52 +04:00
Andrey Kamaev dad56e202f Rename sample & tutorial executables 2012-11-09 10:15:48 +04:00
Andrey Kamaev b131dfeecd Build tutorial codes together with other samples
These codes should be included into regular builds.
2012-11-09 10:15:48 +04:00
Andrey Kamaev 8c9c2b3a03 Fix build on Windows with OpenGl enabled
There was missing windows.h include in OpenGL interop code.
2012-11-09 10:00:24 +04:00
Andrey Kamaev e5ffbf9498 Fix stream output operator for Vec<uchar,n>
This fixes output for 8U and 8S vector depths.
They were mistakenly printed as characters instead of numbers.
2012-11-09 09:54:43 +04:00
Alexander Smorkalov 91a9923dcf Face detection package name replaced on org.opencv.facedetect for consistency with Google Play package. 2012-11-09 09:40:19 +04:00
Vadim Pisarevsky 2e54e2a586 fixed problem with LBPHFaceRecognizer::update() without breaking binary compatibility. 2012-11-08 16:15:04 +04:00
Vadim Pisarevsky 9163471987 improved accuracy of 3x3 invert on poorly-conditioned matrices (bug #2525) 2012-11-08 14:09:43 +04:00
Vladislav Vinogradov a0be7b57f5 fixed bug in gpu::PyrLKOpticalFlow::dense
vector index out of range
2012-11-07 17:13:19 +04:00
960 arquivos alterados com 64471 adições e 177172 exclusões
+35 -27
Ver Arquivo
@@ -1,27 +1,36 @@
.git* export-ignore
* text=auto
* whitespace=!indent,trail,space
* text=auto whitespace=trailing-space,space-before-tab,-indent-with-non-tab,tab-in-indent,tabwidth=4
*.py text whitespace=tab-in-indent,trail,space,fix
*.cpp text whitespace=tab-in-indent,trail,space,fix
*.hpp text whitespace=tab-in-indent,trail,space,fix
*.cxx text whitespace=tab-in-indent,trail,space,fix
*.hxx text whitespace=tab-in-indent,trail,space,fix
*.mm text whitespace=tab-in-indent,trail,space,fix
*.c text whitespace=tab-in-indent,trail,space,fix
*.h text whitespace=tab-in-indent,trail,space,fix
*.i text whitespace=tab-in-indent,trail,space,fix
*.java text whitespace=tab-in-indent,trail,space,fix
*.cu text whitespace=tab-in-indent,trail,space,fix
*.cl text whitespace=tab-in-indent,trail,space,fix
*.py text
*.cpp text
*.hpp text
*.cxx text
*.hxx text
*.mm text
*.c text
*.h text
*.i text
*.js text
*.java text
*.scala text
*.cu text
*.cl text
*.css_t text
*.qrc text
*.qss text
*.S text
*.rst text
*.tex text
*.sty text
*.cmake text whitespace=tab-in-indent,trail,space,fix
*.cmakein text whitespace=tab-in-indent,trail,space,fix
*.in text whitespace=tab-in-indent,trail,space,fix
CMakeLists.txt text whitespace=tab-in-indent,trail,space,fix
*.aidl text
*.mk text
*.rst text whitespace=tab-in-indent,trail,space,fix
*.cmake text whitespace=tabwidth=2
*.cmakein text whitespace=tabwidth=2
*.in text whitespace=tabwidth=2
CMakeLists.txt text whitespace=tabwidth=2
*.png binary
*.jepg binary
@@ -32,22 +41,21 @@ CMakeLists.txt text whitespace=tab-in-indent,trail,space,fix
*.a binary
*.so binary
*.dll binary
*.jar binary
*.pdf binary
*.pbxproj binary
*.vec binary
*.doc binary
*.css_t text
*.qrc text
*.qss text
*.S text
*.xml -text
*.yml -text
*.xml -text whitespace=cr-at-eol
*.yml -text whitespace=cr-at-eol
.project -text whitespace=cr-at-eol merge=union
.classpath -text whitespace=cr-at-eol merge=union
.cproject -text whitespace=cr-at-eol merge=union
org.eclipse.jdt.core.prefs -text whitespace=cr-at-eol merge=union
*.vcproj text eol=crlf merge=union
*.cproject text eol=crlf merge=union
*.bat text eol=crlf
*.cmd text eol=crlf
*.cmd.tmpl text eol=crlf
Arquivo binário não exibido.
Arquivo binário não exibido.
externo Arquivo normal → Arquivo executável
Ver Arquivo
externo Arquivo normal → Arquivo executável
Ver Arquivo
BIN
Ver Arquivo
Arquivo binário não exibido.
externo Arquivo normal → Arquivo executável
Ver Arquivo
BIN
Ver Arquivo
Arquivo binário não exibido.
externo Arquivo normal → Arquivo executável
Ver Arquivo
BIN
Ver Arquivo
Arquivo binário não exibido.
BIN
Ver Arquivo
Arquivo binário não exibido.
externo Arquivo normal → Arquivo executável
Ver Arquivo
BIN
Ver Arquivo
Arquivo binário não exibido.
+1
Ver Arquivo
@@ -24,6 +24,7 @@ if(WIN32 AND NOT MINGW)
endif(WIN32 AND NOT MINGW)
ocv_warnings_disable(CMAKE_C_FLAGS -Wno-implicit-function-declaration -Wno-uninitialized -Wmissing-prototypes -Wmissing-declarations -Wunused -Wshadow -Wsign-compare)
ocv_warnings_disable(CMAKE_C_FLAGS -Wunused-parameter) # clang
ocv_warnings_disable(CMAKE_C_FLAGS /wd4013 /wd4018 /wd4101 /wd4244 /wd4267 /wd4715) # vs2005
if(UNIX)
+1
Ver Arquivo
@@ -26,6 +26,7 @@ if(CMAKE_COMPILER_IS_GNUCXX)
endif()
ocv_warnings_disable(CMAKE_C_FLAGS -Wcast-align -Wshadow -Wunused)
ocv_warnings_disable(CMAKE_C_FLAGS -Wunused-parameter) # clang
set_target_properties(${JPEG_LIBRARY}
PROPERTIES OUTPUT_NAME ${JPEG_LIBRARY}
+1
Ver Arquivo
@@ -89,6 +89,7 @@ endif(WIN32)
ocv_warnings_disable(CMAKE_C_FLAGS -Wno-unused-but-set-variable -Wmissing-prototypes -Wmissing-declarations -Wundef -Wunused -Wsign-compare
-Wcast-align -Wshadow -Wno-maybe-uninitialized -Wno-pointer-to-int-cast -Wno-int-to-pointer-cast)
ocv_warnings_disable(CMAKE_C_FLAGS -Wunused-parameter) # clang
ocv_warnings_disable(CMAKE_CXX_FLAGS -Wmissing-declarations -Wunused-parameter)
ocv_warnings_disable(CMAKE_CXX_FLAGS /wd4018 /wd4100 /wd4127 /wd4311 /wd4701 /wd4706) # vs2005
ocv_warnings_disable(CMAKE_CXX_FLAGS /wd4244) # vs2008
+44 -21
Ver Arquivo
@@ -1,44 +1,53 @@
#build TBB for Android from source
if(NOT ANDROID)
message(FATAL_ERROR "The script is designed for Android only!")
endif()
#Cross compile TBB from source
project(tbb)
# 4.1 - works fine
set(tbb_ver "tbb41_20120718oss")
set(tbb_url "http://threadingbuildingblocks.org/uploads/77/188/4.1/tbb41_20120718oss_src.tgz")
set(tbb_md5 "31b9ec300f3d09da2504d5d882788dd4")
# 4.1 update 2 - works fine
set(tbb_ver "tbb41_20130116oss")
set(tbb_url "http://threadingbuildingblocks.org/sites/default/files/software_releases/source/tbb41_20130116oss_src.tgz")
set(tbb_md5 "3809790e1001a1b32d59c9fee590ee85")
set(tbb_version_file "version_string.ver")
ocv_warnings_disable(CMAKE_CXX_FLAGS -Wshadow)
# 4.1 update 1 - works fine
#set(tbb_ver "tbb41_20121003oss")
#set(tbb_url "http://threadingbuildingblocks.org/sites/default/files/software_releases/source/tbb41_20121003oss_src.tgz")
#set(tbb_md5 "2a684fefb855d2d0318d1ef09afa75ff")
#set(tbb_version_file "version_string.ver")
# 4.1 - works fine
#set(tbb_ver "tbb41_20120718oss")
#set(tbb_url "http://threadingbuildingblocks.org/sites/default/files/software_releases/source/tbb41_20120718oss_src.tgz")
#set(tbb_md5 "31b9ec300f3d09da2504d5d882788dd4")
#set(tbb_version_file "version_string.ver")
# 4.0 update 5 - works fine
#set(tbb_ver "tbb40_20120613oss")
#set(tbb_url "http://threadingbuildingblocks.org/uploads/77/187/4.0%20update%205/tbb40_20120613oss_src.tgz")
#set(tbb_url "http://threadingbuildingblocks.org/sites/default/files/software_releases/source/tbb40_20120613oss_src.tgz")
#set(tbb_md5 "da01ed74944ec5950cfae3476901a172")
#set(tbb_version_file "version_string.ver")
# 4.0 update 4 - works fine
#set(tbb_ver "tbb40_20120408oss")
#set(tbb_url "http://threadingbuildingblocks.org/uploads/77/185/4.0%20update%204/tbb40_20120408oss_src.tgz")
#set(tbb_url "http://threadingbuildingblocks.org/sites/default/files/software_releases/source/tbb40_20120408oss_src.tgz")
#set(tbb_md5 "734b356da7fe0ed308741f3e6018251e")
#set(tbb_version_file "version_string.ver")
# 4.0 update 3 - build broken
#set(tbb_ver "tbb40_20120201oss")
#set(tbb_url "http://threadingbuildingblocks.org/uploads/77/182/4.0%20update%203/tbb40_20120201oss_src.tgz")
#set(tbb_url "http://threadingbuildingblocks.org/sites/default/files/software_releases/source/tbb40_20120201oss_src.tgz")
#set(tbb_md5 "4669e7d4adee018de7a7b8b972987218")
#set(tbb_version_file "version_string.tmp")
# 4.0 update 2 - works fine
#set(tbb_ver "tbb40_20111130oss")
#set(tbb_url "http://threadingbuildingblocks.org/uploads/77/180/4.0%20update%202/tbb40_20111130oss_src.tgz")
#set(tbb_url "http://threadingbuildingblocks.org/sites/default/files/software_releases/source/tbb40_20111130oss_src.tgz")
#set(tbb_md5 "1e6926b21e865e79772119cd44fc3ad8")
#set(tbb_version_file "version_string.tmp")
#set(tbb_need_GENERIC_DWORD_LOAD_STORE TRUE)
# 4.0 update 1 - works fine
#set(tbb_ver "tbb40_20111003oss")
#set(tbb_url "http://threadingbuildingblocks.org/uploads/77/177/4.0%20update%201/tbb40_20111003oss_src.tgz")
#set(tbb_url "http://threadingbuildingblocks.org/sites/default/files/software_releases/source/tbb40_20111003oss_src.tgz")
#set(tbb_md5 "7b5d94eb35a563b29ef402e0fd8f15c9")
#set(tbb_version_file "version_string.tmp")
#set(tbb_need_GENERIC_DWORD_LOAD_STORE TRUE)
@@ -115,28 +124,43 @@ list(APPEND lib_srcs "${tbb_src_dir}/src/rml/client/rml_tbb.cpp")
add_definitions(-D__TBB_DYNAMIC_LOAD_ENABLED=0 #required
-D__TBB_BUILD=1 #required
-D__TBB_SURVIVE_THREAD_SWITCH=0 #no cilk on Android ?
-DUSE_PTHREAD #required
-DTBB_USE_GCC_BUILTINS=1 #required
-D__TBB_SURVIVE_THREAD_SWITCH=0 #no cilk support
-DUSE_PTHREAD #required for Unix
-DTBB_USE_GCC_BUILTINS=1 #required for ARM GCC
-DTBB_USE_DEBUG=0 #just to be sure
-DTBB_NO_LEGACY=1 #don't need backward compatibility
-DDO_ITT_NOTIFY=0 #it seems that we don't need these notifications
)
if(ANDROID_COMPILER_IS_CLANG)
add_definitions(-D__TBB_GCC_BUILTIN_ATOMICS_PRESENT=1)
ocv_warnings_disable(CMAKE_CXX_FLAGS -Wmissing-prototypes)
endif()
if(tbb_need_GENERIC_DWORD_LOAD_STORE)
#needed by TBB 4.0 update 1,2; fixed in TBB 4.0 update 3 but it has 2 new problems
add_definitions(-D__TBB_USE_GENERIC_DWORD_LOAD_STORE=1)
set(tbb_need_GENERIC_DWORD_LOAD_STORE ON PARENT_SCOPE)
endif()
add_library(tbb STATIC ${lib_srcs} ${lib_hdrs} "${CMAKE_CURRENT_SOURCE_DIR}/android_additional.h" "${CMAKE_CURRENT_SOURCE_DIR}/${tbb_version_file}")
set(TBB_SOURCE_FILES ${lib_srcs} ${lib_hdrs})
if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm")
if (NOT ANDROID)
set(TBB_SOURCE_FILES ${TBB_SOURCE_FILES} "${CMAKE_CURRENT_SOURCE_DIR}/arm_linux_stub.cpp")
endif()
set(TBB_SOURCE_FILES ${TBB_SOURCE_FILES} "${CMAKE_CURRENT_SOURCE_DIR}/android_additional.h")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -include \"${CMAKE_CURRENT_SOURCE_DIR}/android_additional.h\"")
endif()
set(TBB_SOURCE_FILES ${TBB_SOURCE_FILES} "${CMAKE_CURRENT_SOURCE_DIR}/${tbb_version_file}")
add_library(tbb ${TBB_SOURCE_FILES})
target_link_libraries(tbb c m dl)
ocv_warnings_disable(CMAKE_CXX_FLAGS -Wundef -Wmissing-declarations)
string(REPLACE "-Werror=non-virtual-dtor" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -include \"${CMAKE_CURRENT_SOURCE_DIR}/android_additional.h\"")
set_target_properties(tbb
PROPERTIES OUTPUT_NAME tbb
DEBUG_POSTFIX "${OPENCV_DEBUG_POSTFIX}"
@@ -153,4 +177,3 @@ endif()
# get TBB version
ocv_parse_header("${tbb_src_dir}/include/tbb/tbb_stddef.h" TBB_VERSION_LINES TBB_VERSION_MAJOR TBB_VERSION_MINOR TBB_INTERFACE_VERSION CACHE)
+10
Ver Arquivo
@@ -0,0 +1,10 @@
#include "tbb/tbb_misc.h"
namespace tbb {
namespace internal {
void affinity_helper::protect_affinity_mask() {}
affinity_helper::~affinity_helper() {}
}
}
+93 -63
Ver Arquivo
@@ -113,11 +113,12 @@ endif()
OCV_OPTION(WITH_1394 "Include IEEE1394 support" ON IF (UNIX AND NOT ANDROID AND NOT IOS) )
OCV_OPTION(WITH_AVFOUNDATION "Use AVFoundation for Video I/O" ON IF IOS)
OCV_OPTION(WITH_CARBON "Use Carbon for UI instead of Cocoa" OFF IF APPLE )
OCV_OPTION(WITH_CUBLAS "Include NVidia Cuda Basic Linear Algebra Subprograms (BLAS) library support" OFF IF (CMAKE_VERSION VERSION_GREATER "2.8" AND NOT ANDROID AND NOT IOS) )
OCV_OPTION(WITH_CUDA "Include NVidia Cuda Runtime support" ON IF (CMAKE_VERSION VERSION_GREATER "2.8" AND NOT ANDROID AND NOT IOS) )
OCV_OPTION(WITH_CUFFT "Include NVidia Cuda Fast Fourier Transform (FFT) library support" ON IF (CMAKE_VERSION VERSION_GREATER "2.8" AND NOT ANDROID AND NOT IOS) )
OCV_OPTION(WITH_CUBLAS "Include NVidia Cuda Basic Linear Algebra Subprograms (BLAS) library support" OFF IF (CMAKE_VERSION VERSION_GREATER "2.8" AND NOT ANDROID AND NOT IOS) )
OCV_OPTION(WITH_NVCUVID "Include NVidia Video Decoding library support" OFF IF (CMAKE_VERSION VERSION_GREATER "2.8" AND NOT ANDROID AND NOT IOS AND NOT APPLE) )
OCV_OPTION(WITH_EIGEN "Include Eigen2/Eigen3 support" ON)
OCV_OPTION(WITH_FFMPEG "Include FFMPEG support" ON IF (NOT ANDROID AND NOT IOS) )
OCV_OPTION(WITH_FFMPEG "Include FFMPEG support" ON IF (NOT ANDROID AND NOT IOS))
OCV_OPTION(WITH_GSTREAMER "Include Gstreamer support" ON IF (UNIX AND NOT APPLE AND NOT ANDROID) )
OCV_OPTION(WITH_GTK "Include GTK support" ON IF (UNIX AND NOT APPLE AND NOT ANDROID) )
OCV_OPTION(WITH_IMAGEIO "ImageIO support for OS X" OFF IF APPLE)
@@ -136,7 +137,7 @@ OCV_OPTION(WITH_TBB "Include Intel TBB support" OFF
OCV_OPTION(WITH_CSTRIPES "Include C= support" OFF IF WIN32 )
OCV_OPTION(WITH_TIFF "Include TIFF support" ON IF (NOT IOS) )
OCV_OPTION(WITH_UNICAP "Include Unicap support (GPL)" OFF IF (UNIX AND NOT APPLE AND NOT ANDROID) )
OCV_OPTION(WITH_V4L "Include Video 4 Linux support" ON IF (UNIX AND NOT APPLE AND NOT ANDROID) )
OCV_OPTION(WITH_V4L "Include Video 4 Linux support" ON IF (UNIX AND NOT ANDROID) )
OCV_OPTION(WITH_VIDEOINPUT "Build HighGUI with DirectShow support" ON IF WIN32 )
OCV_OPTION(WITH_XIMEA "Include XIMEA cameras support" OFF IF (NOT ANDROID AND NOT APPLE) )
OCV_OPTION(WITH_XINE "Include Xine support (GPL)" OFF IF (UNIX AND NOT APPLE AND NOT ANDROID) )
@@ -148,6 +149,7 @@ OCV_OPTION(WITH_OPENCLAMDBLAS "Include AMD OpenCL BLAS library support" OFF
# OpenCV build components
# ===================================================
OCV_OPTION(BUILD_SHARED_LIBS "Build shared libraries (.dll/.so) instead of static ones (.lib/.a)" NOT (ANDROID OR IOS) )
OCV_OPTION(BUILD_opencv_apps "Build utility applications (used for example to train classifiers)" (NOT ANDROID) IF (NOT IOS) )
OCV_OPTION(BUILD_ANDROID_EXAMPLES "Build examples for Android platform" ON IF ANDROID )
OCV_OPTION(BUILD_DOCS "Create build rules for OpenCV Documentation" ON )
OCV_OPTION(BUILD_EXAMPLES "Build all examples" OFF )
@@ -156,18 +158,18 @@ OCV_OPTION(BUILD_PERF_TESTS "Build performance tests"
OCV_OPTION(BUILD_TESTS "Build accuracy & regression tests" ON IF (NOT IOS) )
OCV_OPTION(BUILD_WITH_DEBUG_INFO "Include debug info into debug libs (not MSCV only)" ON )
OCV_OPTION(BUILD_WITH_STATIC_CRT "Enables use of staticaly linked CRT for staticaly linked OpenCV" ON IF MSVC )
OCV_OPTION(BUILD_FAT_JAVA_LIB "Create fat java wrapper containing the whole OpenCV library" ON IF ANDROID AND NOT BUILD_SHARED_LIBS AND CMAKE_COMPILER_IS_GNUCXX )
OCV_OPTION(BUILD_FAT_JAVA_LIB "Create fat java wrapper containing the whole OpenCV library" ON IF NOT BUILD_SHARED_LIBS AND CMAKE_COMPILER_IS_GNUCXX )
OCV_OPTION(BUILD_ANDROID_SERVICE "Build OpenCV Manager for Google Play" OFF IF ANDROID AND ANDROID_SOURCE_TREE )
OCV_OPTION(BUILD_ANDROID_PACKAGE "Build platform-specific package for Google Play" OFF IF ANDROID )
# 3rd party libs
OCV_OPTION(BUILD_ZLIB "Build zlib from source" WIN32 OR APPLE )
OCV_OPTION(BUILD_TIFF "Build libtiff from source" WIN32 OR ANDROID OR APPLE )
OCV_OPTION(BUILD_JASPER "Build libjasper from source" WIN32 OR ANDROID OR APPLE )
OCV_OPTION(BUILD_JPEG "Build libjpeg from source" WIN32 OR ANDROID OR APPLE )
OCV_OPTION(BUILD_PNG "Build libpng from source" WIN32 OR ANDROID OR APPLE )
OCV_OPTION(BUILD_OPENEXR "Build openexr from source" WIN32 OR ANDROID OR APPLE )
OCV_OPTION(BUILD_ZLIB "Build zlib from source" WIN32 OR APPLE )
OCV_OPTION(BUILD_TIFF "Build libtiff from source" WIN32 OR ANDROID OR APPLE )
OCV_OPTION(BUILD_JASPER "Build libjasper from source" WIN32 OR ANDROID OR APPLE )
OCV_OPTION(BUILD_JPEG "Build libjpeg from source" WIN32 OR ANDROID OR APPLE )
OCV_OPTION(BUILD_PNG "Build libpng from source" WIN32 OR ANDROID OR APPLE )
OCV_OPTION(BUILD_OPENEXR "Build openexr from source" WIN32 OR ANDROID OR APPLE )
OCV_OPTION(BUILD_TBB "Download and build TBB from source" ANDROID IF CMAKE_COMPILER_IS_GNUCXX )
# OpenCV installation options
# ===================================================
@@ -182,7 +184,7 @@ OCV_OPTION(INSTALL_TO_MANGLED_PATHS "Enables mangled install paths, that help wi
OCV_OPTION(ENABLE_PRECOMPILED_HEADERS "Use precompiled headers" ON IF (NOT IOS) )
OCV_OPTION(ENABLE_SOLUTION_FOLDERS "Solution folder in Visual Studio or in other IDEs" (MSVC_IDE OR CMAKE_GENERATOR MATCHES Xcode) IF (CMAKE_VERSION VERSION_GREATER "2.8.0") )
OCV_OPTION(ENABLE_PROFILING "Enable profiling in the GCC compiler (Add flags: -g -pg)" OFF IF CMAKE_COMPILER_IS_GNUCXX )
OCV_OPTION(ENABLE_OMIT_FRAME_POINTER "Enable -fomit-frame-pointer for GCC" ON IF CMAKE_COMPILER_IS_GNUCXX )
OCV_OPTION(ENABLE_OMIT_FRAME_POINTER "Enable -fomit-frame-pointer for GCC" ON IF CMAKE_COMPILER_IS_GNUCXX AND NOT (APPLE AND CMAKE_COMPILER_IS_CLANGCXX) )
OCV_OPTION(ENABLE_POWERPC "Enable PowerPC for GCC" ON IF (CMAKE_COMPILER_IS_GNUCXX AND CMAKE_SYSTEM_PROCESSOR MATCHES powerpc.*) )
OCV_OPTION(ENABLE_FAST_MATH "Enable -ffast-math (not recommended for GCC 4.6.x)" OFF IF (CMAKE_COMPILER_IS_GNUCXX AND (X86 OR X86_64)) )
OCV_OPTION(ENABLE_SSE "Enable SSE instructions" ON IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) )
@@ -299,21 +301,19 @@ find_host_program(GIT_EXECUTABLE NAMES ${git_names} PATH_SUFFIXES Git/cmd Git/bi
mark_as_advanced(GIT_EXECUTABLE)
if(GIT_EXECUTABLE)
execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --short HEAD
execute_process(COMMAND ${GIT_EXECUTABLE} describe --tags --always --dirty --match "2.[0-9].[0-9]*"
WORKING_DIRECTORY "${OpenCV_SOURCE_DIR}"
OUTPUT_VARIABLE OPENCV_GIT_HASH_SORT
OUTPUT_VARIABLE OPENCV_VCSVERSION
RESULT_VARIABLE GIT_RESULT
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(GIT_RESULT EQUAL 0)
set(OPENCV_VCSVERSION "commit:${OPENCV_GIT_HASH_SORT}")
else()
set(OPENCV_VCSVERSION "exported")
if(NOT GIT_RESULT EQUAL 0)
set(OPENCV_VCSVERSION "unknown")
endif()
else()
# We don't have git:
set(OPENCV_VCSVERSION "")
set(OPENCV_VCSVERSION "unknown")
endif()
@@ -415,10 +415,10 @@ if(WITH_OPENCL)
if(OPENCL_FOUND)
set(HAVE_OPENCL 1)
endif()
if(WITH_OPENCLAMDFFT)
if(WITH_OPENCLAMDFFT AND CLAMDFFT_INCLUDE_DIR)
set(HAVE_CLAMDFFT 1)
endif()
if(WITH_OPENCLAMDBLAS)
if(WITH_OPENCLAMDBLAS AND CLAMDBLAS_INCLUDE_DIR)
set(HAVE_CLAMDBLAS 1)
endif()
endif()
@@ -452,14 +452,16 @@ add_subdirectory(doc)
add_subdirectory(data)
# extra applications
add_subdirectory(apps)
if(BUILD_opencv_apps)
add_subdirectory(apps)
endif()
# examples
if(BUILD_EXAMPLES OR BUILD_ANDROID_EXAMPLES OR INSTALL_PYTHON_EXAMPLES)
add_subdirectory(samples)
endif()
if(BUILD_ANDROID_SERVICE)
if(ANDROID)
add_subdirectory(android/service)
endif()
@@ -467,7 +469,7 @@ if(BUILD_ANDROID_PACKAGE)
add_subdirectory(android/package)
endif()
if (ANDROID AND NOT BUILD_ANDROID_SERVICE AND NOT BUILD_ANDROID_PACKAGE AND NOT BUILD_CAMERA_WRAPER)
if (ANDROID)
add_subdirectory(android/libinfo)
endif()
@@ -519,10 +521,21 @@ if(NOT CMAKE_GENERATOR MATCHES "Xcode|Visual Studio")
endif()
# ========================== C/C++ options ==========================
if(CMAKE_CXX_COMPILER_VERSION)
set(OPENCV_COMPILER_STR "${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1} (ver ${CMAKE_CXX_COMPILER_VERSION})")
elseif(CMAKE_COMPILER_IS_CLANGCXX)
set(OPENCV_COMPILER_STR "${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1} (ver ${CMAKE_CLANG_REGEX_VERSION})")
elseif(CMAKE_COMPILER_IS_GNUCXX)
set(OPENCV_COMPILER_STR "${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1} (ver ${CMAKE_GCC_REGEX_VERSION})")
else()
set(OPENCV_COMPILER_STR "${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1}")
endif()
string(STRIP "${OPENCV_COMPILER_STR}" OPENCV_COMPILER_STR)
status("")
status(" C/C++:")
status(" Built as dynamic libs?:" BUILD_SHARED_LIBS THEN YES ELSE NO)
status(" C++ Compiler:" CMAKE_COMPILER_IS_GNUCXX THEN "${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1} (ver ${CMAKE_GCC_REGEX_VERSION})" ELSE "${CMAKE_CXX_COMPILER}" )
status(" C++ Compiler:" ${OPENCV_COMPILER_STR})
status(" C++ flags (Release):" ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELEASE})
status(" C++ flags (Debug):" ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_DEBUG})
status(" C Compiler:" ${CMAKE_C_COMPILER} ${CMAKE_C_COMPILER_ARG1})
@@ -551,7 +564,11 @@ foreach(m ${OPENCV_MODULES_DISABLED_AUTO})
list(APPEND __mdeps ${d})
endif()
endforeach()
list(APPEND OPENCV_MODULES_DISABLED_AUTO_ST "${m}(deps: ${__mdeps})")
if(__mdeps)
list(APPEND OPENCV_MODULES_DISABLED_AUTO_ST "${m}(deps: ${__mdeps})")
else()
list(APPEND OPENCV_MODULES_DISABLED_AUTO_ST "${m}")
endif()
endforeach()
string(REPLACE "opencv_" "" OPENCV_MODULES_DISABLED_AUTO_ST "${OPENCV_MODULES_DISABLED_AUTO_ST}")
@@ -565,16 +582,18 @@ if(ANDROID)
status("")
status(" Android: ")
status(" Android ABI:" ${ANDROID_ABI})
status(" STL type:" ${ANDROID_STL})
status(" Native API level:" android-${ANDROID_NATIVE_API_LEVEL})
status(" SDK target:" "${ANDROID_SDK_TARGET}")
android_get_compatible_target(android_sdk_target_status ${ANDROID_NATIVE_API_LEVEL} ${ANDROID_SDK_TARGET} 11)
status(" SDK target:" "${android_sdk_target_status}")
if(BUILD_WITH_ANDROID_NDK)
status(" Android NDK:" "${ANDROID_NDK} (toolchain: ${ANDROID_TOOLCHAIN_NAME})")
elseif(BUILD_WITH_STANDALONE_TOOLCHAIN)
status(" Android toolchain:" "${ANDROID_STANDALONE_TOOLCHAIN}")
endif()
status(" android tool:" ANDROID_EXECUTABLE THEN "${ANDROID_EXECUTABLE} (${ANDROID_TOOLS_Pkg_Desc})" ELSE NO)
status(" ant:" ANT_EXECUTABLE THEN "${ANT_EXECUTABLE} (ver ${ANT_VERSION})" ELSE NO)
status(" Google Play package:" BUILD_ANDROID_PACKAGE THEN YES ELSE NO)
status(" Google Play package:" BUILD_ANDROID_PACKAGE THEN YES ELSE NO)
status(" Android examples:" BUILD_ANDROID_EXAMPLES AND CAN_BUILD_ANDROID_PROJECTS THEN YES ELSE NO)
endif()
# ========================== GUI ==========================
@@ -698,7 +717,7 @@ if(DEFINED WITH_PVAPI)
endif(DEFINED WITH_PVAPI)
if(DEFINED WITH_GIGEAPI)
status(" GigEVisionSDK:" HAVE_GIGE_API THEN YES ELSE NO)
status(" GigEVisionSDK:" HAVE_GIGE_API THEN YES ELSE NO)
endif(DEFINED WITH_GIGEAPI)
if(DEFINED WITH_QUICKTIME)
@@ -719,11 +738,13 @@ if(DEFINED WITH_V4L)
endif()
if(HAVE_CAMV4L2)
set(HAVE_CAMV4L2_STR "YES")
elseif(HAVE_VIDEOIO)
set(HAVE_CAMV4L2_STR "YES(videoio)")
else()
set(HAVE_CAMV4L2_STR "NO")
endif()
status(" V4L/V4L2:" HAVE_LIBV4L THEN "Using libv4l (ver ${ALIASOF_libv4l1_VERSION})"
ELSE "${HAVE_CAMV4L_STR}/${HAVE_CAMV4L2_STR}")
ELSE "${HAVE_CAMV4L_STR}/${HAVE_CAMV4L2_STR}")
endif(DEFINED WITH_V4L)
if(DEFINED WITH_VIDEOINPUT)
@@ -742,46 +763,51 @@ endif(DEFINED WITH_XINE)
status("")
status(" Other third-party libraries:")
if(DEFINED WITH_IPP)
if(WITH_IPP AND IPP_FOUND)
status(" Use IPP:" "${IPP_LATEST_VERSION_STR} [${IPP_LATEST_VERSION_MAJOR}.${IPP_LATEST_VERSION_MINOR}.${IPP_LATEST_VERSION_BUILD}]")
status(" at:" "${IPP_ROOT_DIR}")
else()
status(" Use IPP:" WITH_IPP AND NOT IPP_FOUND THEN "IPP not found" ELSE NO)
endif()
endif(DEFINED WITH_IPP)
if(WITH_IPP AND IPP_FOUND)
status(" Use IPP:" "${IPP_LATEST_VERSION_STR} [${IPP_LATEST_VERSION_MAJOR}.${IPP_LATEST_VERSION_MINOR}.${IPP_LATEST_VERSION_BUILD}]")
status(" at:" "${IPP_ROOT_DIR}")
else()
status(" Use IPP:" WITH_IPP AND NOT IPP_FOUND THEN "IPP not found" ELSE NO)
endif()
if(DEFINED WITH_TBB)
status(" Use TBB:" HAVE_TBB THEN "YES (ver ${TBB_VERSION_MAJOR}.${TBB_VERSION_MINOR} interface ${TBB_INTERFACE_VERSION})" ELSE NO)
endif(DEFINED WITH_TBB)
if(DEFINED WITH_CSTRIPES)
status(" Use C=:" HAVE_CSTRIPES THEN YES ELSE NO)
endif(DEFINED WITH_CSTRIPES)
if(DEFINED WITH_CUDA)
status(" Use Cuda:" HAVE_CUDA THEN "YES (ver ${CUDA_VERSION_STRING})" ELSE NO)
endif(DEFINED WITH_CUDA)
status(" Use OpenCL:" HAVE_OPENCL THEN YES ELSE NO)
status(" Use Eigen:" HAVE_EIGEN THEN "YES (ver ${EIGEN_WORLD_VERSION}.${EIGEN_MAJOR_VERSION}.${EIGEN_MINOR_VERSION})" ELSE NO)
status(" Use Eigen:" HAVE_EIGEN THEN "YES (ver ${EIGEN_WORLD_VERSION}.${EIGEN_MAJOR_VERSION}.${EIGEN_MINOR_VERSION})" ELSE NO)
status(" Use TBB:" HAVE_TBB THEN "YES (ver ${TBB_VERSION_MAJOR}.${TBB_VERSION_MINOR} interface ${TBB_INTERFACE_VERSION})" ELSE NO)
status(" Use OpenMP:" HAVE_OPENMP THEN YES ELSE NO)
status(" Use GCD" HAVE_GCD THEN YES ELSE NO)
status(" Use Concurrency" HAVE_CONCURRENCY THEN YES ELSE NO)
status(" Use C=:" HAVE_CSTRIPES THEN YES ELSE NO)
status(" Use Cuda:" HAVE_CUDA THEN "YES (ver ${CUDA_VERSION_STRING})" ELSE NO)
status(" Use OpenCL:" HAVE_OPENCL THEN YES ELSE NO)
if(HAVE_CUDA)
status("")
status(" NVIDIA CUDA")
status(" Use CUFFT:" HAVE_CUFFT THEN YES ELSE NO)
status(" Use CUBLAS:" HAVE_CUBLAS THEN YES ELSE NO)
status(" Use CUFFT:" HAVE_CUFFT THEN YES ELSE NO)
status(" Use CUBLAS:" HAVE_CUBLAS THEN YES ELSE NO)
status(" USE NVCUVID:" HAVE_NVCUVID THEN YES ELSE NO)
status(" NVIDIA GPU arch:" ${OPENCV_CUDA_ARCH_BIN})
status(" NVIDIA PTX archs:" ${OPENCV_CUDA_ARCH_PTX})
status(" Use fast math:" CUDA_FAST_MATH THEN YES ELSE NO)
endif()
if(HAVE_OPENCL AND BUILD_opencv_ocl)
status("")
status(" OpenCL")
if(OPENCL_INCLUDE_DIR)
status(" Include:" ${OPENCL_INCLUDE_DIR})
endif()
if(OPENCL_LIBRARIES)
status(" libraries:" ${OPENCL_LIBRARIES})
endif()
status(" Use AMDFFT:" HAVE_CLAMDFFT THEN YES ELSE NO)
status(" Use AMDBLAS:" HAVE_CLAMDBLAS THEN YES ELSE NO)
endif()
# ========================== python ==========================
status("")
status(" Python:")
status(" Interpreter:" PYTHON_EXECUTABLE THEN "${PYTHON_EXECUTABLE} (ver ${PYTHON_VERSION_FULL})" ELSE NO)
status(" Interpreter:" PYTHON_EXECUTABLE THEN "${PYTHON_EXECUTABLE} (ver ${PYTHON_VERSION_FULL})" ELSE NO)
if(BUILD_opencv_python)
if(PYTHONLIBS_VERSION_STRING)
status(" Libraries:" HAVE_opencv_python THEN "${PYTHON_LIBRARIES} (ver ${PYTHONLIBS_VERSION_STRING})" ELSE NO)
@@ -792,6 +818,15 @@ if(BUILD_opencv_python)
status(" packages path:" PYTHON_EXECUTABLE THEN "${PYTHON_PACKAGES_PATH}" ELSE "-")
endif()
# ========================== java ==========================
status("")
status(" Java:")
status(" ant:" ANT_EXECUTABLE THEN "${ANT_EXECUTABLE} (ver ${ANT_VERSION})" ELSE NO)
if(NOT ANDROID)
status(" JNI:" JNI_INCLUDE_DIRS THEN "${JNI_INCLUDE_DIRS}" ELSE NO)
endif()
status(" Java tests:" BUILD_TESTS AND (NOT ANDROID OR CAN_BUILD_ANDROID_PROJECTS) THEN YES ELSE NO)
# ========================== documentation ==========================
if(BUILD_DOCS)
status("")
@@ -810,12 +845,7 @@ status("")
status(" Tests and samples:")
status(" Tests:" BUILD_TESTS AND HAVE_opencv_ts THEN YES ELSE NO)
status(" Performance tests:" BUILD_PERF_TESTS AND HAVE_opencv_ts THEN YES ELSE NO)
status(" Examples:" BUILD_EXAMPLES THEN YES ELSE NO)
if(ANDROID)
status(" Android tests:" BUILD_TESTS AND CAN_BUILD_ANDROID_PROJECTS THEN YES ELSE NO)
status(" Android examples:" BUILD_ANDROID_EXAMPLES AND CAN_BUILD_ANDROID_PROJECTS THEN YES ELSE NO)
endif()
status(" C/C++ Examples:" BUILD_EXAMPLES THEN YES ELSE NO)
# ========================== auxiliary ==========================
status("")
+351 -186
Ver Arquivo
@@ -1,7 +1,37 @@
# Copyright (c) 2010-2011, Ethan Rublee
# Copyright (c) 2011-2012, Andrey Kamaev
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
# 3. The name of the copyright holders may be used to endorse or promote
# products derived from this software without specific prior written
# permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
# ------------------------------------------------------------------------------
# Android CMake toolchain file, for use with the Android NDK r5-r8
# Requires cmake 2.6.3 or newer (2.8.5 or newer is recommended).
# See home page: http://code.google.com/p/android-cmake/
# See home page: https://github.com/taka-no-me/android-cmake
#
# The file is mantained by the OpenCV project. The latest version can be get at
# http://code.opencv.org/projects/opencv/repository/revisions/master/changes/android/android.toolchain.cmake
@@ -64,6 +94,20 @@
# ANDROID_NATIVE_API_LEVEL=android-8 - level of Android API compile for.
# Option is read-only when standalone toolchain is used.
#
# ANDROID_TOOLCHAIN_NAME=arm-linux-androideabi-4.6 - the name of compiler
# toolchain to be used. The list of possible values depends on the NDK
# version. For NDK r8c the possible values are:
#
# * arm-linux-androideabi-4.4.3
# * arm-linux-androideabi-4.6
# * arm-linux-androideabi-clang3.1
# * mipsel-linux-android-4.4.3
# * mipsel-linux-android-4.6
# * mipsel-linux-android-clang3.1
# * x86-4.4.3
# * x86-4.6
# * x86-clang3.1
#
# ANDROID_FORCE_ARM_BUILD=OFF - set ON to generate 32-bit ARM instructions
# instead of Thumb. Is not available for "x86" (inapplicable) and
# "armeabi-v6 with VFP" (is forced to be ON) ABIs.
@@ -147,13 +191,9 @@
# under the ${LIBRARY_OUTPUT_PATH_ROOT}/libs/${ANDROID_NDK_ABI_NAME}
# (depending on the target ABI). This is convenient for Android packaging.
#
# Authors:
# Ethan Rublee ethan.ruble@gmail.com
# Andrey Kamaev andrey.kamaev@itseez.com
#
# Change Log:
# - initial version December 2010
# - modified April 2011
# - April 2011
# [+] added possibility to build with NDK (without standalone toolchain)
# [+] support cross-compilation on Windows (native, no cygwin support)
# [+] added compiler option to force "char" type to be signed
@@ -164,13 +204,13 @@
# [+] EXECUTABLE_OUTPUT_PATH is set by toolchain (required on Windows)
# [~] Fixed bug with ANDROID_API_LEVEL variable
# [~] turn off SWIG search if it is not found first time
# - modified May 2011
# - May 2011
# [~] ANDROID_LEVEL is renamed to ANDROID_API_LEVEL
# [+] ANDROID_API_LEVEL is detected by toolchain if not specified
# [~] added guard to prevent changing of output directories on the first
# cmake pass
# [~] toolchain exits with error if ARM_TARGET is not recognized
# - modified June 2011
# - June 2011
# [~] default NDK path is updated for version r5c
# [+] variable CMAKE_SYSTEM_PROCESSOR is set based on ARM_TARGET
# [~] toolchain install directory is added to linker paths
@@ -178,13 +218,13 @@
# [+] added macro find_host_package, find_host_program to search
# packages/programs on the host system
# [~] fixed path to STL library
# - modified July 2011
# - July 2011
# [~] fixed options caching
# [~] search for all supported NDK versions
# [~] allowed spaces in NDK path
# - modified September 2011
# - September 2011
# [~] updated for NDK r6b
# - modified November 2011
# - November 2011
# [*] rewritten for NDK r7
# [+] x86 toolchain support (experimental)
# [+] added "armeabi-v6 with VFP" ABI for ARMv6 processors.
@@ -197,37 +237,37 @@
# [~] ARM_TARGET is renamed to ANDROID_ABI
# [~] ARMEABI_NDK_NAME is renamed to ANDROID_NDK_ABI_NAME
# [~] ANDROID_API_LEVEL is renamed to ANDROID_NATIVE_API_LEVEL
# - modified January 2012
# - January 2012
# [+] added stlport_static support (experimental)
# [+] added special check for cygwin
# [+] filtered out hidden files (starting with .) while globbing inside NDK
# [+] automatically applied GLESv2 linkage fix for NDK revisions 5-6
# [+] added ANDROID_GET_ABI_RAWNAME to get NDK ABI names by CMake flags
# - modified February 2012
# - February 2012
# [+] updated for NDK r7b
# [~] fixed cmake try_compile() command
# [~] Fix for missing install_name_tool on OS X
# - modified March 2012
# - March 2012
# [~] fixed incorrect C compiler flags
# [~] fixed CMAKE_SYSTEM_PROCESSOR change on ANDROID_ABI change
# [+] improved toolchain loading speed
# [+] added assembler language support (.S)
# [+] allowed preset search paths and extra search suffixes
# - modified April 2012
# - April 2012
# [+] updated for NDK r7c
# [~] fixed most of problems with compiler/linker flags and caching
# [+] added option ANDROID_FUNCTION_LEVEL_LINKING
# - modified May 2012
# - May 2012
# [+] updated for NDK r8
# [+] added mips architecture support
# - modified August 2012
# - August 2012
# [+] updated for NDK r8b
# [~] all intermediate files generated by toolchain are moved to CMakeFiles
# [~] libstdc++ and libsupc are removed from explicit link libraries
# [+] added CCache support (via NDK_CCACHE environment or cmake variable)
# [+] added gold linker support for NDK r8b
# [~] fixed mips linker flags for NDK r8b
# - modified September 2012
# - September 2012
# [+] added NDK release name detection (see ANDROID_NDK_RELEASE)
# [+] added support for all C++ runtimes from NDK
# (system, gabi++, stlport, gnustl)
@@ -235,8 +275,14 @@
# [~] use gold linker as default if available (NDK r8b)
# [~] globally turned off rpath
# [~] compiler options are aligned with NDK r8b
# - modified October 2012
# - October 2012
# [~] fixed C++ linking: explicitly link with math library (OpenCV #2426)
# - November 2012
# [+] updated for NDK r8c
# [+] added support for clang compiler
# - December 2012
# [~] fixed ccache full path search
# [+] updated for NDK r8d
# ------------------------------------------------------------------------------
cmake_minimum_required( VERSION 2.6.3 )
@@ -259,7 +305,7 @@ set( CMAKE_SYSTEM_VERSION 1 )
# rpath makes low sence for Android
set( CMAKE_SKIP_RPATH TRUE CACHE BOOL "If set, runtime paths are not added when using shared libraries." )
set( ANDROID_SUPPORTED_NDK_VERSIONS ${ANDROID_EXTRA_NDK_VERSIONS} -r8b -r8 -r7c -r7b -r7 -r6b -r6 -r5c -r5b -r5 "" )
set( ANDROID_SUPPORTED_NDK_VERSIONS ${ANDROID_EXTRA_NDK_VERSIONS} -r8d -r8c -r8b -r8 -r7c -r7b -r7 -r6b -r6 -r5c -r5b -r5 "" )
if(NOT DEFINED ANDROID_NDK_SEARCH_PATHS)
if( CMAKE_HOST_WIN32 )
file( TO_CMAKE_PATH "$ENV{PROGRAMFILES}" ANDROID_NDK_SEARCH_PATHS )
@@ -367,8 +413,8 @@ endmacro()
macro( __DETECT_TOOLCHAIN_MACHINE_NAME _var _root )
if( EXISTS "${_root}" )
file( GLOB __gccExePath "${_root}/bin/*-gcc${TOOL_OS_SUFFIX}" )
__LIST_FILTER( __gccExePath "bin/[.].*-gcc${TOOL_OS_SUFFIX}$" )
file( GLOB __gccExePath RELATIVE "${_root}/bin/" "${_root}/bin/*-gcc${TOOL_OS_SUFFIX}" )
__LIST_FILTER( __gccExePath "^[.].*" )
list( LENGTH __gccExePath __gccExePathsCount )
if( NOT __gccExePathsCount EQUAL 1 AND NOT _CMAKE_IN_TRY_COMPILE )
message( WARNING "Could not determine machine name for compiler from ${_root}" )
@@ -506,55 +552,76 @@ if( BUILD_WITH_STANDALONE_TOOLCHAIN )
elseif( __availableToolchainMachines MATCHES mipsel )
set( __availableToolchainArchs "mipsel" )
endif()
if( ANDROID_COMPILER_VERSION )
# do not run gcc every time because it is relatevely expencive
set( __availableToolchainCompilerVersions "${ANDROID_COMPILER_VERSION}" )
else()
execute_process( COMMAND "${ANDROID_STANDALONE_TOOLCHAIN}/bin/${__availableToolchainMachines}-gcc${TOOL_OS_SUFFIX}" --version
OUTPUT_VARIABLE __availableToolchainCompilerVersions OUTPUT_STRIP_TRAILING_WHITESPACE )
string( REGEX MATCH "[0-9]+[.][0-9]+([.][0-9]+)?" __availableToolchainCompilerVersions "${__availableToolchainCompilerVersions}" )
execute_process( COMMAND "${ANDROID_STANDALONE_TOOLCHAIN}/bin/${__availableToolchainMachines}-gcc${TOOL_OS_SUFFIX}" -dumpversion
OUTPUT_VARIABLE __availableToolchainCompilerVersions OUTPUT_STRIP_TRAILING_WHITESPACE )
string( REGEX MATCH "[0-9]+[.][0-9]+([.][0-9]+)?" __availableToolchainCompilerVersions "${__availableToolchainCompilerVersions}" )
if( EXISTS "${ANDROID_STANDALONE_TOOLCHAIN}/bin/clang${TOOL_OS_SUFFIX}" )
list( APPEND __availableToolchains "standalone-clang" )
list( APPEND __availableToolchainMachines ${__availableToolchainMachines} )
list( APPEND __availableToolchainArchs ${__availableToolchainArchs} )
list( APPEND __availableToolchainCompilerVersions ${__availableToolchainCompilerVersions} )
endif()
endif()
macro( __GLOB_NDK_TOOLCHAINS __availableToolchainsVar )
foreach( __toolchain ${${__availableToolchainsVar}} )
if( "${__toolchain}" MATCHES "-clang3[.][0-9]$" AND NOT EXISTS "${ANDROID_NDK}/toolchains/${__toolchain}/prebuilt/" )
string( REGEX REPLACE "-clang3[.][0-9]$" "-4.6" __gcc_toolchain "${__toolchain}" )
else()
set( __gcc_toolchain "${__toolchain}" )
endif()
__DETECT_TOOLCHAIN_MACHINE_NAME( __machine "${ANDROID_NDK}/toolchains/${__gcc_toolchain}/prebuilt/${ANDROID_NDK_HOST_SYSTEM_NAME}" )
if( __machine )
string( REGEX MATCH "[0-9]+[.][0-9]+([.][0-9]+)?$" __version "${__gcc_toolchain}" )
string( REGEX MATCH "^[^-]+" __arch "${__gcc_toolchain}" )
list( APPEND __availableToolchainMachines "${__machine}" )
list( APPEND __availableToolchainArchs "${__arch}" )
list( APPEND __availableToolchainCompilerVersions "${__version}" )
else()
list( REMOVE_ITEM ${__availableToolchainsVar} "${__toolchain}" )
endif()
unset( __gcc_toolchain )
endforeach()
endmacro()
# get all the details about NDK
if( BUILD_WITH_ANDROID_NDK )
file( GLOB ANDROID_SUPPORTED_NATIVE_API_LEVELS RELATIVE "${ANDROID_NDK}/platforms" "${ANDROID_NDK}/platforms/android-*" )
string( REPLACE "android-" "" ANDROID_SUPPORTED_NATIVE_API_LEVELS "${ANDROID_SUPPORTED_NATIVE_API_LEVELS}" )
file( GLOB __availableToolchains RELATIVE "${ANDROID_NDK}/toolchains" "${ANDROID_NDK}/toolchains/*" )
__LIST_FILTER( __availableToolchains "^[.]" )
set( __availableToolchains "" )
set( __availableToolchainMachines "" )
set( __availableToolchainArchs "" )
set( __availableToolchainCompilerVersions "" )
foreach( __toolchain ${__availableToolchains} )
__DETECT_TOOLCHAIN_MACHINE_NAME( __machine "${ANDROID_NDK}/toolchains/${__toolchain}/prebuilt/${ANDROID_NDK_HOST_SYSTEM_NAME}" )
if( __machine )
string( REGEX MATCH "[0-9]+[.][0-9]+([.][0-9]+)?$" __version "${__toolchain}" )
string( REGEX MATCH "^[^-]+" __arch "${__toolchain}" )
list( APPEND __availableToolchainMachines "${__machine}" )
list( APPEND __availableToolchainArchs "${__arch}" )
list( APPEND __availableToolchainCompilerVersions "${__version}" )
else()
list( REMOVE_ITEM __availableToolchains "${__toolchain}" )
endif()
endforeach()
if( ANDROID_TOOLCHAIN_NAME AND EXISTS "${ANDROID_NDK}/toolchains/${ANDROID_TOOLCHAIN_NAME}/" )
# do not go through all toolchains if we know the name
set( __availableToolchains "${ANDROID_TOOLCHAIN_NAME}" )
__GLOB_NDK_TOOLCHAINS( __availableToolchains )
endif()
if( NOT __availableToolchains )
message( FATAL_ERROR "Could not any working toolchain in the NDK. Probably your Android NDK is broken." )
file( GLOB __availableToolchains RELATIVE "${ANDROID_NDK}/toolchains" "${ANDROID_NDK}/toolchains/*" )
if( __availableToolchains )
list(SORT __availableToolchains) # we need clang to go after gcc
endif()
__LIST_FILTER( __availableToolchains "^[.]" )
__LIST_FILTER( __availableToolchains "llvm" )
__GLOB_NDK_TOOLCHAINS( __availableToolchains )
endif()
if( NOT __availableToolchains )
message( FATAL_ERROR "Could not find any working toolchain in the NDK. Probably your Android NDK is broken." )
endif()
endif()
# build list of available ABIs
set( ANDROID_SUPPORTED_ABIS "" )
set( __uniqToolchainArchNames ${__availableToolchainArchs} )
list( REMOVE_DUPLICATES __uniqToolchainArchNames )
list( SORT __uniqToolchainArchNames )
foreach( __arch ${__uniqToolchainArchNames} )
list( APPEND ANDROID_SUPPORTED_ABIS ${ANDROID_SUPPORTED_ABIS_${__arch}} )
endforeach()
unset( __uniqToolchainArchNames )
if( NOT ANDROID_SUPPORTED_ABIS )
set( ANDROID_SUPPORTED_ABIS "" )
set( __uniqToolchainArchNames ${__availableToolchainArchs} )
list( REMOVE_DUPLICATES __uniqToolchainArchNames )
list( SORT __uniqToolchainArchNames )
foreach( __arch ${__uniqToolchainArchNames} )
list( APPEND ANDROID_SUPPORTED_ABIS ${ANDROID_SUPPORTED_ABIS_${__arch}} )
endforeach()
unset( __uniqToolchainArchNames )
if( NOT ANDROID_SUPPORTED_ABIS )
message( FATAL_ERROR "No one of known Android ABIs is supported by this cmake toolchain." )
endif()
message( FATAL_ERROR "No one of known Android ABIs is supported by this cmake toolchain." )
endif()
# choose target ABI
@@ -569,33 +636,34 @@ if( __androidAbiIdx EQUAL -1 )
endif()
unset( __androidAbiIdx )
# remember target ABI
set( ANDROID_ABI "${ANDROID_ABI}" CACHE STRING "The target ABI for Android. If arm, then armeabi-v7a is recommended for hardware floating point." FORCE )
# set target ABI options
if( ANDROID_ABI STREQUAL "x86" )
set( X86 true )
set( ANDROID_NDK_ABI_NAME "x86" )
set( ANDROID_ARCH_NAME "x86" )
set( ANDROID_ARCH_FULLNAME "x86" )
set( ANDROID_LLVM_TRIPLE "i686-none-linux-android" )
set( CMAKE_SYSTEM_PROCESSOR "i686" )
elseif( ANDROID_ABI STREQUAL "mips" )
set( MIPS true )
set( ANDROID_NDK_ABI_NAME "mips" )
set( ANDROID_ARCH_NAME "mips" )
set( ANDROID_ARCH_FULLNAME "mipsel" )
set( ANDROID_LLVM_TRIPLE "mipsel-none-linux-android" )
set( CMAKE_SYSTEM_PROCESSOR "mips" )
elseif( ANDROID_ABI STREQUAL "armeabi" )
set( ARMEABI true )
set( ANDROID_NDK_ABI_NAME "armeabi" )
set( ANDROID_ARCH_NAME "arm" )
set( ANDROID_ARCH_FULLNAME "arm" )
set( ANDROID_LLVM_TRIPLE "armv5te-none-linux-androideabi" )
set( CMAKE_SYSTEM_PROCESSOR "armv5te" )
elseif( ANDROID_ABI STREQUAL "armeabi-v6 with VFP" )
set( ARMEABI_V6 true )
set( ANDROID_NDK_ABI_NAME "armeabi" )
set( ANDROID_ARCH_NAME "arm" )
set( ANDROID_ARCH_FULLNAME "arm" )
set( ANDROID_LLVM_TRIPLE "armv5te-none-linux-androideabi" )
set( CMAKE_SYSTEM_PROCESSOR "armv6" )
# need always fallback to older platform
set( ARMEABI true )
@@ -604,12 +672,14 @@ elseif( ANDROID_ABI STREQUAL "armeabi-v7a")
set( ANDROID_NDK_ABI_NAME "armeabi-v7a" )
set( ANDROID_ARCH_NAME "arm" )
set( ANDROID_ARCH_FULLNAME "arm" )
set( ANDROID_LLVM_TRIPLE "armv7-none-linux-androideabi" )
set( CMAKE_SYSTEM_PROCESSOR "armv7-a" )
elseif( ANDROID_ABI STREQUAL "armeabi-v7a with VFPV3" )
set( ARMEABI_V7A true )
set( ANDROID_NDK_ABI_NAME "armeabi-v7a" )
set( ANDROID_ARCH_NAME "arm" )
set( ANDROID_ARCH_FULLNAME "arm" )
set( ANDROID_LLVM_TRIPLE "armv7-none-linux-androideabi" )
set( CMAKE_SYSTEM_PROCESSOR "armv7-a" )
set( VFPV3 true )
elseif( ANDROID_ABI STREQUAL "armeabi-v7a with NEON" )
@@ -617,6 +687,7 @@ elseif( ANDROID_ABI STREQUAL "armeabi-v7a with NEON" )
set( ANDROID_NDK_ABI_NAME "armeabi-v7a" )
set( ANDROID_ARCH_NAME "arm" )
set( ANDROID_ARCH_FULLNAME "arm" )
set( ANDROID_LLVM_TRIPLE "armv7-none-linux-androideabi" )
set( CMAKE_SYSTEM_PROCESSOR "armv7-a" )
set( VFPV3 true )
set( NEON true )
@@ -630,12 +701,6 @@ if( CMAKE_BINARY_DIR AND EXISTS "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMa
file( APPEND "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeSystem.cmake" "SET(CMAKE_SYSTEM_PROCESSOR \"${CMAKE_SYSTEM_PROCESSOR}\")\n" )
endif()
set( ANDROID_SUPPORTED_ABIS ${ANDROID_SUPPORTED_ABIS_${ANDROID_ARCH_FULLNAME}} CACHE INTERNAL "ANDROID_ABI can be changed only to one of these ABIs. Changing to any other ABI requires to reset cmake cache." FORCE )
if( CMAKE_VERSION VERSION_GREATER "2.8" )
list( SORT ANDROID_SUPPORTED_ABIS_${ANDROID_ARCH_FULLNAME} )
set_property( CACHE ANDROID_ABI PROPERTY STRINGS ${ANDROID_SUPPORTED_ABIS_${ANDROID_ARCH_FULLNAME}} )
endif()
if( ANDROID_ARCH_NAME STREQUAL "arm" AND NOT ARMEABI_V6 )
__INIT_VARIABLE( ANDROID_FORCE_ARM_BUILD OBSOLETE_FORCE_ARM VALUES OFF )
set( ANDROID_FORCE_ARM_BUILD ${ANDROID_FORCE_ARM_BUILD} CACHE BOOL "Use 32-bit ARM instructions instead of Thumb-1" FORCE )
@@ -648,11 +713,15 @@ endif()
if( ANDROID_TOOLCHAIN_NAME )
list( FIND __availableToolchains "${ANDROID_TOOLCHAIN_NAME}" __toolchainIdx )
if( __toolchainIdx EQUAL -1 )
message( FATAL_ERROR "Previously selected toolchain \"${ANDROID_TOOLCHAIN_NAME}\" is missing. You need to remove CMakeCache.txt and rerun cmake manually to change the toolchain" )
list( SORT __availableToolchains )
string( REPLACE ";" "\n * " toolchains_list "${__availableToolchains}" )
set( toolchains_list " * ${toolchains_list}")
message( FATAL_ERROR "Specified toolchain \"${ANDROID_TOOLCHAIN_NAME}\" is missing in your NDK or broken. Please verify that your NDK is working or select another compiler toolchain.
To configure the toolchain set CMake variable ANDROID_TOOLCHAIN_NAME to one of the following values:\n${toolchains_list}\n" )
endif()
list( GET __availableToolchainArchs ${__toolchainIdx} __toolchainArch )
if( NOT __toolchainArch STREQUAL ANDROID_ARCH_FULLNAME )
message( SEND_ERROR "Previously selected toolchain \"${ANDROID_TOOLCHAIN_NAME}\" is not able to compile binaries for the \"${ANDROID_ARCH_NAME}\" platform." )
message( SEND_ERROR "Selected toolchain \"${ANDROID_TOOLCHAIN_NAME}\" is not able to compile binaries for the \"${ANDROID_ARCH_NAME}\" platform." )
endif()
else()
set( __toolchainIdx -1 )
@@ -681,8 +750,7 @@ endif()
list( GET __availableToolchains ${__toolchainIdx} ANDROID_TOOLCHAIN_NAME )
list( GET __availableToolchainMachines ${__toolchainIdx} ANDROID_TOOLCHAIN_MACHINE_NAME )
list( GET __availableToolchainCompilerVersions ${__toolchainIdx} ANDROID_COMPILER_VERSION )
set( ANDROID_TOOLCHAIN_NAME "${ANDROID_TOOLCHAIN_NAME}" CACHE INTERNAL "Name of toolchain used" FORCE )
set( ANDROID_COMPILER_VERSION "${ANDROID_COMPILER_VERSION}" CACHE INTERNAL "compiler version from selected toolchain" FORCE )
unset( __toolchainIdx )
unset( __availableToolchains )
unset( __availableToolchainMachines )
@@ -692,37 +760,35 @@ unset( __availableToolchainCompilerVersions )
# choose native API level
__INIT_VARIABLE( ANDROID_NATIVE_API_LEVEL ENV_ANDROID_NATIVE_API_LEVEL ANDROID_API_LEVEL ENV_ANDROID_API_LEVEL ANDROID_STANDALONE_TOOLCHAIN_API_LEVEL ANDROID_DEFAULT_NDK_API_LEVEL_${ANDROID_ARCH_NAME} ANDROID_DEFAULT_NDK_API_LEVEL )
string( REGEX MATCH "[0-9]+" ANDROID_NATIVE_API_LEVEL "${ANDROID_NATIVE_API_LEVEL}" )
# TODO: filter out unsupported levels
# validate
list( FIND ANDROID_SUPPORTED_NATIVE_API_LEVELS "${ANDROID_NATIVE_API_LEVEL}" __levelIdx )
if( __levelIdx EQUAL -1 )
message( SEND_ERROR "Specified Android native API level (${ANDROID_NATIVE_API_LEVEL}) is not supported by your NDK/toolchain." )
else()
if( BUILD_WITH_ANDROID_NDK )
__DETECT_NATIVE_API_LEVEL( __realApiLevel "${ANDROID_NDK}/platforms/android-${ANDROID_NATIVE_API_LEVEL}/arch-${ANDROID_ARCH_NAME}/usr/include/android/api-level.h" )
if( NOT __realApiLevel EQUAL ANDROID_NATIVE_API_LEVEL )
message( SEND_ERROR "Specified Android API level (${ANDROID_NATIVE_API_LEVEL}) does not match to the level found (${__realApiLevel}). Probably your copy of NDK is broken." )
endif()
unset( __realApiLevel )
endif()
set( ANDROID_NATIVE_API_LEVEL "${ANDROID_NATIVE_API_LEVEL}" CACHE STRING "Android API level for native code" FORCE )
if( CMAKE_VERSION VERSION_GREATER "2.8" )
list( SORT ANDROID_SUPPORTED_NATIVE_API_LEVELS )
set_property( CACHE ANDROID_NATIVE_API_LEVEL PROPERTY STRINGS ${ANDROID_SUPPORTED_NATIVE_API_LEVELS} )
endif()
endif()
unset( __levelIdx )
if( BUILD_WITH_ANDROID_NDK )
__DETECT_NATIVE_API_LEVEL( __realApiLevel "${ANDROID_NDK}/platforms/android-${ANDROID_NATIVE_API_LEVEL}/arch-${ANDROID_ARCH_NAME}/usr/include/android/api-level.h" )
if( NOT __realApiLevel EQUAL ANDROID_NATIVE_API_LEVEL )
message( SEND_ERROR "Specified Android API level (${ANDROID_NATIVE_API_LEVEL}) does not match to the level found (${__realApiLevel}). Probably your copy of NDK is broken." )
endif()
unset( __realApiLevel )
endif()
set( ANDROID_NATIVE_API_LEVEL "${ANDROID_NATIVE_API_LEVEL}" CACHE STRING "Android API level for native code" FORCE )
# remember target ABI
set( ANDROID_ABI "${ANDROID_ABI}" CACHE STRING "The target ABI for Android. If arm, then armeabi-v7a is recommended for hardware floating point." FORCE )
if( CMAKE_VERSION VERSION_GREATER "2.8" )
list( SORT ANDROID_SUPPORTED_NATIVE_API_LEVELS )
set_property( CACHE ANDROID_NATIVE_API_LEVEL PROPERTY STRINGS ${ANDROID_SUPPORTED_NATIVE_API_LEVELS} )
list( SORT ANDROID_SUPPORTED_ABIS_${ANDROID_ARCH_FULLNAME} )
set_property( CACHE ANDROID_ABI PROPERTY STRINGS ${ANDROID_SUPPORTED_ABIS_${ANDROID_ARCH_FULLNAME}} )
endif()
# setup output directories
set( LIBRARY_OUTPUT_PATH_ROOT ${CMAKE_SOURCE_DIR} CACHE PATH "root for library output, set this to change where android libs are installed to" )
set( CMAKE_INSTALL_PREFIX "${ANDROID_TOOLCHAIN_ROOT}/user" CACHE STRING "path for installing" )
if(NOT _CMAKE_IN_TRY_COMPILE)
if( EXISTS "${CMAKE_SOURCE_DIR}/jni/CMakeLists.txt" )
set( EXECUTABLE_OUTPUT_PATH "${LIBRARY_OUTPUT_PATH_ROOT}/bin/${ANDROID_NDK_ABI_NAME}" CACHE PATH "Output directory for applications" )
else()
set( EXECUTABLE_OUTPUT_PATH "${LIBRARY_OUTPUT_PATH_ROOT}/bin" CACHE PATH "Output directory for applications" )
endif()
set( LIBRARY_OUTPUT_PATH "${LIBRARY_OUTPUT_PATH_ROOT}/libs/${ANDROID_NDK_ABI_NAME}" CACHE PATH "path for android libs" )
endif()
# runtime choice (STL, rtti, exceptions)
if( NOT ANDROID_STL )
@@ -800,83 +866,11 @@ See https://android.googlesource.com/platform/development.git f907f4f9d4e56ccc80
" )
endif()
# setup paths and STL for NDK
if( BUILD_WITH_ANDROID_NDK )
set( ANDROID_TOOLCHAIN_ROOT "${ANDROID_NDK}/toolchains/${ANDROID_TOOLCHAIN_NAME}/prebuilt/${ANDROID_NDK_HOST_SYSTEM_NAME}" )
set( ANDROID_SYSROOT "${ANDROID_NDK}/platforms/android-${ANDROID_NATIVE_API_LEVEL}/arch-${ANDROID_ARCH_NAME}" )
if( ANDROID_STL STREQUAL "none" )
# do nothing
elseif( ANDROID_STL STREQUAL "system" )
set( ANDROID_RTTI OFF )
set( ANDROID_EXCEPTIONS OFF )
set( ANDROID_STL_INCLUDE_DIRS "${ANDROID_NDK}/sources/cxx-stl/system/include" )
elseif( ANDROID_STL STREQUAL "system_re" )
set( ANDROID_RTTI ON )
set( ANDROID_EXCEPTIONS ON )
set( ANDROID_STL_INCLUDE_DIRS "${ANDROID_NDK}/sources/cxx-stl/system/include" )
elseif( ANDROID_STL MATCHES "gabi" )
if( ANDROID_NDK_RELEASE STRLESS "r7" )
message( FATAL_ERROR "gabi++ is not awailable in your NDK. You have to upgrade to NDK r7 or newer to use gabi++.")
endif()
set( ANDROID_RTTI ON )
set( ANDROID_EXCEPTIONS OFF )
set( ANDROID_STL_INCLUDE_DIRS "${ANDROID_NDK}/sources/cxx-stl/gabi++/include" )
set( __libstl "${ANDROID_NDK}/sources/cxx-stl/gabi++/libs/${ANDROID_NDK_ABI_NAME}/libgabi++_static.a" )
elseif( ANDROID_STL MATCHES "stlport" )
set( ANDROID_EXCEPTIONS OFF )
if( ANDROID_NDK_RELEASE STRLESS "r7" )
set( ANDROID_RTTI OFF )
else()
set( ANDROID_RTTI ON )
endif()
set( ANDROID_STL_INCLUDE_DIRS "${ANDROID_NDK}/sources/cxx-stl/stlport/stlport" )
set( __libstl "${ANDROID_NDK}/sources/cxx-stl/stlport/libs/${ANDROID_NDK_ABI_NAME}/libstlport_static.a" )
elseif( ANDROID_STL MATCHES "gnustl" )
set( ANDROID_EXCEPTIONS ON )
set( ANDROID_RTTI ON )
if( EXISTS "${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++/${ANDROID_COMPILER_VERSION}" )
set( __libstl "${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++/${ANDROID_COMPILER_VERSION}" )
else()
set( __libstl "${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++" )
endif()
set( ANDROID_STL_INCLUDE_DIRS "${__libstl}/include" "${__libstl}/libs/${ANDROID_NDK_ABI_NAME}/include" )
if( EXISTS "${__libstl}/libs/${ANDROID_NDK_ABI_NAME}/libgnustl_static.a" )
set( __libstl "${__libstl}/libs/${ANDROID_NDK_ABI_NAME}/libgnustl_static.a" )
else()
set( __libstl "${__libstl}/libs/${ANDROID_NDK_ABI_NAME}/libstdc++.a" )
endif()
else()
message( FATAL_ERROR "Unknown runtime: ${ANDROID_STL}" )
endif()
# find libsupc++.a - rtti & exceptions
if( ANDROID_STL STREQUAL "system_re" OR ANDROID_STL MATCHES "gnustl" )
if( ANDROID_NDK_RELEASE STRGREATER "r8" ) # r8b
set( __libsupcxx "${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++/${ANDROID_COMPILER_VERSION}/libs/${ANDROID_NDK_ABI_NAME}/libsupc++.a" )
elseif( NOT ANDROID_NDK_RELEASE STRLESS "r7" AND ANDROID_NDK_RELEASE STRLESS "r8b")
set( __libsupcxx "${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++/libs/${ANDROID_NDK_ABI_NAME}/libsupc++.a" )
else( ANDROID_NDK_RELEASE STRLESS "r7" )
if( ARMEABI_V7A )
if( ANDROID_FORCE_ARM_BUILD )
set( __libsupcxx "${ANDROID_TOOLCHAIN_ROOT}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/${CMAKE_SYSTEM_PROCESSOR}/libsupc++.a" )
else()
set( __libsupcxx "${ANDROID_TOOLCHAIN_ROOT}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/${CMAKE_SYSTEM_PROCESSOR}/thumb/libsupc++.a" )
endif()
elseif( ARMEABI AND NOT ANDROID_FORCE_ARM_BUILD )
set( __libsupcxx "${ANDROID_TOOLCHAIN_ROOT}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/thumb/libsupc++.a" )
else()
set( __libsupcxx "${ANDROID_TOOLCHAIN_ROOT}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/libsupc++.a" )
endif()
endif()
if( NOT EXISTS "${__libsupcxx}")
message( ERROR "Could not find libsupc++.a for a chosen platform. Either your NDK is not supported or is broken.")
endif()
endif()
endif()
# setup paths and STL for standalone toolchain
if( BUILD_WITH_STANDALONE_TOOLCHAIN )
set( ANDROID_TOOLCHAIN_ROOT "${ANDROID_STANDALONE_TOOLCHAIN}" )
set( ANDROID_CLANG_TOOLCHAIN_ROOT "${ANDROID_STANDALONE_TOOLCHAIN}" )
set( ANDROID_SYSROOT "${ANDROID_STANDALONE_TOOLCHAIN}/sysroot" )
if( NOT ANDROID_STL STREQUAL "none" )
@@ -923,6 +917,115 @@ if( BUILD_WITH_STANDALONE_TOOLCHAIN )
endif()
endif()
# clang
if( "${ANDROID_TOOLCHAIN_NAME}" STREQUAL "standalone-clang" )
set( ANDROID_COMPILER_IS_CLANG 1 )
execute_process( COMMAND "${ANDROID_CLANG_TOOLCHAIN_ROOT}/bin/clang${TOOL_OS_SUFFIX}" --version OUTPUT_VARIABLE ANDROID_CLANG_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE )
string( REGEX MATCH "[0-9]+[.][0-9]+" ANDROID_CLANG_VERSION "${ANDROID_CLANG_VERSION}")
elseif( "${ANDROID_TOOLCHAIN_NAME}" MATCHES "-clang3[.][0-9]?$" )
string( REGEX MATCH "3[.][0-9]$" ANDROID_CLANG_VERSION "${ANDROID_TOOLCHAIN_NAME}")
string( REGEX REPLACE "-clang${ANDROID_CLANG_VERSION}$" "-4.6" ANDROID_GCC_TOOLCHAIN_NAME "${ANDROID_TOOLCHAIN_NAME}" )
if( NOT EXISTS "${ANDROID_NDK}/toolchains/llvm-${ANDROID_CLANG_VERSION}/prebuilt/${ANDROID_NDK_HOST_SYSTEM_NAME}/bin/clang${TOOL_OS_SUFFIX}" )
message( FATAL_ERROR "Could not find the " )
endif()
set( ANDROID_COMPILER_IS_CLANG 1 )
set( ANDROID_CLANG_TOOLCHAIN_ROOT "${ANDROID_NDK}/toolchains/llvm-${ANDROID_CLANG_VERSION}/prebuilt/${ANDROID_NDK_HOST_SYSTEM_NAME}" )
else()
set( ANDROID_GCC_TOOLCHAIN_NAME "${ANDROID_TOOLCHAIN_NAME}" )
unset( ANDROID_COMPILER_IS_CLANG CACHE )
endif()
string( REPLACE "." "" _clang_name "clang${ANDROID_CLANG_VERSION}" )
if( NOT EXISTS "${ANDROID_CLANG_TOOLCHAIN_ROOT}/bin/${_clang_name}${TOOL_OS_SUFFIX}" )
set( _clang_name "clang" )
endif()
# setup paths and STL for NDK
if( BUILD_WITH_ANDROID_NDK )
set( ANDROID_TOOLCHAIN_ROOT "${ANDROID_NDK}/toolchains/${ANDROID_GCC_TOOLCHAIN_NAME}/prebuilt/${ANDROID_NDK_HOST_SYSTEM_NAME}" )
set( ANDROID_SYSROOT "${ANDROID_NDK}/platforms/android-${ANDROID_NATIVE_API_LEVEL}/arch-${ANDROID_ARCH_NAME}" )
if( ANDROID_STL STREQUAL "none" )
# do nothing
elseif( ANDROID_STL STREQUAL "system" )
set( ANDROID_RTTI OFF )
set( ANDROID_EXCEPTIONS OFF )
set( ANDROID_STL_INCLUDE_DIRS "${ANDROID_NDK}/sources/cxx-stl/system/include" )
elseif( ANDROID_STL STREQUAL "system_re" )
set( ANDROID_RTTI ON )
set( ANDROID_EXCEPTIONS ON )
set( ANDROID_STL_INCLUDE_DIRS "${ANDROID_NDK}/sources/cxx-stl/system/include" )
elseif( ANDROID_STL MATCHES "gabi" )
if( ANDROID_NDK_RELEASE STRLESS "r7" )
message( FATAL_ERROR "gabi++ is not awailable in your NDK. You have to upgrade to NDK r7 or newer to use gabi++.")
endif()
set( ANDROID_RTTI ON )
set( ANDROID_EXCEPTIONS OFF )
set( ANDROID_STL_INCLUDE_DIRS "${ANDROID_NDK}/sources/cxx-stl/gabi++/include" )
set( __libstl "${ANDROID_NDK}/sources/cxx-stl/gabi++/libs/${ANDROID_NDK_ABI_NAME}/libgabi++_static.a" )
elseif( ANDROID_STL MATCHES "stlport" )
if( NOT ANDROID_NDK_RELEASE STRLESS "r8d" )
set( ANDROID_EXCEPTIONS ON )
else()
set( ANDROID_EXCEPTIONS OFF )
endif()
if( ANDROID_NDK_RELEASE STRLESS "r7" )
set( ANDROID_RTTI OFF )
else()
set( ANDROID_RTTI ON )
endif()
set( ANDROID_STL_INCLUDE_DIRS "${ANDROID_NDK}/sources/cxx-stl/stlport/stlport" )
set( __libstl "${ANDROID_NDK}/sources/cxx-stl/stlport/libs/${ANDROID_NDK_ABI_NAME}/libstlport_static.a" )
elseif( ANDROID_STL MATCHES "gnustl" )
set( ANDROID_EXCEPTIONS ON )
set( ANDROID_RTTI ON )
if( EXISTS "${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++/${ANDROID_COMPILER_VERSION}" )
if( ARMEABI_V7A AND ANDROID_COMPILER_VERSION VERSION_EQUAL "4.7" AND ANDROID_NDK_RELEASE STREQUAL "r8d" )
# gnustl binary for 4.7 compiler is buggy :(
# TODO: look for right fix
set( __libstl "${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++/4.6" )
else()
set( __libstl "${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++/${ANDROID_COMPILER_VERSION}" )
endif()
else()
set( __libstl "${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++" )
endif()
set( ANDROID_STL_INCLUDE_DIRS "${__libstl}/include" "${__libstl}/libs/${ANDROID_NDK_ABI_NAME}/include" )
if( EXISTS "${__libstl}/libs/${ANDROID_NDK_ABI_NAME}/libgnustl_static.a" )
set( __libstl "${__libstl}/libs/${ANDROID_NDK_ABI_NAME}/libgnustl_static.a" )
else()
set( __libstl "${__libstl}/libs/${ANDROID_NDK_ABI_NAME}/libstdc++.a" )
endif()
else()
message( FATAL_ERROR "Unknown runtime: ${ANDROID_STL}" )
endif()
# find libsupc++.a - rtti & exceptions
if( ANDROID_STL STREQUAL "system_re" OR ANDROID_STL MATCHES "gnustl" )
if( ANDROID_NDK_RELEASE STRGREATER "r8" ) # r8b
set( __libsupcxx "${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++/${ANDROID_COMPILER_VERSION}/libs/${ANDROID_NDK_ABI_NAME}/libsupc++.a" )
elseif( NOT ANDROID_NDK_RELEASE STRLESS "r7" AND ANDROID_NDK_RELEASE STRLESS "r8b")
set( __libsupcxx "${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++/libs/${ANDROID_NDK_ABI_NAME}/libsupc++.a" )
else( ANDROID_NDK_RELEASE STRLESS "r7" )
if( ARMEABI_V7A )
if( ANDROID_FORCE_ARM_BUILD )
set( __libsupcxx "${ANDROID_TOOLCHAIN_ROOT}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/${CMAKE_SYSTEM_PROCESSOR}/libsupc++.a" )
else()
set( __libsupcxx "${ANDROID_TOOLCHAIN_ROOT}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/${CMAKE_SYSTEM_PROCESSOR}/thumb/libsupc++.a" )
endif()
elseif( ARMEABI AND NOT ANDROID_FORCE_ARM_BUILD )
set( __libsupcxx "${ANDROID_TOOLCHAIN_ROOT}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/thumb/libsupc++.a" )
else()
set( __libsupcxx "${ANDROID_TOOLCHAIN_ROOT}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/libsupc++.a" )
endif()
endif()
if( NOT EXISTS "${__libsupcxx}")
message( ERROR "Could not find libsupc++.a for a chosen platform. Either your NDK is not supported or is broken.")
endif()
endif()
endif()
# case of shared STL linkage
if( ANDROID_STL MATCHES "shared" AND DEFINED __libstl )
string( REPLACE "_static.a" "_shared.so" __libstl "${__libstl}" )
@@ -937,25 +1040,40 @@ if( ANDROID_STL MATCHES "shared" AND DEFINED __libstl )
endif()
endif()
# ccache support
__INIT_VARIABLE( _ndk_ccache NDK_CCACHE ENV_NDK_CCACHE )
if( _ndk_ccache )
if( DEFINED NDK_CCACHE AND NOT EXISTS NDK_CCACHE )
unset( NDK_CCACHE CACHE )
endif()
find_program( NDK_CCACHE "${_ndk_ccache}" DOC "The path to ccache binary")
else()
unset( NDK_CCACHE CACHE )
endif()
unset( _ndk_ccache )
# setup the cross-compiler
if( NOT CMAKE_C_COMPILER )
if( NDK_CCACHE )
set( CMAKE_C_COMPILER "${NDK_CCACHE}" CACHE PATH "ccache as C compiler" )
set( CMAKE_CXX_COMPILER "${NDK_CCACHE}" CACHE PATH "ccache as C++ compiler" )
set( CMAKE_C_COMPILER_ARG1 "${ANDROID_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_MACHINE_NAME}-gcc${TOOL_OS_SUFFIX}" CACHE PATH "gcc")
set( CMAKE_CXX_COMPILER_ARG1 "${ANDROID_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_MACHINE_NAME}-g++${TOOL_OS_SUFFIX}" CACHE PATH "g++")
if( ANDROID_COMPILER_IS_CLANG )
set( CMAKE_C_COMPILER_ARG1 "${ANDROID_CLANG_TOOLCHAIN_ROOT}/bin/${_clang_name}${TOOL_OS_SUFFIX}" CACHE PATH "C compiler")
set( CMAKE_CXX_COMPILER_ARG1 "${ANDROID_CLANG_TOOLCHAIN_ROOT}/bin/${_clang_name}++${TOOL_OS_SUFFIX}" CACHE PATH "C++ compiler")
else()
set( CMAKE_C_COMPILER_ARG1 "${ANDROID_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_MACHINE_NAME}-gcc${TOOL_OS_SUFFIX}" CACHE PATH "C compiler")
set( CMAKE_CXX_COMPILER_ARG1 "${ANDROID_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_MACHINE_NAME}-g++${TOOL_OS_SUFFIX}" CACHE PATH "C++ compiler")
endif()
else()
set( CMAKE_C_COMPILER "${ANDROID_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_MACHINE_NAME}-gcc${TOOL_OS_SUFFIX}" CACHE PATH "gcc" )
set( CMAKE_CXX_COMPILER "${ANDROID_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_MACHINE_NAME}-g++${TOOL_OS_SUFFIX}" CACHE PATH "g++" )
if( ANDROID_COMPILER_IS_CLANG )
set( CMAKE_C_COMPILER "${ANDROID_CLANG_TOOLCHAIN_ROOT}/bin/${_clang_name}${TOOL_OS_SUFFIX}" CACHE PATH "C compiler")
set( CMAKE_CXX_COMPILER "${ANDROID_CLANG_TOOLCHAIN_ROOT}/bin/${_clang_name}++${TOOL_OS_SUFFIX}" CACHE PATH "C++ compiler")
else()
set( CMAKE_C_COMPILER "${ANDROID_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_MACHINE_NAME}-gcc${TOOL_OS_SUFFIX}" CACHE PATH "C compiler" )
set( CMAKE_CXX_COMPILER "${ANDROID_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_MACHINE_NAME}-g++${TOOL_OS_SUFFIX}" CACHE PATH "C++ compiler" )
endif()
endif()
set( CMAKE_ASM_COMPILER "${ANDROID_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_MACHINE_NAME}-gcc${TOOL_OS_SUFFIX}" CACHE PATH "assembler" )
set( CMAKE_STRIP "${ANDROID_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_MACHINE_NAME}-strip${TOOL_OS_SUFFIX}" CACHE PATH "strip" )
@@ -982,15 +1100,22 @@ endif()
# Force set compilers because standard identification works badly for us
include( CMakeForceCompiler )
CMAKE_FORCE_C_COMPILER( "${CMAKE_C_COMPILER}" GNU )
if( ANDROID_COMPILER_IS_CLANG )
set( CMAKE_C_COMPILER_ID Clang)
endif()
set( CMAKE_C_PLATFORM_ID Linux )
set( CMAKE_C_SIZEOF_DATA_PTR 4 )
set( CMAKE_C_HAS_ISYSROOT 1 )
set( CMAKE_C_COMPILER_ABI ELF )
CMAKE_FORCE_CXX_COMPILER( "${CMAKE_CXX_COMPILER}" GNU )
if( ANDROID_COMPILER_IS_CLANG )
set( CMAKE_CXX_COMPILER_ID Clang)
endif()
set( CMAKE_CXX_PLATFORM_ID Linux )
set( CMAKE_CXX_SIZEOF_DATA_PTR 4 )
set( CMAKE_CXX_HAS_ISYSROOT 1 )
set( CMAKE_CXX_COMPILER_ABI ELF )
set( CMAKE_CXX_SOURCE_FILE_EXTENSIONS cc cp cxx cpp CPP c++ C )
# force ASM compiler (required for CMake < 2.8.5)
set( CMAKE_ASM_COMPILER_ID_RUN TRUE )
set( CMAKE_ASM_COMPILER_ID GNU )
@@ -1056,10 +1181,10 @@ if( ARMEABI_V7A )
elseif( VFPV3 )
set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -mfpu=vfpv3" )
else()
set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -mfpu=vfp" )
set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -mfpu=vfpv3-d16" )
endif()
elseif( ARMEABI_V6 )
set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -march=armv6 -mfloat-abi=softfp -mfpu=vfp" )
set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -march=armv6 -mfloat-abi=softfp -mfpu=vfp" ) # vfp == vfpv2
elseif( ARMEABI )
set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -march=armv5te -mtune=xscale -msoft-float" )
endif()
@@ -1148,17 +1273,25 @@ if( ANDROID_FUNCTION_LEVEL_LINKING )
set( ANDROID_LINKER_FLAGS "${ANDROID_LINKER_FLAGS} -Wl,--gc-sections" )
endif()
if( ANDROID_GOLD_LINKER AND CMAKE_HOST_UNIX AND (ARMEABI OR ARMEABI_V7A OR X86) AND ANDROID_COMPILER_VERSION VERSION_EQUAL "4.6" )
set( ANDROID_LINKER_FLAGS "${ANDROID_LINKER_FLAGS} -fuse-ld=gold" )
elseif( ANDROID_NDK_RELEASE STREQUAL "r8b" AND ARMEABI AND ANDROID_COMPILER_VERSION VERSION_EQUAL "4.6" AND NOT _CMAKE_IN_TRY_COMPILE )
message( WARNING "The default bfd linker from arm GCC 4.6 toolchain can fail with 'unresolvable R_ARM_THM_CALL relocation' error message. See https://code.google.com/p/android/issues/detail?id=35342
if( ANDROID_COMPILER_VERSION VERSION_EQUAL "4.6" )
if( ANDROID_GOLD_LINKER AND (CMAKE_HOST_UNIX OR ANDROID_NDK_RELEASE STRGREATER "r8b") AND (ARMEABI OR ARMEABI_V7A OR X86) )
set( ANDROID_LINKER_FLAGS "${ANDROID_LINKER_FLAGS} -fuse-ld=gold" )
elseif( ANDROID_NDK_RELEASE STRGREATER "r8b")
set( ANDROID_LINKER_FLAGS "${ANDROID_LINKER_FLAGS} -fuse-ld=bfd" )
elseif( ANDROID_NDK_RELEASE STREQUAL "r8b" AND ARMEABI AND NOT _CMAKE_IN_TRY_COMPILE )
message( WARNING "The default bfd linker from arm GCC 4.6 toolchain can fail with 'unresolvable R_ARM_THM_CALL relocation' error message. See https://code.google.com/p/android/issues/detail?id=35342
On Linux and OS X host platform you can workaround this problem using gold linker (default).
Rerun cmake with -DANDROID_GOLD_LINKER=ON option.
Rerun cmake with -DANDROID_GOLD_LINKER=ON option in case of problems.
" )
endif()
endif()
endif() # version 4.6
if( ANDROID_NOEXECSTACK )
set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -Wa,--noexecstack" )
if( ANDROID_COMPILER_IS_CLANG )
set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -Xclang -mnoexecstack" )
else()
set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -Wa,--noexecstack" )
endif()
set( ANDROID_LINKER_FLAGS "${ANDROID_LINKER_FLAGS} -Wl,-z,noexecstack" )
endif()
@@ -1166,6 +1299,22 @@ if( ANDROID_RELRO )
set( ANDROID_LINKER_FLAGS "${ANDROID_LINKER_FLAGS} -Wl,-z,relro -Wl,-z,now" )
endif()
if( ANDROID_COMPILER_IS_CLANG )
set( ANDROID_CXX_FLAGS "-Qunused-arguments ${ANDROID_CXX_FLAGS}" )
if( ARMEABI_V7A AND NOT ANDROID_FORCE_ARM_BUILD )
set( ANDROID_CXX_FLAGS_RELEASE "-target thumbv7-none-linux-androideabi ${ANDROID_CXX_FLAGS_RELEASE}" )
set( ANDROID_CXX_FLAGS_DEBUG "-target ${ANDROID_LLVM_TRIPLE} ${ANDROID_CXX_FLAGS_DEBUG}" )
else()
set( ANDROID_CXX_FLAGS "-target ${ANDROID_LLVM_TRIPLE} ${ANDROID_CXX_FLAGS}" )
endif()
if( BUILD_WITH_ANDROID_NDK )
if(ANDROID_ARCH_NAME STREQUAL "arm" )
set( ANDROID_CXX_FLAGS "-isystem ${ANDROID_CLANG_TOOLCHAIN_ROOT}/lib/clang/${ANDROID_CLANG_VERSION}/include ${ANDROID_CXX_FLAGS}" )
endif()
set( ANDROID_CXX_FLAGS "-gcc-toolchain ${ANDROID_TOOLCHAIN_ROOT} ${ANDROID_CXX_FLAGS}" )
endif()
endif()
# cache flags
set( CMAKE_CXX_FLAGS "" CACHE STRING "c++ flags" )
set( CMAKE_C_FLAGS "" CACHE STRING "c flags" )
@@ -1189,9 +1338,9 @@ set( CMAKE_MODULE_LINKER_FLAGS "${ANDROID_LINKER_FLAGS} ${CMAKE_MODULE_LINKER_FL
set( CMAKE_EXE_LINKER_FLAGS "${ANDROID_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS}" )
if( MIPS AND BUILD_WITH_ANDROID_NDK AND ANDROID_NDK_RELEASE STREQUAL "r8" )
set( CMAKE_SHARED_LINKER_FLAGS "-Wl,-T,${ANDROID_NDK}/toolchains/${ANDROID_TOOLCHAIN_NAME}/mipself.xsc ${CMAKE_SHARED_LINKER_FLAGS}" )
set( CMAKE_MODULE_LINKER_FLAGS "-Wl,-T,${ANDROID_NDK}/toolchains/${ANDROID_TOOLCHAIN_NAME}/mipself.xsc ${CMAKE_MODULE_LINKER_FLAGS}" )
set( CMAKE_EXE_LINKER_FLAGS "-Wl,-T,${ANDROID_NDK}/toolchains/${ANDROID_TOOLCHAIN_NAME}/mipself.x ${CMAKE_EXE_LINKER_FLAGS}" )
set( CMAKE_SHARED_LINKER_FLAGS "-Wl,-T,${ANDROID_NDK}/toolchains/${ANDROID_GCC_TOOLCHAIN_NAME}/mipself.xsc ${CMAKE_SHARED_LINKER_FLAGS}" )
set( CMAKE_MODULE_LINKER_FLAGS "-Wl,-T,${ANDROID_NDK}/toolchains/${ANDROID_GCC_TOOLCHAIN_NAME}/mipself.xsc ${CMAKE_MODULE_LINKER_FLAGS}" )
set( CMAKE_EXE_LINKER_FLAGS "-Wl,-T,${ANDROID_NDK}/toolchains/${ANDROID_GCC_TOOLCHAIN_NAME}/mipself.x ${CMAKE_EXE_LINKER_FLAGS}" )
endif()
# configure rtti
@@ -1218,6 +1367,19 @@ endif()
include_directories( SYSTEM "${ANDROID_SYSROOT}/usr/include" ${ANDROID_STL_INCLUDE_DIRS} )
link_directories( "${CMAKE_INSTALL_PREFIX}/libs/${ANDROID_NDK_ABI_NAME}" )
# setup output directories
set( LIBRARY_OUTPUT_PATH_ROOT ${CMAKE_SOURCE_DIR} CACHE PATH "root for library output, set this to change where android libs are installed to" )
set( CMAKE_INSTALL_PREFIX "${ANDROID_TOOLCHAIN_ROOT}/user" CACHE STRING "path for installing" )
if(NOT _CMAKE_IN_TRY_COMPILE)
if( EXISTS "${CMAKE_SOURCE_DIR}/jni/CMakeLists.txt" )
set( EXECUTABLE_OUTPUT_PATH "${LIBRARY_OUTPUT_PATH_ROOT}/bin/${ANDROID_NDK_ABI_NAME}" CACHE PATH "Output directory for applications" )
else()
set( EXECUTABLE_OUTPUT_PATH "${LIBRARY_OUTPUT_PATH_ROOT}/bin" CACHE PATH "Output directory for applications" )
endif()
set( LIBRARY_OUTPUT_PATH "${LIBRARY_OUTPUT_PATH_ROOT}/libs/${ANDROID_NDK_ABI_NAME}" CACHE PATH "path for android libs" )
endif()
# set these global flags for cmake client scripts to change behavior
set( ANDROID True )
set( BUILD_ANDROID True )
@@ -1335,7 +1497,7 @@ endif()
# Variables controlling behavior or set by cmake toolchain:
# ANDROID_ABI : "armeabi-v7a" (default), "armeabi", "armeabi-v7a with NEON", "armeabi-v7a with VFPV3", "armeabi-v6 with VFP", "x86", "mips"
# ANDROID_NATIVE_API_LEVEL : 3,4,5,8,9,14 (depends on NDK version)
# ANDROID_SET_OBSOLETE_VARIABLES : ON/OFF
# ANDROID_STL : gnustl_static/gnustl_shared/stlport_static/stlport_shared/gabi++_static/gabi++_shared/system_re/system/none
# ANDROID_FORBID_SYGWIN : ON/OFF
# ANDROID_NO_UNDEFINED : ON/OFF
# ANDROID_SO_UNDEFINED : OFF/ON (default depends on NDK version)
@@ -1343,16 +1505,15 @@ endif()
# ANDROID_GOLD_LINKER : ON/OFF
# ANDROID_NOEXECSTACK : ON/OFF
# ANDROID_RELRO : ON/OFF
# Variables that takes effect only at first run:
# ANDROID_FORCE_ARM_BUILD : ON/OFF
# ANDROID_STL : gnustl_static/gnustl_shared/stlport_static/stlport_shared/gabi++_static/gabi++_shared/system_re/system/none
# ANDROID_STL_FORCE_FEATURES : ON/OFF
# LIBRARY_OUTPUT_PATH_ROOT : <any valid path>
# NDK_CCACHE : <path to your ccache executable>
# ANDROID_SET_OBSOLETE_VARIABLES : ON/OFF
# Can be set only at the first run:
# ANDROID_NDK
# ANDROID_STANDALONE_TOOLCHAIN
# ANDROID_TOOLCHAIN_NAME : "arm-linux-androideabi-4.4.3" or "arm-linux-androideabi-4.6" or "mipsel-linux-android-4.4.3" or "mipsel-linux-android-4.6" or "x86-4.4.3" or "x86-4.6"
# ANDROID_TOOLCHAIN_NAME : the NDK name of compiler toolchain
# LIBRARY_OUTPUT_PATH_ROOT : <any valid path>
# NDK_CCACHE : <path to your ccache executable>
# Obsolete:
# ANDROID_API_LEVEL : superseded by ANDROID_NATIVE_API_LEVEL
# ARM_TARGET : superseded by ANDROID_ABI
@@ -1375,10 +1536,11 @@ endif()
# BUILD_WITH_STANDALONE_TOOLCHAIN : TRUE if standalone toolchain is used
# ANDROID_NDK_HOST_SYSTEM_NAME : "windows", "linux-x86" or "darwin-x86" depending on host platform
# ANDROID_NDK_ABI_NAME : "armeabi", "armeabi-v7a", "x86" or "mips" depending on ANDROID_ABI
# ANDROID_NDK_RELEASE : one of r5, r5b, r5c, r6, r6b, r7, r7b, r7c, r8, r8b; set only for NDK
# ANDROID_NDK_RELEASE : one of r5, r5b, r5c, r6, r6b, r7, r7b, r7c, r8, r8b, r8c, r8d; set only for NDK
# ANDROID_ARCH_NAME : "arm" or "x86" or "mips" depending on ANDROID_ABI
# ANDROID_SYSROOT : path to the compiler sysroot
# TOOL_OS_SUFFIX : "" or ".exe" depending on host platform
# ANDROID_COMPILER_IS_CLANG : TRUE if clang compiler is used
# Obsolete:
# ARMEABI_NDK_NAME : superseded by ANDROID_NDK_ABI_NAME
#
@@ -1388,10 +1550,13 @@ endif()
# ANDROID_SUPPORTED_ABIS : list of currently allowed values for ANDROID_ABI
# ANDROID_TOOLCHAIN_MACHINE_NAME : "arm-linux-androideabi", "arm-eabi" or "i686-android-linux"
# ANDROID_TOOLCHAIN_ROOT : path to the top level of toolchain (standalone or placed inside NDK)
# ANDROID_CLANG_TOOLCHAIN_ROOT : path to clang tools
# ANDROID_SUPPORTED_NATIVE_API_LEVELS : list of native API levels found inside NDK
# ANDROID_STL_INCLUDE_DIRS : stl include paths
# ANDROID_RTTI : if rtti is enabled by the runtime
# ANDROID_EXCEPTIONS : if exceptions are enabled by the runtime
# ANDROID_GCC_TOOLCHAIN_NAME : read-only, differs from ANDROID_TOOLCHAIN_NAME only if clang is used
# ANDROID_CLANG_VERSION : version of clang compiler if clang is used
#
# Defaults:
# ANDROID_DEFAULT_NDK_API_LEVEL
+1 -1
Ver Arquivo
@@ -3,4 +3,4 @@ Java API
********
`Java API reference external link (JavaDoc) <http://docs.opencv.org/java/>`_
Java API reference (JavaDoc): external `link <http://docs.opencv.org/java/>`_.
+2 -2
Ver Arquivo
@@ -35,5 +35,5 @@ set_target_properties(${the_module} PROPERTIES
INSTALL_NAME_DIR lib
)
get_filename_component(lib_name "opencv_info" NAME)
install(FILES "${LIBRARY_OUTPUT_PATH}/${lib_name}" DESTINATION ${OPENCV_LIB_INSTALL_PATH} COMPONENT main)
get_filename_component(lib_name "libopencv_info.so" NAME)
install(FILES "${LIBRARY_OUTPUT_PATH}/${lib_name}" DESTINATION ${OPENCV_LIB_INSTALL_PATH} COMPONENT main)
+2 -2
Ver Arquivo
@@ -6,8 +6,8 @@ const char* GetRevision(void);
const char* GetLibraryList(void);
JNIEXPORT jstring JNICALL Java_org_opencv_android_StaticHelper_getLibraryList(JNIEnv *, jclass);
#define PACKAGE_NAME "org.opencv.lib_v" CVAUX_STR(CV_MAJOR_VERSION) CVAUX_STR(CV_MINOR_VERSION) "_" ANDROID_PACKAGE_PLATFORM
#define PACKAGE_REVISION CVAUX_STR(CV_SUBMINOR_VERSION) CVAUX_STR(ANDROID_PACKAGE_RELEASE)
#define PACKAGE_NAME "org.opencv.lib_v" CVAUX_STR(CV_VERSION_EPOCH) CVAUX_STR(CV_VERSION_MAJOR) "_" ANDROID_PACKAGE_PLATFORM
#define PACKAGE_REVISION CVAUX_STR(CV_VERSION_MINOR) "." CVAUX_STR(CV_VERSION_REVISION) "." CVAUX_STR(ANDROID_PACKAGE_RELEASE)
const char* GetPackageName(void)
{
+2 -2
Ver Arquivo
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.opencv.lib_v@OPENCV_VERSION_MAJOR@@OPENCV_VERSION_MINOR@_@ANDROID_PACKAGE_PLATFORM@"
android:versionCode="@OPENCV_VERSION_PATCH@@ANDROID_PACKAGE_RELEASE@"
android:versionName="@OPENCV_VERSION_PATCH@.@ANDROID_PACKAGE_RELEASE@" >
android:versionCode="@OPENCV_VERSION_PATCH@@OPENCV_VERSION_TWEAK@@ANDROID_PACKAGE_RELEASE@"
android:versionName="@OPENCV_VERSION_PATCH@.@OPENCV_VERSION_TWEAK@.@ANDROID_PACKAGE_RELEASE@" >
<uses-sdk android:minSdkVersion="@ANDROID_SDK_VERSION@" />
<uses-feature android:name="android.hardware.touchscreen" android:required="false"/>
+2 -2
Ver Arquivo
@@ -56,7 +56,7 @@ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/${ANDROID_MANIFEST_FILE}" "${PACKAGE
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/res/values/strings.xml" "${PACKAGE_DIR}/res/values/strings.xml" @ONLY)
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/res/drawable/icon.png" "${PACKAGE_DIR}/res/drawable/icon.png" COPYONLY)
set(target_name "OpenCV_${OPENCV_VERSION_MAJOR}.${OPENCV_VERSION_MINOR}.${OPENCV_VERSION_PATCH}_binary_pack_${ANDROID_PACKAGE_PLATFORM}")
set(target_name "OpenCV_${OPENCV_VERSION}_binary_pack_${ANDROID_PACKAGE_PLATFORM}")
get_target_property(opencv_java_location opencv_java LOCATION)
set(android_proj_target_files ${ANDROID_PROJECT_FILES})
@@ -86,7 +86,7 @@ add_custom_command(
COMMAND ${CMAKE_COMMAND} -E touch "${APK_NAME}"
WORKING_DIRECTORY "${PACKAGE_DIR}"
MAIN_DEPENDENCY "${PACKAGE_DIR}/${ANDROID_MANIFEST_FILE}"
DEPENDS "${OpenCV_BINARY_DIR}/bin/.classes.jar.dephelper" "${PACKAGE_DIR}/res/values/strings.xml" "${PACKAGE_DIR}/res/drawable/icon.png" ${camera_wrappers} opencv_java
DEPENDS "${OpenCV_BINARY_DIR}/bin/classes.jar.dephelper" "${PACKAGE_DIR}/res/values/strings.xml" "${PACKAGE_DIR}/res/drawable/icon.png" ${camera_wrappers} opencv_java
)
install(FILES "${APK_NAME}" DESTINATION "apk/" COMPONENT main)
+199 -101
Ver Arquivo
@@ -1,130 +1,228 @@
#!/usr/bin/python
from optparse import OptionParser
from shutil import rmtree
import os
import sys
ANDROID_SDK_PATH = "/opt/android-sdk-linux"
ANDROID_NDK_PATH = None
INSTALL_DIRECTORY = None
CLASS_PATH = None
TMP_HEADER_PATH="tmp_include"
HEADER_EXTS = set(['h', 'hpp'])
SYS_INCLUDES = ["platforms/android-8/arch-arm/usr/include", "sources/cxx-stl/gnu-libstdc++/include", "sources/cxx-stl/gnu-libstdc++/libs/armeabi/include"]
PROJECT_NAME = "OpenCV-branch"
TARGET_LIBS = ["libopencv_java.so"]
ARCH = "armeabi"
GCC_OPTIONS = "-fpermissive"
EXCLUDE_HEADERS = set(["hdf5.h", "eigen.hpp", "cxeigen.hpp"]);
architecture = 'armeabi'
excludedHeaders = set(['hdf5.h', 'cap_ios.h',
'eigen.hpp', 'cxeigen.hpp' #TOREMOVE
])
systemIncludes = ['sources/cxx-stl/gnu-libstdc++/4.6/include', \
'/opt/android-ndk-r8c/platforms/android-8/arch-arm', # TODO: check if this one could be passed as command line arg
'sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/include']
targetLibs = ['libopencv_java.so']
preamble = ['Eigen/Core']
# TODO: get gcc_options automatically
gcc_options = ['-fexceptions', '-frtti', '-Wno-psabi', '--sysroot=/opt/android-ndk-r8c/platforms/android-8/arch-arm', '-fpic', '-D__ARM_ARCH_5__', '-D__ARM_ARCH_5T__', '-D__ARM_ARCH_5E__', '-D__ARM_ARCH_5TE__', '-fsigned-char', '-march=armv5te', '-mtune=xscale', '-msoft-float', '-fdata-sections', '-ffunction-sections', '-Wa,--noexecstack ', '-W', '-Wall', '-Werror=return-type', '-Werror=address', '-Werror=sequence-point', '-Wformat', '-Werror=format-security', '-Wmissing-declarations', '-Wundef', '-Winit-self', '-Wpointer-arith', '-Wshadow', '-Wsign-promo', '-Wno-narrowing', '-fdiagnostics-show-option', '-fomit-frame-pointer', '-mthumb', '-fomit-frame-pointer', '-O3', '-DNDEBUG ', '-DNDEBUG']
excludedOptionsPrefix = '-W'
def FindClasses(root, prefix):
classes = []
if ("" != prefix):
prefix = prefix + "."
for path in os.listdir(root):
currentPath = os.path.join(root, path)
if (os.path.isdir(currentPath)):
classes += FindClasses(currentPath, prefix + path)
else:
name = str.split(path, ".")[0]
ext = str.split(path, ".")[1]
if (ext == "class"):
#print("class: %s" % (prefix + name))
classes.append(prefix+name)
return classes
def FindHeaders(root):
def GetHeaderFiles(root):
headers = []
for path in os.listdir(root):
currentPath = os.path.join(root, path)
if (os.path.isdir(currentPath)):
headers += FindHeaders(currentPath)
else:
ext = str.split(path, ".")[-1]
#print("%s: \"%s\"" % (currentPath, ext))
if (ext in HEADER_EXTS):
#print("Added as header file")
if (path not in EXCLUDE_HEADERS):
headers.append(currentPath)
if not os.path.isdir(os.path.join(root, path)) \
and os.path.splitext(path)[1] in ['.h', '.hpp'] \
and not path in excludedHeaders:
headers.append(os.path.join(root, path))
return sorted(headers)
def GetClasses(root, prefix):
classes = []
if ('' != prefix):
prefix = prefix + '.'
for path in os.listdir(root):
currentPath = os.path.join(root, path)
if (os.path.isdir(currentPath)):
classes += GetClasses(currentPath, prefix + path)
else:
name = str.split(path, '.')[0]
ext = str.split(path, '.')[1]
if (ext == 'class'):
classes.append(prefix + name)
return classes
def GetJavaHHeaders():
print('\nGenerating JNI headers for Java API ...')
javahHeaders = os.path.join(managerDir, 'javah_generated_headers')
if os.path.exists(javahHeaders):
rmtree(javahHeaders)
os.makedirs(os.path.join(os.getcwd(), javahHeaders))
AndroidJavaDeps = os.path.join(SDK_path, 'platforms/android-11/android.jar')
classPath = os.path.join(managerDir, 'sdk/java/bin/classes')
if not os.path.exists(classPath):
print('Error: no Java classes found in \'%s\'' % classPath)
quit()
allJavaClasses = GetClasses(classPath, '')
if not allJavaClasses:
print('Error: no Java classes found')
quit()
for currentClass in allJavaClasses:
os.system('javah -d %s -classpath %s:%s %s' % (javahHeaders, classPath, \
AndroidJavaDeps, currentClass))
print('\nBuilding JNI headers list ...')
jniHeaders = GetHeaderFiles(javahHeaders)
return jniHeaders
def GetImmediateSubdirs(dir):
return [name for name in os.listdir(dir)
if os.path.isdir(os.path.join(dir, name))]
def GetOpenCVModules():
makefile = open(os.path.join(managerDir, 'sdk/native/jni/OpenCV.mk'), 'r')
makefileStr = makefile.read()
left = makefileStr.find('OPENCV_MODULES:=') + len('OPENCV_MODULES:=')
right = makefileStr[left:].find('\n')
modules = makefileStr[left:left+right].split()
modules = filter(lambda x: x != 'ts' and x != 'androidcamera', modules)
return modules
def FindHeaders():
headers = []
print('\nBuilding Native OpenCV header list ...')
cppHeadersFolder = os.path.join(managerDir, 'sdk/native/jni/include/opencv2')
modulesFolders = GetImmediateSubdirs(cppHeadersFolder)
modules = GetOpenCVModules()
cppHeaders = []
for m in modules:
for f in modulesFolders:
moduleHeaders = []
if f == m:
moduleHeaders += GetHeaderFiles(os.path.join(cppHeadersFolder, f))
if m == 'flann':
flann = os.path.join(cppHeadersFolder, f, 'flann.hpp')
moduleHeaders.remove(flann)
moduleHeaders.insert(0, flann)
cppHeaders += moduleHeaders
cppHeaders += GetHeaderFiles(cppHeadersFolder)
headers += cppHeaders
cHeaders = GetHeaderFiles(os.path.join(managerDir, \
'sdk/native/jni/include/opencv'))
headers += cHeaders
headers += GetJavaHHeaders()
return headers
if (len(sys.argv) < 3):
print("Error: Invalid command line arguments")
exit(-1)
INSTALL_DIRECTORY = sys.argv[1]
PROJECT_NAME = sys.argv[2]
CLASS_PATH = os.path.join(INSTALL_DIRECTORY, "sdk/java/bin/classes")
if (not os.path.exists(CLASS_PATH)):
print("Error: no java classes found in \"%s\"" % CLASS_PATH)
exit(-2)
def FindLibraries():
libraries = []
for lib in targetLibs:
libraries.append(os.path.join(managerDir, 'sdk/native/libs', architecture, lib))
return libraries
if (os.environ.has_key("NDK_ROOT")):
ANDROID_NDK_PATH = os.environ["NDK_ROOT"];
print("Using Android NDK from NDK_ROOT (\"%s\")" % ANDROID_NDK_PATH)
if (not ANDROID_NDK_PATH):
pipe = os.popen("which ndk-build")
tmp = str.strip(pipe.readline(), "\n")
while(not tmp):
tmp = str.strip(pipe.readline(), "\n")
pipe.close()
ANDROID_NDK_PATH = os.path.split(tmp)[0]
print("Using Android NDK from PATH (\"%s\")" % ANDROID_NDK_PATH)
print("Using Android SDK from \"%s\"" % ANDROID_SDK_PATH)
def FindIncludes():
includes = [os.path.join(managerDir, 'sdk', 'native', 'jni', 'include'),
os.path.join(managerDir, 'sdk', 'native', 'jni', 'include', 'opencv'),
os.path.join(managerDir, 'sdk', 'native', 'jni', 'include', 'opencv2')]
outputFileName = PROJECT_NAME + ".xml"
try:
outputFile = open(outputFileName, "w")
except:
print("Error: Cannot open output file \"%s\" for writing" % outputFileName)
for inc in systemIncludes:
includes.append(os.path.join(NDK_path, inc))
allJavaClasses = FindClasses(CLASS_PATH, "")
if (not allJavaClasses):
print("Error: No Java classes found :(")
exit(-1)
return includes
if (not os.path.exists(TMP_HEADER_PATH)):
os.makedirs(os.path.join(os.getcwd(), TMP_HEADER_PATH))
print("Generating JNI headers for Java API ...")
AndroidJavaDeps = os.path.join(ANDROID_SDK_PATH, "platforms/android-11/android.jar")
for currentClass in allJavaClasses:
os.system("javah -d %s -classpath %s:%s %s" % (TMP_HEADER_PATH, CLASS_PATH, AndroidJavaDeps, currentClass))
print("Building JNI headers list ...")
jniHeaders = FindHeaders(TMP_HEADER_PATH)
#print(jniHeaders)
def FilterGCCOptions():
gcc = filter(lambda x: not x.startswith(excludedOptionsPrefix), gcc_options)
return sorted(gcc)
print("Building Native OpenCV header list ...")
cHeaders = FindHeaders(os.path.join(INSTALL_DIRECTORY, "sdk/native/jni/include/opencv"))
cppHeaders = FindHeaders(os.path.join(INSTALL_DIRECTORY, "sdk/native/jni/include/opencv2"))
#print(cHeaders)
#print(cppHeaders)
print("Writing config file ...")
outputFile.write("<descriptor>\n\n<version>\n\t%s\n</version>\n\n<headers>\n" % PROJECT_NAME)
outputFile.write("\t" + "\n\t".join(cHeaders))
outputFile.write("\n\t" + "\n\t".join(cppHeaders))
outputFile.write("\n\t" + "\n\t".join(jniHeaders))
outputFile.write("\n</headers>\n\n")
includes = [os.path.join(INSTALL_DIRECTORY, "sdk", "native", "jni", "include"),
os.path.join(INSTALL_DIRECTORY, "sdk", "native", "jni", "include", "opencv"),
os.path.join(INSTALL_DIRECTORY, "sdk", "native", "jni", "include", "opencv2")]
def WriteXml(version, headers, includes, libraries):
xmlName = version + '.xml'
for inc in SYS_INCLUDES:
includes.append(os.path.join(ANDROID_NDK_PATH, inc))
print '\noutput file: ' + xmlName
try:
xml = open(xmlName, 'w')
except:
print 'Error: Cannot open output file "%s" for writing' % xmlName
quit()
outputFile.write("<include_paths>\n\t%s\n</include_paths>\n\n" % "\n\t".join(includes))
xml.write('<descriptor>')
libraries = []
for lib in TARGET_LIBS:
libraries.append(os.path.join(INSTALL_DIRECTORY, "sdk/native/libs", ARCH, lib))
xml.write('\n\n<version>')
xml.write('\n\t%s' % version)
xml.write('\n</version>')
outputFile.write("<libs>\n\t%s\n</libs>\n\n" % "\n\t".join(libraries))
outputFile.write("<gcc_options>\n\t%s\n</gcc_options>\n\n</descriptor>" % GCC_OPTIONS)
xml.write('\n\n<headers>')
xml.write('\n\t%s' % '\n\t'.join(headers))
xml.write('\n</headers>')
print("done!")
xml.write('\n\n<include_paths>')
xml.write('\n\t%s' % '\n\t'.join(includes))
xml.write('\n</include_paths>')
# TODO: uncomment when Eigen problem is solved
# xml.write('\n\n<include_preamble>')
# xml.write('\n\t%s' % '\n\t'.join(preamble))
# xml.write('\n</include_preamble>')
xml.write('\n\n<libs>')
xml.write('\n\t%s' % '\n\t'.join(libraries))
xml.write('\n</libs>')
xml.write('\n\n<gcc_options>')
xml.write('\n\t%s' % '\n\t'.join(gcc_options))
xml.write('\n</gcc_options>')
xml.write('\n\n</descriptor>')
if __name__ == '__main__':
usage = '%prog <OpenCV_Manager install directory> <OpenCV_Manager version>'
parser = OptionParser(usage = usage)
args = parser.parse_args()
if 2 != len(args):
parser.print_help()
quit()
managerDir = args[1][0]
version = args[1][1]
NDK_path = '/opt/android-ndk-r8c'
print '\nUsing Android NDK from "%s"' % NDK_path
SDK_path = '~/NVPACK/android-sdk-linux'
print '\nUsing Android SDK from "%s"' % SDK_path
headers = FindHeaders()
includes = FindIncludes()
libraries = FindLibraries()
gcc_options = FilterGCCOptions()
WriteXml(version, headers, includes, libraries)
+5
Ver Arquivo
@@ -16,3 +16,8 @@ native_camera_r4.0.0; armeabi-v7a; 14; /home/alexander/Projects/AndroidSource/4.
native_camera_r4.1.1; armeabi; 14; /home/alexander/Projects/AndroidSource/4.1.1
native_camera_r4.1.1; armeabi-v7a; 14; /home/alexander/Projects/AndroidSource/4.1.1
native_camera_r4.1.1; x86; 14; /home/alexander/Projects/AndroidSource/4.1.1
native_camera_r4.1.1; mips; 14; /home/alexander/Projects/AndroidSource/4.1.1_mips
native_camera_r4.2.0; armeabi-v7a; 14; /home/alexander/Projects/AndroidSource/4.2
native_camera_r4.2.0; armeabi; 14; /home/alexander/Projects/AndroidSource/4.2
native_camera_r4.2.0; x86; 14; /home/alexander/Projects/AndroidSource/4.2
native_camera_r4.2.0; mips; 14; /home/alexander/Projects/AndroidSource/4.2
+13 -6
Ver Arquivo
@@ -33,20 +33,27 @@ for s in ConfFile.readlines():
continue
shutil.rmtree(os.path.join(AndroidTreeRoot, "out", "target", "product", "generic", "system"), ignore_errors=True)
LinkerLibs = os.path.join(AndroidTreeRoot, "bin_arm", "system")
if (Arch == "x86"):
shutil.copytree(os.path.join(AndroidTreeRoot, "bin_x86", "system"), os.path.join(AndroidTreeRoot, "out", "target", "product", "generic", "system"))
LinkerLibs = os.path.join(AndroidTreeRoot, "bin_x86", "system")
elif (Arch == "mips"):
shutil.copytree(os.path.join(AndroidTreeRoot, "bin_mips", "system"), os.path.join(AndroidTreeRoot, "out", "target", "product", "generic", "system"))
else:
shutil.copytree(os.path.join(AndroidTreeRoot, "bin_arm", "system"), os.path.join(AndroidTreeRoot, "out", "target", "product", "generic", "system"))
LinkerLibs = os.path.join(AndroidTreeRoot, "bin_mips", "system")
if (not os.path.exists(LinkerLibs)):
print("Error: Paltform libs for linker in path \"%s\" not found" % LinkerLibs)
print("Building %s for %s\t[\033[91mFAILED\033[0m]" % (MakeTarget, Arch))
continue
shutil.copytree(LinkerLibs, os.path.join(AndroidTreeRoot, "out", "target", "product", "generic", "system"))
os.chdir(BuildDir)
BuildLog = os.path.join(BuildDir, "build.log")
CmakeCmdLine = "cmake -DCMAKE_TOOLCHAIN_FILE=../android.toolchain.cmake -DANDROID_SOURCE_TREE=\"%s\" -DANDROID_NATIVE_API_LEVEL=\"%s\" -DANDROID_ABI=\"%s\" -DANDROID_STL=stlport_static ../../ > \"%s\" 2>&1" % (AndroidTreeRoot, NativeApiLevel, Arch, BuildLog)
MakeCmdLine = "make %s >> \"%s\" 2>&1" % (MakeTarget, BuildLog);
print(CmakeCmdLine)
#print(CmakeCmdLine)
os.system(CmakeCmdLine)
print(MakeCmdLine)
#print(MakeCmdLine)
os.system(MakeCmdLine)
os.chdir(HomeDir)
CameraLib = os.path.join(BuildDir, "lib", Arch, "lib" + MakeTarget + ".so")
+1 -2
Ver Arquivo
@@ -4,5 +4,4 @@ cd `dirname $0`/..
mkdir -p build_service
cd build_service
cmake -DCMAKE_TOOLCHAIN_FILE=../android.toolchain.cmake -DANDROID_STL=stlport_static -DANDROID_STL_FORCE_FEATURES=OFF -DBUILD_ANDROID_SERVICE=ON -DANDROID_SOURCE_TREE=~/Projects/AndroidSource/ServiceStub/ $@ ../..
cmake -DCMAKE_TOOLCHAIN_FILE=../android.toolchain.cmake -DANDROID_TOOLCHAIN_NAME="arm-linux-androideabi-4.4.3" -DANDROID_STL=stlport_static -DANDROID_STL_FORCE_FEATURES=OFF -DBUILD_ANDROID_SERVICE=ON -DANDROID_SOURCE_TREE=~/Projects/AndroidSource/ServiceStub/ $@ ../..
+6 -2
Ver Arquivo
@@ -1,2 +1,6 @@
add_subdirectory(engine)
#add_subdirectory(engine_test)
if(BUILD_ANDROID_SERVICE)
add_subdirectory(engine)
#add_subdirectory(engine_test)
endif()
install(FILES "readme.txt" DESTINATION "apk/" COMPONENT main)
-22
Ver Arquivo
@@ -1,22 +0,0 @@
***************
Package Content
***************
The package provides new OpenCV SDK that uses OpenCV Manager for library initialization. OpenCV Manager provides the following benefits:
* Less memory usage. All apps use the same binaries from service and do not keep native libs inside them self;
* Hardware specific optimizations for all supported platforms;
* Trusted OpenCV library source. All packages with OpenCV are published on Google Play service;
* Regular updates and bug fixes;
Package consists from Library Project for Java development with Eclipse, C++ headers and libraries for native application development, javadoc samples and prebuilt binaries for ARM and X86 platforms.
To try new SDK on serial device with Google Play just install sample package and follow application messages (Google Play service access will be needed).
TO start example on device without Google Play you need to install OpenCV manager package and OpenCV binary pack for your platform from apk folder before.
See docs/doc/tutorials/introduction/android_binary_package/android_binary_package.html and docs/android/refmain.html for details about service.
On-line documentation will be available at address: http://docs.opencv.org/trunk
********
Contacts
********
Please send all feedback to Alexander Smorkalov mailto: alexander.smorkalov@itseez.com
+11 -8
Ver Arquivo
@@ -1,18 +1,20 @@
*********************************************
Base Loader Callback Interface implementation
Base Loader Callback Interface Implementation
*********************************************
.. highlight:: java
.. class:: BaseLoaderCallback
Basic implementation of LoaderCallbackInterface. Logic of this implementation is well-described by the following scheme:
Basic implementation of ``LoaderCallbackInterface``. Logic of this implementation is
well-described by the following scheme:
.. image:: img/AndroidAppUsageModel.png
Using in Java Activity
----------------------
There is a very base code snippet implementing the async initialization with BaseLoaderCallback. See the "15-puzzle" OpenCV sample for details.
There is a very base code snippet implementing the async initialization with ``BaseLoaderCallback``.
See the "15-puzzle" OpenCV sample for details.
.. code-block:: java
:linenos:
@@ -42,11 +44,11 @@ There is a very base code snippet implementing the async initialization with Bas
@Override
protected void onResume()
{
Log.i(TAG, "called onResume");
Log.i(TAG, "Called onResume");
super.onResume();
Log.i(TAG, "Trying to load OpenCV library");
if (!OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mOpenCVCallBack))
if (!OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_4, this, mOpenCVCallBack))
{
Log.e(TAG, "Cannot connect to OpenCV Manager");
}
@@ -55,6 +57,7 @@ There is a very base code snippet implementing the async initialization with Bas
Using in Service
----------------
Default BaseLoaderCallback implementation treat application context as Activity and calls Activity.finish() method to exit in case of initialization failure.
To override this behavior you need to override finish() method of BaseLoaderCallback class and implement your own finalization method.
Default ``BaseLoaderCallback`` implementation treats application context as ``Activity`` and calls
``Activity.finish()`` method to exit in case of initialization failure.
To override this behavior you need to override ``finish()`` method of ``BaseLoaderCallback`` class
and implement your own finalization method.
@@ -28,7 +28,7 @@ void cancel()
.. method:: void cancel()
Installation if package has been canceled.
Installation of package has been cancelled.
void wait_install()
-------------------
+18 -14
Ver Arquivo
@@ -7,34 +7,38 @@ Introduction
.. highlight:: java
OpenCV Manager is an Android service targeted to manage OpenCV library binaries on end users devices. It allows sharing the OpenCV dynamic libraries of different versions between applications on the same device. The Manager provides the following benefits\:
OpenCV Manager is an Android service targeted to manage OpenCV library binaries on end users devices.
It allows sharing the OpenCV dynamic libraries between applications on the same device. The Manager
provides the following benefits\:
#. Less memory usage. All apps use the same binaries from service and do not keep native libs inside themselves;
#. Hardware specific optimizations for all supported platforms;
#. Trusted OpenCV library source. All packages with OpenCV are published on Google Play service;
#. Trusted OpenCV library source. All packages with OpenCV are published on Google Play market;
#. Regular updates and bug fixes;
Usage model for target user
---------------------------
Usage model for end user
------------------------
.. image:: img/AndroidAppUsageModel.png
First OpenCV app\:
#. Any OpenCV-dependent app is installed from Google Play marketplace or manually;
#. At the first launch, it suggests installing OpenCV Manager;
#. Then OpenCV Manager is downloaded and installed, using Google Play marketplace service.
#. When Manager has ben started, the application suggests installing OpenCV library for the target device trough Google Play marketplace if it is necessary;
#. After installation is finished, the app may be launched to perform common tasks.
#. At the first launch, it suggests installation of OpenCV Manager;
#. Then OpenCV Manager is downloaded and installed, using the Google Play application.
#. When Manager has been started, the application suggests installation of OpenCV library for the
target device architecture if it is necessary;
#. After the installation is finished, the app may be launched.
Next OpenCV app\:
Subsequent launches of OpenCV apps\:
#. Any OpenCV-dependent app is installed from Google Play marketplace or manually;
#. Any OpenCV-dependent app is installed from Google Play market or manually;
#. At the first launch, the app starts as usually;
#. If the selected version is not installed, OpenCV Manager suggests installing OpenCV library for the target device trough Google Play marketplace;
#. After installation is finished, the app may be launched to perform common tasks.
#. If the selected OpenCV version is not installed, OpenCV Manager suggests installing OpenCV
library for the target device through Google Play marketplace;
#. After the installation is finished, the app may be launched.
OpenCV Manager structure
------------------------
Architecture of OpenCV Manager
------------------------------
.. image:: img/Structure.png
+10 -9
Ver Arquivo
@@ -12,23 +12,27 @@ boolean initDebug()
.. method:: static boolean initDebug()
Loads and initializes OpenCV library from within current application package. Roughly it is analog of ``system.loadLibrary("opencv_java")``.
Loads and initializes OpenCV library from within current application package. Roughly it is
analog of ``system.loadLibrary("opencv_java")``.
:rtype: boolean;
:return: returns true if initialization of OpenCV was successful.
.. note:: This method is deprecated for production code. It is designed for experimantal and local development purposes only. If you want to publish your app use approach with async initialization.
.. note:: This method is deprecated for production code. It is designed for experimental and local
development purposes only. If you want to publish your app use approach with async
initialization.
boolean initAsync()
-------------------
.. method:: static boolean initAsync(String Version, Context AppContext, LoaderCallbackInterface Callback)
Loads and initializes OpenCV library using OpenCV Manager service.
Loads and initializes OpenCV library using OpenCV Manager.
:param Version: OpenCV Library version.
:param AppContext: application context for connecting to the service.
:param Callback: object, that implements LoaderCallbackInterface for handling connection status (see BaseLoaderCallback).
:param Callback: object, that implements ``LoaderCallbackInterface`` for handling connection
status (see ``BaseLoaderCallback``).
:rtype: boolean;
:return: returns true if initialization of OpenCV starts successfully.
@@ -44,9 +48,6 @@ OpenCV version constants
OpenCV Library version 2.4.3
Other constatnts
----------------
.. data:: OPENCV_VERSION_2_4_4
.. data:: OPEN_CV_SERVICE_URL
Url for OpenCV Manager on Google Play (Android Market)
OpenCV Library version 2.4.4
+6 -6
Ver Arquivo
@@ -12,9 +12,9 @@ void onManagerConnected()
.. method:: void onManagerConnected(int status)
Callback method that is called after OpenCV Library initialization.
Callback method that is called after OpenCV library initialization.
:param status: status of initialization (see Initialization Status Constants).
:param status: status of initialization (see "Initialization Status Constants" section below).
void onPackageInstall()
-----------------------
@@ -23,7 +23,7 @@ void onPackageInstall()
Callback method that is called in case when package installation is needed.
:param callback: answer object with approve and cancel methods and package description.
:param callback: answer object with ``install`` and ``cancel`` methods and package description.
Initialization status constants
-------------------------------
@@ -34,15 +34,15 @@ Initialization status constants
.. data:: MARKET_ERROR
Google Play (Android Market) cannot be invoked
Google Play (Android Market) application cannot be invoked
.. data:: INSTALL_CANCELED
OpenCV library installation was canceled by user
OpenCV library installation was cancelled by user
.. data:: INCOMPATIBLE_MANAGER_VERSION
Version of OpenCV Manager Service is incompatible with this app. Service update is needed
Version of OpenCV Manager is incompatible with this app. Manager update is needed.
.. data:: INIT_FAILED
+9 -6
Ver Arquivo
@@ -1,6 +1,9 @@
*******************************************
Manager Workflow
*******************************************
****************
.. _manager_selection:
.. include:: ../readme.txt
First application start
-----------------------
@@ -9,15 +12,15 @@ There is no OpenCV Manager or OpenCV libraries:
.. image:: img/NoService.png
Aditional library package installation
--------------------------------------
Additional library package installation
---------------------------------------
There is an OpenCV Manager service, but there is no apropriate OpenCV library.
There is an OpenCV Manager service, but it does not contain appropriate OpenCV library.
If OpenCV library installation has been approved\:
.. image:: img/LibInstallAproved.png
If OpenCV library installation has been canceled\:
If OpenCV library installation has been cancelled\:
.. image:: img/LibInstallCanceled.png
+3 -3
Ver Arquivo
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.opencv.engine"
android:versionCode="20"
android:versionName="2.0" >
android:versionCode="26@ANDROID_PLATFORM_VERSION_CODE@"
android:versionName="2.6" >
<uses-sdk android:minSdkVersion="8" />
<uses-sdk android:minSdkVersion="@ANDROID_NATIVE_API_LEVEL@" />
<uses-feature android:name="android.hardware.touchscreen" android:required="false"/>
<application
+34 -1
Ver Arquivo
@@ -2,7 +2,29 @@ set(engine OpenCVEngine)
set(JNI_LIB_NAME ${engine} ${engine}_jni)
unset(__android_project_chain CACHE)
add_android_project(opencv_engine "${CMAKE_CURRENT_SOURCE_DIR}" SDK_TARGET 8 ${ANDROID_SDK_TARGET} IGNORE_JAVA ON)
add_android_project(opencv_engine "${CMAKE_CURRENT_SOURCE_DIR}" SDK_TARGET 9 ${ANDROID_SDK_TARGET} IGNORE_JAVA ON IGNORE_MANIFEST ON )
set(ANDROID_PLATFORM_VERSION_CODE "0")
if(ARMEABI_V7A)
if (ANDROID_NATIVE_API_LEVEL LESS 9)
set(ANDROID_PLATFORM_VERSION_CODE "2")
else()
set(ANDROID_PLATFORM_VERSION_CODE "3")
endif()
elseif(ARMEABI_V6)
set(ANDROID_PLATFORM_VERSION_CODE "1")
elseif(ARMEABI)
set(ANDROID_PLATFORM_VERSION_CODE "1")
elseif(X86)
set(ANDROID_PLATFORM_VERSION_CODE "4")
elseif(MIPS)
set(ANDROID_PLATFORM_VERSION_CODE "5")
else()
message(WARNING "Can not automatically determine the value for ANDROID_PLATFORM_VERSION_CODE")
endif()
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/${ANDROID_MANIFEST_FILE}" "${OpenCV_BINARY_DIR}/android/service/engine/.build/${ANDROID_MANIFEST_FILE}" @ONLY)
link_directories("${ANDROID_SOURCE_TREE}/out/target/product/generic/system/lib" "${ANDROID_SOURCE_TREE}/out/target/product/${ANDROID_PRODUCT}/system/lib" "${ANDROID_SOURCE_TREE}/bin/${ANDROID_ARCH_NAME}")
@@ -40,3 +62,14 @@ set_target_properties(${engine}_jni PROPERTIES
get_target_property(engine_lib_location ${engine}_jni LOCATION)
add_custom_command(TARGET ${engine}_jni POST_BUILD COMMAND ${CMAKE_STRIP} --strip-unneeded "${engine_lib_location}")
# native tests
add_definitions(-DGTEST_HAS_CLONE=0 -DANDROID -DGTEST_HAS_TR1_TUPLE=0)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-allow-shlib-undefined")
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/jni/Tests)
file(GLOB engine_test_files "jni/Tests/*.cpp")
add_executable(opencv_test_engine ${engine_test_files} jni/Tests/gtest/gtest-all.cpp)
target_link_libraries(opencv_test_engine z binder log utils android_runtime ${engine} ${engine}_jni)
+1 -1
Ver Arquivo
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<project name="ManagerActivity" default="help">
<project name="OpenCV Manager" default="help">
<!-- The local.properties file is created and updated by the 'android' tool.
It contains the path to the SDK. It should *NOT* be checked into
+4 -4
Ver Arquivo
@@ -35,7 +35,7 @@ LOCAL_MODULE := libOpenCVEngine
LOCAL_LDLIBS += -lz -lbinder -llog -lutils
LOCAL_LDFLAGS += -Wl,-allow-shlib-undefine
LOCAL_LDFLAGS += -Wl,-allow-shlib-undefined
include $(BUILD_SHARED_LIBRARY)
@@ -52,7 +52,8 @@ LOCAL_SRC_FILES := \
NativeService/CommonPackageManager.cpp \
JNIWrapper/JavaBasedPackageManager.cpp \
NativeService/PackageInfo.cpp \
JNIWrapper/HardwareDetector_jni.cpp
JNIWrapper/HardwareDetector_jni.cpp \
JNIWrapper/OpenCVLibraryInfo.cpp
LOCAL_C_INCLUDES := \
$(LOCAL_PATH)/include \
@@ -74,7 +75,6 @@ LOCAL_CFLAGS += -D__SUPPORT_MIPS
LOCAL_MODULE := libOpenCVEngine_jni
LOCAL_LDLIBS += -lz -lbinder -llog -lutils -landroid_runtime
LOCAL_SHARED_LIBRARIES = libOpenCVEngine
include $(BUILD_SHARED_LIBRARY)
@@ -83,4 +83,4 @@ include $(BUILD_SHARED_LIBRARY)
# Native test application
#---------------------------------------------------------------------
include $(LOCAL_PATH)/Tests/Tests.mk
#include $(LOCAL_PATH)/Tests/Tests.mk
+1
Ver Arquivo
@@ -2,4 +2,5 @@ APP_ABI := armeabi x86 mips
APP_PLATFORM := android-8
APP_STL := stlport_static
APP_CPPFLAGS := -fno-rtti -fno-exceptions
NDK_TOOLCHAIN_VERSION=4.4.3
#APP_OPTIM := debug
@@ -15,60 +15,44 @@ using namespace android;
const int OpenCVEngine::Platform = DetectKnownPlatforms();
const int OpenCVEngine::CpuID = GetCpuID();
const int OpenCVEngine::KnownVersions[] = {2040000, 2040100, 2040200, 2040300, 2040301, 2040302, 2040400};
std::set<std::string> OpenCVEngine::InitKnownOpenCVersions()
bool OpenCVEngine::ValidateVersion(int version)
{
std::set<std::string> result;
for (size_t i = 0; i < sizeof(KnownVersions)/sizeof(int); i++)
if (KnownVersions[i] == version)
return true;
result.insert("240");
result.insert("241");
result.insert("242");
result.insert("243");
return result;
return false;
}
const std::set<std::string> OpenCVEngine::KnownVersions = InitKnownOpenCVersions();
bool OpenCVEngine::ValidateVersionString(const std::string& version)
int OpenCVEngine::NormalizeVersionString(std::string version)
{
return (KnownVersions.find(version) != KnownVersions.end());
}
std::string OpenCVEngine::NormalizeVersionString(std::string version)
{
std::string result = "";
std::string suffix = "";
int result = 0;
if (version.empty())
{
return result;
}
if (('a' == version[version.size()-1]) || ('b' == version[version.size()-1]))
{
suffix = version[version.size()-1];
version.erase(version.size()-1);
}
std::vector<std::string> parts = SplitStringVector(version, '.');
if (parts.size() >= 2)
// Use only 4 digits of the version, i.e. 1.2.3.4.
// Other digits will be ignored.
if (parts.size() > 4)
parts.erase(parts.begin()+4, parts.end());
int multiplyer = 1000000;
for (std::vector<std::string>::const_iterator it = parts.begin(); it != parts.end(); ++it)
{
if (parts.size() >= 3)
{
result = parts[0] + parts[1] + parts[2] + suffix;
if (!ValidateVersionString(result))
result = "";
}
else
{
result = parts[0] + parts[1] + "0" + suffix;
if (!ValidateVersionString(result))
result = "";
}
int digit = atoi(it->c_str());
result += multiplyer*digit;
multiplyer /= 100;
}
if (!ValidateVersion(result))
result = 0;
return result;
}
@@ -86,19 +70,19 @@ int32_t OpenCVEngine::GetVersion()
String16 OpenCVEngine::GetLibPathByVersion(android::String16 version)
{
std::string std_version(String8(version).string());
std::string norm_version;
int norm_version;
std::string path;
LOGD("OpenCVEngine::GetLibPathByVersion(%s) impl", String8(version).string());
norm_version = NormalizeVersionString(std_version);
if (!norm_version.empty())
if (0 != norm_version)
{
path = PackageManager->GetPackagePathByVersion(norm_version, Platform, CpuID);
if (path.empty())
{
LOGI("Package OpenCV of version %s is not installed. Try to install it :)", norm_version.c_str());
LOGI("Package OpenCV of version \"%s\" (%d) is not installed. Try to install it :)", String8(version).string(), norm_version);
}
else
{
@@ -107,7 +91,7 @@ String16 OpenCVEngine::GetLibPathByVersion(android::String16 version)
}
else
{
LOGE("OpenCV version \"%s\" (%s) is not supported", String8(version).string(), norm_version.c_str());
LOGE("OpenCV version \"%s\" (%d) is not supported", String8(version).string(), norm_version);
}
return String16(path.c_str());
@@ -116,11 +100,11 @@ String16 OpenCVEngine::GetLibPathByVersion(android::String16 version)
android::String16 OpenCVEngine::GetLibraryList(android::String16 version)
{
std::string std_version = String8(version).string();
std::string norm_version;
int norm_version;
String16 result;
norm_version = NormalizeVersionString(std_version);
if (!norm_version.empty())
if (0 != norm_version)
{
std::string tmp = PackageManager->GetPackagePathByVersion(norm_version, Platform, CpuID);
if (!tmp.empty())
@@ -130,7 +114,7 @@ android::String16 OpenCVEngine::GetLibraryList(android::String16 version)
LOGD("Trying to load info library \"%s\"", tmp.c_str());
void* handle;
const char* (*info_func)();
InfoFunctionType info_func;
handle = dlopen(tmp.c_str(), RTLD_LAZY);
if (handle)
@@ -138,7 +122,7 @@ android::String16 OpenCVEngine::GetLibraryList(android::String16 version)
const char* error;
dlerror();
*(void **) (&info_func) = dlsym(handle, "GetLibraryList");
info_func = (InfoFunctionType)dlsym(handle, "GetLibraryList");
if ((error = dlerror()) == NULL)
{
result = String16((*info_func)());
@@ -156,12 +140,12 @@ android::String16 OpenCVEngine::GetLibraryList(android::String16 version)
}
else
{
LOGI("Package OpenCV of version %s is not installed. Try to install it :)", norm_version.c_str());
LOGI("Package OpenCV of version \"%s\" (%d) is not installed. Try to install it :)", std_version.c_str(), norm_version);
}
}
else
{
LOGE("OpenCV version \"%s\" is not supported", norm_version.c_str());
LOGE("OpenCV version \"%s\" is not supported", std_version.c_str());
}
return result;
@@ -170,21 +154,21 @@ android::String16 OpenCVEngine::GetLibraryList(android::String16 version)
bool OpenCVEngine::InstallVersion(android::String16 version)
{
std::string std_version = String8(version).string();
std::string norm_version;
int norm_version;
bool result = false;
LOGD("OpenCVEngine::InstallVersion() begin");
norm_version = NormalizeVersionString(std_version);
if (!norm_version.empty())
if (0 != norm_version)
{
LOGD("PackageManager->InstallVersion call");
result = PackageManager->InstallVersion(norm_version, Platform, CpuID);
}
else
{
LOGE("OpenCV version \"%s\" is not supported", norm_version.c_str());
LOGE("OpenCV version \"%s\" (%d) is not supported", std_version.c_str(), norm_version);
}
LOGD("OpenCVEngine::InstallVersion() end");
@@ -23,16 +23,15 @@ public:
protected:
IPackageManager* PackageManager;
static const std::set<std::string> KnownVersions;
static const int KnownVersions[];
OpenCVEngine();
static std::set<std::string> InitKnownOpenCVersions();
bool ValidateVersionString(const std::string& version);
std::string NormalizeVersionString(std::string version);
bool ValidateVersion(int version);
int NormalizeVersionString(std::string version);
bool FixPermissions(const std::string& path);
static const int Platform;
static const int CpuID;
};
#endif
#endif
@@ -40,13 +40,16 @@ bool JavaBasedPackageManager::InstallPackage(const PackageInfo& package)
if (!jmethod)
{
LOGE("MarketConnector::GetAppFormMarket method was not found!");
jenv->DeleteLocalRef(jclazz);
return false;
}
LOGD("Calling java package manager with package name %s\n", package.GetFullName().c_str());
jobject jpkgname = jenv->NewStringUTF(package.GetFullName().c_str());
bool result = jenv->CallNonvirtualBooleanMethod(JavaPackageManager, jclazz, jmethod, jpkgname);
jenv->DeleteLocalRef(jpkgname);
jenv->DeleteLocalRef(jclazz);
if (self_attached)
{
@@ -72,7 +75,6 @@ vector<PackageInfo> JavaBasedPackageManager::GetInstalledPackages()
JavaContext->AttachCurrentThread(&jenv, NULL);
}
LOGD("GetObjectClass call");
jclass jclazz = jenv->GetObjectClass(JavaPackageManager);
if (!jclazz)
{
@@ -80,15 +82,14 @@ vector<PackageInfo> JavaBasedPackageManager::GetInstalledPackages()
return result;
}
LOGD("GetMethodID call");
jmethodID jmethod = jenv->GetMethodID(jclazz, "GetInstalledOpenCVPackages", "()[Landroid/content/pm/PackageInfo;");
if (!jmethod)
{
LOGE("MarketConnector::GetInstalledOpenCVPackages method was not found!");
jenv->DeleteLocalRef(jclazz);
return result;
}
LOGD("Java package manager call");
jobjectArray jpkgs = static_cast<jobjectArray>(jenv->CallNonvirtualObjectMethod(JavaPackageManager, jclazz, jmethod));
jsize size = jenv->GetArrayLength(jpkgs);
@@ -100,13 +101,15 @@ vector<PackageInfo> JavaBasedPackageManager::GetInstalledPackages()
{
jobject jtmp = jenv->GetObjectArrayElement(jpkgs, i);
PackageInfo tmp = ConvertPackageFromJava(jtmp, jenv);
jenv->DeleteLocalRef(jtmp);
if (tmp.IsValid())
result.push_back(tmp);
jenv->DeleteLocalRef(jtmp);
}
jenv->DeleteLocalRef(jpkgs);
jenv->DeleteLocalRef(jclazz);
if (self_attached)
{
@@ -118,10 +121,21 @@ vector<PackageInfo> JavaBasedPackageManager::GetInstalledPackages()
return result;
}
static jint GetAndroidVersion(JNIEnv* jenv)
{
jclass jclazz = jenv->FindClass("android/os/Build$VERSION");
jfieldID jfield = jenv->GetStaticFieldID(jclazz, "SDK_INT", "I");
jint api_level = jenv->GetStaticIntField(jclazz, jfield);
jenv->DeleteLocalRef(jclazz);
return api_level;
}
// IMPORTANT: This method can be called only if thread is attached to Dalvik
PackageInfo JavaBasedPackageManager::ConvertPackageFromJava(jobject package, JNIEnv* jenv)
{
jclass jclazz = jenv->GetObjectClass(package);
jfieldID jfield = jenv->GetFieldID(jclazz, "packageName", "Ljava/lang/String;");
jstring jnameobj = static_cast<jstring>(jenv->GetObjectField(package, jfield));
const char* jnamestr = jenv->GetStringUTFChars(jnameobj, NULL);
@@ -134,22 +148,27 @@ PackageInfo JavaBasedPackageManager::ConvertPackageFromJava(jobject package, JNI
string verison(jversionstr);
jenv->DeleteLocalRef(jversionobj);
jenv->DeleteLocalRef(jclazz);
static const jint api_level = GetAndroidVersion(jenv);
string path;
jclazz = jenv->FindClass("android/os/Build$VERSION");
jfield = jenv->GetStaticFieldID(jclazz, "SDK_INT", "I");
jint api_level = jenv->GetStaticIntField(jclazz, jfield);
if (api_level > 8)
{
jclazz = jenv->GetObjectClass(package);
jfield = jenv->GetFieldID(jclazz, "applicationInfo", "Landroid/content/pm/ApplicationInfo;");
jobject japp_info = jenv->GetObjectField(package, jfield);
jenv->DeleteLocalRef(jclazz);
jclazz = jenv->GetObjectClass(japp_info);
jfield = jenv->GetFieldID(jclazz, "nativeLibraryDir", "Ljava/lang/String;");
jstring jpathobj = static_cast<jstring>(jenv->GetObjectField(japp_info, jfield));
const char* jpathstr = jenv->GetStringUTFChars(jpathobj, NULL);
path = string(jpathstr);
jenv->ReleaseStringUTFChars(jpathobj, jpathstr);
jenv->DeleteLocalRef(japp_info);
jenv->DeleteLocalRef(jpathobj);
jenv->DeleteLocalRef(jclazz);
}
else
{
@@ -19,4 +19,4 @@ private:
JavaBasedPackageManager();
PackageInfo ConvertPackageFromJava(jobject package, JNIEnv* jenv);
};
};
@@ -0,0 +1,88 @@
#include "OpenCVLibraryInfo.h"
#include "EngineCommon.h"
#include <utils/Log.h>
#include <dlfcn.h>
JNIEXPORT jlong JNICALL Java_org_opencv_engine_OpenCVLibraryInfo_open
(JNIEnv * env, jobject, jstring str)
{
const char* infoLibPath = env->GetStringUTFChars(str, NULL);
if (infoLibPath == NULL)
return 0;
LOGD("Trying to load info library \"%s\"", infoLibPath);
void* handle;
handle = dlopen(infoLibPath, RTLD_LAZY);
if (handle == NULL)
LOGI("Info library not found by path \"%s\"", infoLibPath);
return (jlong)handle;
}
JNIEXPORT jstring JNICALL Java_org_opencv_engine_OpenCVLibraryInfo_getPackageName
(JNIEnv* env, jobject, jlong handle)
{
InfoFunctionType info_func;
const char* result;
const char* error;
dlerror();
info_func = (InfoFunctionType)dlsym((void*)handle, "GetPackageName");
if ((error = dlerror()) == NULL)
result = (*info_func)();
else
{
LOGE("dlsym error: \"%s\"", error);
result = "unknown";
}
return env->NewStringUTF(result);
}
JNIEXPORT jstring JNICALL Java_org_opencv_engine_OpenCVLibraryInfo_getLibraryList
(JNIEnv* env, jobject, jlong handle)
{
InfoFunctionType info_func;
const char* result;
const char* error;
dlerror();
info_func = (InfoFunctionType)dlsym((void*)handle, "GetLibraryList");
if ((error = dlerror()) == NULL)
result = (*info_func)();
else
{
LOGE("dlsym error: \"%s\"", error);
result = "unknown";
}
return env->NewStringUTF(result);
}
JNIEXPORT jstring JNICALL Java_org_opencv_engine_OpenCVLibraryInfo_getVersionName
(JNIEnv* env, jobject, jlong handle)
{
InfoFunctionType info_func;
const char* result;
const char* error;
dlerror();
info_func = (InfoFunctionType)dlsym((void*)handle, "GetRevision");
if ((error = dlerror()) == NULL)
result = (*info_func)();
else
{
LOGE("dlsym error: \"%s\"", error);
result = "unknown";
}
return env->NewStringUTF(result);
}
JNIEXPORT void JNICALL Java_org_opencv_engine_OpenCVLibraryInfo_close
(JNIEnv*, jobject, jlong handle)
{
dlclose((void*)handle);
}
@@ -0,0 +1,27 @@
#include <jni.h>
#ifndef _Included_org_opencv_engine_OpenCVLibraryInfo
#define _Included_org_opencv_engine_OpenCVLibraryInfo
#ifdef __cplusplus
extern "C" {
#endif
JNIEXPORT jlong JNICALL Java_org_opencv_engine_OpenCVLibraryInfo_open
(JNIEnv *, jobject, jstring);
JNIEXPORT jstring JNICALL Java_org_opencv_engine_OpenCVLibraryInfo_getPackageName
(JNIEnv *, jobject, jlong);
JNIEXPORT jstring JNICALL Java_org_opencv_engine_OpenCVLibraryInfo_getLibraryList
(JNIEnv *, jobject, jlong);
JNIEXPORT jstring JNICALL Java_org_opencv_engine_OpenCVLibraryInfo_getVersionName
(JNIEnv *, jobject, jlong);
JNIEXPORT void JNICALL Java_org_opencv_engine_OpenCVLibraryInfo_close
(JNIEnv *, jobject, jlong);
#ifdef __cplusplus
}
#endif
#endif
@@ -11,22 +11,24 @@
using namespace std;
set<string> CommonPackageManager::GetInstalledVersions()
vector<int> CommonPackageManager::GetInstalledVersions()
{
set<string> result;
vector<int> result;
vector<PackageInfo> installed_packages = GetInstalledPackages();
for (vector<PackageInfo>::const_iterator it = installed_packages.begin(); it != installed_packages.end(); ++it)
result.resize(installed_packages.size());
for (size_t i = 0; i < installed_packages.size(); i++)
{
string version = it->GetVersion();
assert(!version.empty());
result.insert(version);
int version = installed_packages[i].GetVersion();
assert(version);
result[i] = version;
}
return result;
}
bool CommonPackageManager::CheckVersionInstalled(const std::string& version, int platform, int cpu_id)
bool CommonPackageManager::CheckVersionInstalled(int version, int platform, int cpu_id)
{
bool result = false;
LOGD("CommonPackageManager::CheckVersionInstalled() begin");
@@ -48,14 +50,14 @@ bool CommonPackageManager::CheckVersionInstalled(const std::string& version, int
return result;
}
bool CommonPackageManager::InstallVersion(const std::string& version, int platform, int cpu_id)
bool CommonPackageManager::InstallVersion(int version, int platform, int cpu_id)
{
LOGD("CommonPackageManager::InstallVersion() begin");
PackageInfo package(version, platform, cpu_id);
return InstallPackage(package);
}
string CommonPackageManager::GetPackagePathByVersion(const std::string& version, int platform, int cpu_id)
string CommonPackageManager::GetPackagePathByVersion(int version, int platform, int cpu_id)
{
string result;
PackageInfo target_package(version, platform, cpu_id);
@@ -64,7 +66,7 @@ string CommonPackageManager::GetPackagePathByVersion(const std::string& version,
for (vector<PackageInfo>::iterator it = all_packages.begin(); it != all_packages.end(); ++it)
{
LOGD("Check version \"%s\" compatibility with \"%s\"\n", version.c_str(), it->GetVersion().c_str());
LOGD("Check version \"%d\" compatibility with \"%d\"\n", version, it->GetVersion());
if (IsVersionCompatible(version, it->GetVersion()))
{
LOGD("Compatible");
@@ -78,49 +80,61 @@ string CommonPackageManager::GetPackagePathByVersion(const std::string& version,
if (!packages.empty())
{
vector<PackageInfo>::iterator found = find(packages.begin(), packages.end(), target_package);
if (packages.end() != found)
int platform_group = 0;
if ((cpu_id & ARCH_X86) || (cpu_id & ARCH_X64))
platform_group = 1;
if (cpu_id & ARCH_MIPS)
platform_group = 2;
int opt_rating = -1;
int opt_version = 0;
const int hardware_rating = GetHardwareRating(platform, cpu_id, ArchRatings[platform_group]);
LOGD("Current hardware platform rating %d for (%d,%d)", hardware_rating, platform, cpu_id);
if (-1 == hardware_rating)
{
result = found->GetInstalationPath();
LOGE("Cannot calculate rating for current hardware platform!");
}
else
{
int OptRating = -1;
std::vector<std::pair<int, int> >& group = CommonPackageManager::ArmRating;
if ((cpu_id & ARCH_X86) || (cpu_id & ARCH_X64))
group = CommonPackageManager::IntelRating;
int HardwareRating = GetHardwareRating(platform, cpu_id, group);
LOGD("Current hardware platform %d, %d", platform, cpu_id);
if (-1 == HardwareRating)
vector<PackageInfo>::iterator found = packages.end();
for (vector<PackageInfo>::iterator it = packages.begin(); it != packages.end(); ++it)
{
LOGE("Cannot calculate rating for current hardware platform!");
int package_group = 0;
if ((it->GetCpuID() & ARCH_X86) || (it->GetCpuID() & ARCH_X64))
package_group = 1;
if (it->GetCpuID() & ARCH_MIPS)
package_group = 2;
if (package_group != platform_group)
continue;
const int package_rating = GetHardwareRating(it->GetPlatform(), it->GetCpuID(), ArchRatings[package_group]);
LOGD("Package \"%s\" rating %d for (%d,%d)", it->GetFullName().c_str(), package_rating, it->GetPlatform(), it->GetCpuID());
if ((package_rating >= 0) && (package_rating <= hardware_rating))
{
if (((it->GetVersion() >= opt_version) && (package_rating >= opt_rating)) || (it->GetVersion() > opt_version))
{
opt_rating = package_rating;
opt_version = it->GetVersion();
found = it;
}
}
}
if ((-1 != opt_rating) && (packages.end() != found))
{
result = found->GetInstalationPath();
}
else
{
for (vector<PackageInfo>::iterator it = packages.begin(); it != packages.end(); ++it)
{
int PackageRating = GetHardwareRating(it->GetPlatform(), it->GetCpuID(), group);
if (PackageRating >= 0)
{
if ((PackageRating <= HardwareRating) && (PackageRating > OptRating))
{
OptRating = PackageRating;
found = it;
}
}
}
if ((-1 != OptRating) && (packages.end() != found))
{
result = found->GetInstalationPath();
}
else
{
LOGI("Found package is incompatible with current hardware platform");
}
LOGI("No compatible packages found!");
}
}
}
@@ -128,33 +142,37 @@ string CommonPackageManager::GetPackagePathByVersion(const std::string& version,
return result;
}
bool CommonPackageManager::IsVersionCompatible(const std::string& target_version, const std::string& package_version)
bool CommonPackageManager::IsVersionCompatible(int target_version, int package_version)
{
assert (target_version.size() == 3);
assert (package_version.size() == 3);
bool result = false;
assert(target_version);
assert(package_version);
// major version is the same and minor package version is above or the same as target.
if ((package_version[0] == target_version[0]) && (package_version[1] == target_version[1]) && (package_version[2] >= target_version[2]))
{
result = true;
}
return result;
return ( (package_version/10000 == target_version/10000) && (package_version%10000 >= target_version%10000) );
}
int CommonPackageManager::GetHardwareRating(int platform, int cpu_id, const std::vector<std::pair<int, int> >& group)
{
int result = -1;
for (size_t i = 0; i < group.size(); i++)
if ((cpu_id & ARCH_X86) || (cpu_id & ARCH_X64) || (cpu_id & ARCH_MIPS))
// Note: No raiting for x86, x64 and MIPS
// only one package is used
result = 0;
else
{
if (group[i] == std::pair<int, int>(platform, cpu_id))
{
result = i;
break;
}
// Calculate rating for Arm
LOGD("!!! Calculating rating for ARM\n");
for (size_t i = 0; i < group.size(); i++)
{
LOGD("Checking (%d, %d) against (%d,%d)\n", group[i].first, group[i].second, platform, cpu_id);
if (group[i] == std::pair<int, int>(platform, cpu_id))
{
LOGD("Rating found: %d\n", i);
result = i;
break;
}
}
}
return result;
@@ -171,33 +189,39 @@ std::vector<std::pair<int, int> > CommonPackageManager::InitArmRating()
result.push_back(std::pair<int, int>(PLATFORM_UNKNOWN, ARCH_ARMv6 | FEATURES_HAS_VFPv3 | FEATURES_HAS_VFPv3d16));
result.push_back(std::pair<int, int>(PLATFORM_UNKNOWN, ARCH_ARMv7));
result.push_back(std::pair<int, int>(PLATFORM_UNKNOWN, ARCH_ARMv7 | FEATURES_HAS_VFPv3d16));
result.push_back(std::pair<int, int>(PLATFORM_TEGRA2, ARCH_ARMv7 | FEATURES_HAS_VFPv3d16));
result.push_back(std::pair<int, int>(PLATFORM_UNKNOWN, ARCH_ARMv7 | FEATURES_HAS_VFPv3));
result.push_back(std::pair<int, int>(PLATFORM_UNKNOWN, ARCH_ARMv7 | FEATURES_HAS_VFPv3d16 | FEATURES_HAS_VFPv3));
result.push_back(std::pair<int, int>(PLATFORM_UNKNOWN, ARCH_ARMv7 | FEATURES_HAS_NEON));
result.push_back(std::pair<int, int>(PLATFORM_UNKNOWN, ARCH_ARMv7 | FEATURES_HAS_VFPv3d16 | FEATURES_HAS_NEON));
result.push_back(std::pair<int, int>(PLATFORM_UNKNOWN, ARCH_ARMv7 | FEATURES_HAS_VFPv3 | FEATURES_HAS_NEON));
result.push_back(std::pair<int, int>(PLATFORM_UNKNOWN, ARCH_ARMv7 | FEATURES_HAS_VFPv3 | FEATURES_HAS_VFPv3d16 | FEATURES_HAS_NEON));
result.push_back(std::pair<int, int>(PLATFORM_TEGRA2, ARCH_ARMv7 | FEATURES_HAS_VFPv3d16));
result.push_back(std::pair<int, int>(PLATFORM_TEGRA3, ARCH_ARMv7 | FEATURES_HAS_VFPv3 | FEATURES_HAS_NEON));
result.push_back(std::pair<int, int>(PLATFORM_TEGRA3, ARCH_ARMv7 | FEATURES_HAS_VFPv3 | FEATURES_HAS_NEON));
return result;
}
// Stub for Intel platforms rating initialization. Common package for all Intel based devices is used now
std::vector<std::pair<int, int> > CommonPackageManager::InitIntelRating()
{
std::vector<std::pair<int, int> > result;
result.push_back(std::pair<int, int>(PLATFORM_UNKNOWN, ARCH_X64));
result.push_back(std::pair<int, int>(PLATFORM_UNKNOWN, ARCH_X86 | FEATURES_HAS_SSSE3));
result.push_back(std::pair<int, int>(PLATFORM_UNKNOWN, ARCH_X86 | FEATURES_HAS_SSE2));
result.push_back(std::pair<int, int>(PLATFORM_UNKNOWN, ARCH_X86 | FEATURES_HAS_SSE));
result.push_back(std::pair<int, int>(PLATFORM_UNKNOWN, ARCH_X86));
return result;
}
// Stub for MIPS platforms rating initialization. Common package for all MIPS based devices is used now
std::vector<std::pair<int, int> > CommonPackageManager::InitMipsRating()
{
std::vector<std::pair<int, int> > result;
return result;
}
std::vector<std::pair<int, int> > CommonPackageManager::IntelRating = CommonPackageManager::InitIntelRating();
std::vector<std::pair<int, int> > CommonPackageManager::ArmRating = InitArmRating();
const std::vector<std::pair<int, int> > CommonPackageManager::ArchRatings[] = {
CommonPackageManager::InitArmRating(),
CommonPackageManager::InitIntelRating(),
CommonPackageManager::InitMipsRating()
};
CommonPackageManager::~CommonPackageManager()
{
@@ -3,27 +3,26 @@
#include "IPackageManager.h"
#include "PackageInfo.h"
#include <set>
#include <vector>
#include <string>
class CommonPackageManager: public IPackageManager
{
public:
std::set<std::string> GetInstalledVersions();
bool CheckVersionInstalled(const std::string& version, int platform, int cpu_id);
bool InstallVersion(const std::string& version, int platform, int cpu_id);
std::string GetPackagePathByVersion(const std::string& version, int platform, int cpu_id);
std::vector<int> GetInstalledVersions();
bool CheckVersionInstalled(int version, int platform, int cpu_id);
bool InstallVersion(int version, int platform, int cpu_id);
std::string GetPackagePathByVersion(int version, int platform, int cpu_id);
virtual ~CommonPackageManager();
protected:
static std::vector<std::pair<int, int> > ArmRating;
static std::vector<std::pair<int, int> > IntelRating;
static const std::vector<std::pair<int, int> > ArchRatings[];
static std::vector<std::pair<int, int> > InitArmRating();
static std::vector<std::pair<int, int> > InitIntelRating();
static std::vector<std::pair<int, int> > InitMipsRating();
bool IsVersionCompatible(const std::string& target_version, const std::string& package_version);
bool IsVersionCompatible(int target_version, int package_version);
int GetHardwareRating(int platform, int cpu_id, const std::vector<std::pair<int, int> >& group);
virtual bool InstallPackage(const PackageInfo& package) = 0;
@@ -31,4 +30,4 @@ protected:
};
#endif
#endif
@@ -124,14 +124,29 @@ inline int SplitIntelFeatures(const vector<string>& features)
return result;
}
inline string SplitVersion(const vector<string>& features, const string& package_version)
inline int SplitVersion(const vector<string>& features, const string& package_version)
{
string result;
int result = 0;
if ((features.size() > 1) && ('v' == features[1][0]))
{
result = features[1].substr(1);
result += SplitStringVector(package_version, '.')[0];
// Taking major and minor mart of library version from package name
string tmp1 = features[1].substr(1);
result += atoi(tmp1.substr(0,1).c_str())*1000000 + atoi(tmp1.substr(1,1).c_str())*10000;
// Taking release and build number from package revision
vector<string> tmp2 = SplitStringVector(package_version, '.');
if (tmp2.size() == 2)
{
// the 2nd digit is revision
result += atoi(tmp2[0].c_str())*100 + 00;
}
else
{
// the 2nd digit is part of library version
// the 3rd digit is revision
result += atoi(tmp2[0].c_str())*100 + atoi(tmp2[1].c_str());
}
}
else
{
@@ -186,18 +201,26 @@ inline int SplitPlatfrom(const vector<string>& features)
* Second part is version. Version starts from "v" symbol. After "v" symbol version nomber without dot symbol added.
* If platform is known third part is platform name
* If platform is unknown it is defined by hardware capabilities using pattern: <arch>_<floating point and vectorization features>_<other features>
* Example: armv7_neon, armv5_vfpv3
* Example: armv7_neon
*/
PackageInfo::PackageInfo(const string& version, int platform, int cpu_id, std::string install_path):
Version(version),
Platform(platform),
CpuID(cpu_id),
InstallPath("")
PackageInfo::PackageInfo(int version, int platform, int cpu_id, std::string install_path):
Version(version),
Platform(platform),
CpuID(cpu_id),
InstallPath("")
{
#ifndef __SUPPORT_TEGRA3
Platform = PLATFORM_UNKNOWN;
#endif
FullName = BasePackageName + "_v" + Version.substr(0, Version.size()-1);
int major_version = version/1000000;
int minor_version = version/10000 - major_version*100;
char tmp[32];
sprintf(tmp, "%d%d", major_version, minor_version);
FullName = BasePackageName + std::string("_v") + std::string(tmp);
if (PLATFORM_UNKNOWN != Platform)
{
FullName += string("_") + JoinPlatform(platform);
@@ -295,7 +318,7 @@ InstallPath("")
else
{
LOGD("PackageInfo::PackageInfo: package arch unknown");
Version.clear();
Version = 0;
CpuID = ARCH_UNKNOWN;
Platform = PLATFORM_UNKNOWN;
}
@@ -303,7 +326,7 @@ InstallPath("")
else
{
LOGD("PackageInfo::PackageInfo: package arch unknown");
Version.clear();
Version = 0;
CpuID = ARCH_UNKNOWN;
Platform = PLATFORM_UNKNOWN;
}
@@ -341,8 +364,8 @@ InstallPath(install_path)
LOGD("Trying to load info library \"%s\"", tmp.c_str());
void* handle;
const char* (*name_func)();
const char* (*revision_func)();
InfoFunctionType name_func;
InfoFunctionType revision_func;
handle = dlopen(tmp.c_str(), RTLD_LAZY);
if (handle)
@@ -350,8 +373,8 @@ InstallPath(install_path)
const char* error;
dlerror();
*(void **) (&name_func) = dlsym(handle, "GetPackageName");
*(void **) (&revision_func) = dlsym(handle, "GetRevision");
name_func = (InfoFunctionType)dlsym(handle, "GetPackageName");
revision_func = (InfoFunctionType)dlsym(handle, "GetRevision");
error = dlerror();
if (!error && revision_func && name_func)
@@ -370,7 +393,7 @@ InstallPath(install_path)
{
LOGI("Info library not found in package");
LOGI("OpenCV Manager package does not contain any verison of OpenCV library");
Version.clear();
Version = 0;
CpuID = ARCH_UNKNOWN;
Platform = PLATFORM_UNKNOWN;
return;
@@ -382,7 +405,7 @@ InstallPath(install_path)
if (!features.empty() && (BasePackageName == features[0]))
{
Version = SplitVersion(features, package_version);
if (Version.empty())
if (0 == Version)
{
CpuID = ARCH_UNKNOWN;
Platform = PLATFORM_UNKNOWN;
@@ -392,14 +415,24 @@ InstallPath(install_path)
Platform = SplitPlatfrom(features);
if (PLATFORM_UNKNOWN != Platform)
{
CpuID = 0;
switch (Platform)
{
case PLATFORM_TEGRA2:
{
CpuID = ARCH_ARMv7 | FEATURES_HAS_VFPv3d16;
} break;
case PLATFORM_TEGRA3:
{
CpuID = ARCH_ARMv7 | FEATURES_HAS_VFPv3 | FEATURES_HAS_NEON;
} break;
}
}
else
{
if (features.size() < 3)
{
LOGD("It is not OpenCV library package for this platform");
Version.clear();
Version = 0;
CpuID = ARCH_UNKNOWN;
Platform = PLATFORM_UNKNOWN;
return;
@@ -433,7 +466,7 @@ InstallPath(install_path)
else
{
LOGD("It is not OpenCV library package for this platform");
Version.clear();
Version = 0;
CpuID = ARCH_UNKNOWN;
Platform = PLATFORM_UNKNOWN;
return;
@@ -443,7 +476,7 @@ InstallPath(install_path)
else
{
LOGD("It is not OpenCV library package for this platform");
Version.clear();
Version = 0;
CpuID = ARCH_UNKNOWN;
Platform = PLATFORM_UNKNOWN;
return;
@@ -452,7 +485,7 @@ InstallPath(install_path)
bool PackageInfo::IsValid() const
{
return !(Version.empty() && (PLATFORM_UNKNOWN == Platform) && (ARCH_UNKNOWN == CpuID));
return !((0 == Version) && (PLATFORM_UNKNOWN == Platform) && (ARCH_UNKNOWN == CpuID));
}
int PackageInfo::GetPlatform() const
@@ -470,7 +503,7 @@ string PackageInfo::GetFullName() const
return FullName;
}
string PackageInfo::GetVersion() const
int PackageInfo::GetVersion() const
{
return Version;
}
@@ -483,4 +516,4 @@ string PackageInfo::GetInstalationPath() const
bool PackageInfo::operator==(const PackageInfo& package) const
{
return (package.FullName == FullName);
}
}
@@ -30,10 +30,10 @@
class PackageInfo
{
public:
PackageInfo(const std::string& version, int platform, int cpu_id, std::string install_path = "/data/data/");
PackageInfo(int version, int platform, int cpu_id, std::string install_path = "/data/data/");
PackageInfo(const std::string& fullname, const std::string& install_path, std::string package_version = "0.0");
std::string GetFullName() const;
std::string GetVersion() const;
int GetVersion() const;
int GetPlatform() const;
int GetCpuID() const;
std::string GetInstalationPath() const;
@@ -43,7 +43,7 @@ public:
protected:
static std::map<int, std::string> InitPlatformNameMap();
std::string Version;
int Version;
int Platform;
int CpuID;
std::string FullName;
@@ -51,4 +51,4 @@ protected:
static const std::string BasePackageName;
};
#endif
#endif
@@ -111,7 +111,6 @@ TEST(Split, SplitMultiElementString)
TEST(CpuCount, CheckNonZero)
{
EXPECT_TRUE(GetProcessorCount() != 0);
EXPECT_TRUE(a.find("") == a.end());
}
TEST(GetCpuInfo, GetCpuInfo)
@@ -127,7 +126,7 @@ TEST(CpuID, CheckNotEmpy)
EXPECT_NE(0, cpu_id);
}
#ifdef __i386__
#if defined(__i386__)
TEST(CpuID, CheckX86)
{
int cpu_id = GetCpuID();
@@ -139,14 +138,14 @@ TEST(CpuID, CheckSSE2)
int cpu_id = GetCpuID();
EXPECT_TRUE(cpu_id & FEATURES_HAS_SSE2);
}
#elseif __mips
#ifdef __SUPPORT_MIPS
TEST(CpuID, CheckMips)
{
#elif defined(__mips)
#ifdef __SUPPORT_MIPS
TEST(CpuID, CheckMips)
{
int cpu_id = GetCpuID();
EXPECT_TRUE(cpu_id & ARCH_MIPS);
}
#endif
}
#endif
#else
TEST(TegraDetector, Detect)
{
@@ -175,4 +174,4 @@ TEST(PlatfromDetector, CheckTegra)
{
EXPECT_NE(PLATFORM_UNKNOWN, DetectKnownPlatforms());
}
#endif
#endif
@@ -69,7 +69,7 @@ TEST(OpenCVEngineTest, GetPathForExecHWExistVersion)
{
sp<IOpenCVEngine> Engine = InitConnect();
Starter.PackageManager->InstalledPackages.clear();
Starter.PackageManager->InstallVersion("240", PLATFORM_UNKNOWN, ARCH_X86);
Starter.PackageManager->InstallVersion(2040000, PLATFORM_UNKNOWN, ARCH_X86);
EXPECT_FALSE(NULL == Engine.get());
String16 result = Engine->GetLibPathByVersion(String16("2.4"));
EXPECT_STREQ("/data/data/org.opencv.lib_v24_x86/lib", String8(result).string());
@@ -79,7 +79,7 @@ TEST(OpenCVEngineTest, GetPathForExecHWOldVersion)
{
sp<IOpenCVEngine> Engine = InitConnect();
Starter.PackageManager->InstalledPackages.clear();
Starter.PackageManager->InstallVersion("242", PLATFORM_UNKNOWN, ARCH_X86);
Starter.PackageManager->InstallVersion(2040200, PLATFORM_UNKNOWN, ARCH_X86);
EXPECT_FALSE(NULL == Engine.get());
String16 result = Engine->GetLibPathByVersion(String16("2.4.1"));
EXPECT_STREQ("/data/data/org.opencv.lib_v24_x86/lib", String8(result).string());
@@ -89,7 +89,7 @@ TEST(OpenCVEngineTest, GetPathForExecHWNewVersion)
{
sp<IOpenCVEngine> Engine = InitConnect();
Starter.PackageManager->InstalledPackages.clear();
Starter.PackageManager->InstallVersion("241", PLATFORM_UNKNOWN, ARCH_X86);
Starter.PackageManager->InstallVersion(2040100, PLATFORM_UNKNOWN, ARCH_X86);
EXPECT_FALSE(NULL == Engine.get());
String16 result = Engine->GetLibPathByVersion(String16("2.4.2"));
EXPECT_EQ(0, result.size());
@@ -100,7 +100,7 @@ TEST(OpenCVEngineTest, GetPathForExecHWExistVersion)
{
sp<IOpenCVEngine> Engine = InitConnect();
Starter.PackageManager->InstalledPackages.clear();
Starter.PackageManager->InstallVersion("240", PLATFORM_UNKNOWN, ARCH_MIPS);
Starter.PackageManager->InstallVersion(2040000, PLATFORM_UNKNOWN, ARCH_MIPS);
EXPECT_FALSE(NULL == Engine.get());
String16 result = Engine->GetLibPathByVersion(String16("2.4"));
EXPECT_STREQ("/data/data/org.opencv.lib_v24_mips/lib", String8(result).string());
@@ -110,7 +110,7 @@ TEST(OpenCVEngineTest, GetPathForExecHWOldVersion)
{
sp<IOpenCVEngine> Engine = InitConnect();
Starter.PackageManager->InstalledPackages.clear();
Starter.PackageManager->InstallVersion("242", PLATFORM_UNKNOWN, ARCH_MIPS);
Starter.PackageManager->InstallVersion(2040200, PLATFORM_UNKNOWN, ARCH_MIPS);
EXPECT_FALSE(NULL == Engine.get());
String16 result = Engine->GetLibPathByVersion(String16("2.4.1"));
EXPECT_STREQ("/data/data/org.opencv.lib_v24_mips/lib", String8(result).string());
@@ -120,7 +120,7 @@ TEST(OpenCVEngineTest, GetPathForExecHWNewVersion)
{
sp<IOpenCVEngine> Engine = InitConnect();
Starter.PackageManager->InstalledPackages.clear();
Starter.PackageManager->InstallVersion("241", PLATFORM_UNKNOWN, ARCH_MIPS);
Starter.PackageManager->InstallVersion(2040100, PLATFORM_UNKNOWN, ARCH_MIPS);
EXPECT_FALSE(NULL == Engine.get());
String16 result = Engine->GetLibPathByVersion(String16("2.4.2"));
EXPECT_EQ(0, result.size());
@@ -131,7 +131,7 @@ TEST(OpenCVEngineTest, GetPathForExecHWExistVersion)
{
sp<IOpenCVEngine> Engine = InitConnect();
Starter.PackageManager->InstalledPackages.clear();
Starter.PackageManager->InstallVersion("240", PLATFORM_TEGRA3, ARCH_ARMv7 | FEATURES_HAS_NEON);
Starter.PackageManager->InstallVersion(2040000, PLATFORM_TEGRA3, ARCH_ARMv7 | FEATURES_HAS_VFPv3 | FEATURES_HAS_NEON);
EXPECT_FALSE(NULL == Engine.get());
String16 result = Engine->GetLibPathByVersion(String16("2.4"));
#ifdef __SUPPORT_TEGRA3
@@ -149,7 +149,7 @@ TEST(OpenCVEngineTest, GetPathForExecHWOldVersion)
{
sp<IOpenCVEngine> Engine = InitConnect();
Starter.PackageManager->InstalledPackages.clear();
Starter.PackageManager->InstallVersion("242", PLATFORM_TEGRA3, ARCH_ARMv7 | FEATURES_HAS_NEON);
Starter.PackageManager->InstallVersion(2040200, PLATFORM_TEGRA3, ARCH_ARMv7 | FEATURES_HAS_VFPv3 | FEATURES_HAS_NEON);
EXPECT_FALSE(NULL == Engine.get());
String16 result = Engine->GetLibPathByVersion(String16("2.4.1"));
#ifdef __SUPPORT_TEGRA3
@@ -167,7 +167,7 @@ TEST(OpenCVEngineTest, GetPathForExecHWNewVersion)
{
sp<IOpenCVEngine> Engine = InitConnect();
Starter.PackageManager->InstalledPackages.clear();
Starter.PackageManager->InstallVersion("241", PLATFORM_TEGRA3, ARCH_ARMv7 | FEATURES_HAS_NEON);
Starter.PackageManager->InstallVersion(2040100, PLATFORM_TEGRA3, ARCH_ARMv7 | FEATURES_HAS_NEON);
EXPECT_FALSE(NULL == Engine.get());
String16 result = Engine->GetLibPathByVersion(String16("2.4.2"));
EXPECT_EQ(0, result.size());
@@ -177,7 +177,7 @@ TEST(OpenCVEngineTest, GetPathForCompatiblePackage1)
{
sp<IOpenCVEngine> Engine = InitConnect();
Starter.PackageManager->InstalledPackages.clear();
Starter.PackageManager->InstallVersion("242", PLATFORM_UNKNOWN, ARCH_ARMv5);
Starter.PackageManager->InstallVersion(2040200, PLATFORM_UNKNOWN, ARCH_ARMv5);
EXPECT_FALSE(NULL == Engine.get());
String16 result = Engine->GetLibPathByVersion(String16("2.4"));
EXPECT_STREQ("/data/data/org.opencv.lib_v24_armv5/lib", String8(result).string());
@@ -187,7 +187,7 @@ TEST(OpenCVEngineTest, GetPathForCompatiblePackage2)
{
sp<IOpenCVEngine> Engine = InitConnect();
Starter.PackageManager->InstalledPackages.clear();
Starter.PackageManager->InstallVersion("242", PLATFORM_TEGRA3, ARCH_ARMv7 | FEATURES_HAS_NEON);
Starter.PackageManager->InstallVersion(2040200, PLATFORM_TEGRA3, ARCH_ARMv7 | FEATURES_HAS_VFPv3 | FEATURES_HAS_NEON);
EXPECT_FALSE(NULL == Engine.get());
String16 result = Engine->GetLibPathByVersion(String16("2.4"));
#ifdef __SUPPORT_TEGRA3
@@ -218,6 +218,66 @@ TEST(OpenCVEngineTest, InstallAndGetVersion)
#endif
#endif
}
TEST(OpenCVEngineTest, GetPathFor2_4_2)
{
sp<IOpenCVEngine> Engine = InitConnect();
Starter.PackageManager->InstalledPackages.clear();
Starter.PackageManager->InstallVersion(2040200, PLATFORM_UNKNOWN, ARCH_ARMv7);
EXPECT_FALSE(NULL == Engine.get());
String16 result = Engine->GetLibPathByVersion(String16("2.4.2"));
EXPECT_STREQ("/data/data/org.opencv.lib_v24_armv7a/lib", String8(result).string());
}
TEST(OpenCVEngineTest, GetPathFor2_4_3)
{
sp<IOpenCVEngine> Engine = InitConnect();
Starter.PackageManager->InstalledPackages.clear();
Starter.PackageManager->InstallVersion(2040300, PLATFORM_UNKNOWN, ARCH_ARMv7);
EXPECT_FALSE(NULL == Engine.get());
String16 result = Engine->GetLibPathByVersion(String16("2.4.3"));
EXPECT_STREQ("/data/data/org.opencv.lib_v24_armv7a/lib", String8(result).string());
}
TEST(OpenCVEngineTest, GetPathFor2_4_3_1)
{
sp<IOpenCVEngine> Engine = InitConnect();
Starter.PackageManager->InstalledPackages.clear();
Starter.PackageManager->InstallVersion(2040301, PLATFORM_UNKNOWN, ARCH_ARMv7);
EXPECT_FALSE(NULL == Engine.get());
String16 result = Engine->GetLibPathByVersion(String16("2.4.3.1"));
EXPECT_STREQ("/data/data/org.opencv.lib_v24_armv7a/lib", String8(result).string());
}
TEST(OpenCVEngineTest, GetPathFor2_4_3_2)
{
sp<IOpenCVEngine> Engine = InitConnect();
Starter.PackageManager->InstalledPackages.clear();
Starter.PackageManager->InstallVersion(2040302, PLATFORM_UNKNOWN, ARCH_ARMv7);
EXPECT_FALSE(NULL == Engine.get());
String16 result = Engine->GetLibPathByVersion(String16("2.4.3.2"));
EXPECT_STREQ("/data/data/org.opencv.lib_v24_armv7a/lib", String8(result).string());
}
TEST(OpenCVEngineTest, GetPathFor2_4_4)
{
sp<IOpenCVEngine> Engine = InitConnect();
Starter.PackageManager->InstalledPackages.clear();
Starter.PackageManager->InstallVersion(2040400, PLATFORM_UNKNOWN, ARCH_ARMv7);
EXPECT_FALSE(NULL == Engine.get());
String16 result = Engine->GetLibPathByVersion(String16("2.4.4"));
EXPECT_STREQ("/data/data/org.opencv.lib_v24_armv7a/lib", String8(result).string());
}
TEST(OpenCVEngineTest, GetPathFor2_4_5)
{
sp<IOpenCVEngine> Engine = InitConnect();
Starter.PackageManager->InstalledPackages.clear();
Starter.PackageManager->InstallVersion(2040500, PLATFORM_UNKNOWN, ARCH_ARMv7);
EXPECT_FALSE(NULL == Engine.get());
String16 result = Engine->GetLibPathByVersion(String16("2.4.5"));
EXPECT_EQ(0, result.size()); // 2.4.5 is not published yet
}
#endif
#ifndef __i386__
@@ -225,7 +285,7 @@ TEST(OpenCVEngineTest, GetPathForInCompatiblePackage1)
{
sp<IOpenCVEngine> Engine = InitConnect();
Starter.PackageManager->InstalledPackages.clear();
Starter.PackageManager->InstallVersion("242", PLATFORM_UNKNOWN, ARCH_X64);
Starter.PackageManager->InstallVersion(2040200, PLATFORM_UNKNOWN, ARCH_X64);
EXPECT_FALSE(NULL == Engine.get());
String16 result = Engine->GetLibPathByVersion(String16("2.4"));
EXPECT_EQ(0, result.size());
@@ -235,7 +295,7 @@ TEST(OpenCVEngineTest, GetPathForInCompatiblePackage1)
{
sp<IOpenCVEngine> Engine = InitConnect();
Starter.PackageManager->InstalledPackages.clear();
Starter.PackageManager->InstallVersion("242", PLATFORM_UNKNOWN, ARCH_ARMv7);
Starter.PackageManager->InstallVersion(2040200, PLATFORM_UNKNOWN, ARCH_ARMv7);
EXPECT_FALSE(NULL == Engine.get());
String16 result = Engine->GetLibPathByVersion(String16("2.4"));
EXPECT_EQ(0, result.size());
@@ -248,4 +308,4 @@ TEST(OpenCVEngineTest, GetPathForUnExistVersion)
EXPECT_FALSE(NULL == Engine.get());
String16 result = Engine->GetLibPathByVersion(String16("2.5"));
EXPECT_EQ(0, result.size());
}
}
@@ -11,14 +11,14 @@ using namespace std;
TEST(PackageInfo, FullNameArmv7)
{
PackageInfo info("230", PLATFORM_UNKNOWN, ARCH_ARMv7);
PackageInfo info(2030000, PLATFORM_UNKNOWN, ARCH_ARMv7);
string name = info.GetFullName();
EXPECT_STREQ("org.opencv.lib_v23_armv7a", name.c_str());
}
TEST(PackageInfo, FullNameArmv7Neon)
{
PackageInfo info("241", PLATFORM_UNKNOWN, ARCH_ARMv7 | FEATURES_HAS_NEON);
PackageInfo info(2040100, PLATFORM_UNKNOWN, ARCH_ARMv7 | FEATURES_HAS_NEON);
string name = info.GetFullName();
#ifdef __SUPPORT_ARMEABI_V7A_FEATURES
EXPECT_STREQ("org.opencv.lib_v24_armv7a_neon", name.c_str());
@@ -29,14 +29,14 @@ TEST(PackageInfo, FullNameArmv7Neon)
TEST(PackageInfo, FullNameArmv7VFPv3)
{
PackageInfo info("233", PLATFORM_UNKNOWN, ARCH_ARMv7 | FEATURES_HAS_VFPv3);
PackageInfo info(2030300, PLATFORM_UNKNOWN, ARCH_ARMv7 | FEATURES_HAS_VFPv3);
string name = info.GetFullName();
EXPECT_STREQ("org.opencv.lib_v23_armv7a", name.c_str());
}
TEST(PackageInfo, FullNameArmv7VFPv3Neon)
{
PackageInfo info("230", PLATFORM_UNKNOWN, ARCH_ARMv7 | FEATURES_HAS_VFPv3 | FEATURES_HAS_NEON);
PackageInfo info(2030000, PLATFORM_UNKNOWN, ARCH_ARMv7 | FEATURES_HAS_VFPv3 | FEATURES_HAS_NEON);
string name = info.GetFullName();
#ifdef __SUPPORT_ARMEABI_V7A_FEATURES
EXPECT_STREQ("org.opencv.lib_v23_armv7a_neon", name.c_str());
@@ -47,21 +47,21 @@ TEST(PackageInfo, FullNameArmv7VFPv3Neon)
TEST(PackageInfo, FullNameArmv5)
{
PackageInfo info("230", PLATFORM_UNKNOWN, ARCH_ARMv5);
PackageInfo info(2030000, PLATFORM_UNKNOWN, ARCH_ARMv5);
string name = info.GetFullName();
EXPECT_STREQ("org.opencv.lib_v23_armv5", name.c_str());
}
TEST(PackageInfo, FullNameArmv6)
{
PackageInfo info("230", PLATFORM_UNKNOWN, ARCH_ARMv6);
PackageInfo info(2030000, PLATFORM_UNKNOWN, ARCH_ARMv6);
string name = info.GetFullName();
EXPECT_STREQ("org.opencv.lib_v23_armv5", name.c_str());
}
TEST(PackageInfo, FullNameArmv6VFPv3)
{
PackageInfo info("232", PLATFORM_UNKNOWN, ARCH_ARMv6 | FEATURES_HAS_VFPv3);
PackageInfo info(2030200, PLATFORM_UNKNOWN, ARCH_ARMv6 | FEATURES_HAS_VFPv3);
string name = info.GetFullName();
#ifdef __SUPPORT_ARMEABI_FEATURES
EXPECT_STREQ("org.opencv.lib_v23_armv5_vfpv3", name.c_str());
@@ -72,7 +72,7 @@ TEST(PackageInfo, FullNameArmv6VFPv3)
TEST(PackageInfo, FullNameTegra3)
{
PackageInfo info("230", PLATFORM_TEGRA3, ARCH_ARMv7 | FEATURES_HAS_NEON);
PackageInfo info(2030000, PLATFORM_TEGRA3, ARCH_ARMv7 | FEATURES_HAS_NEON);
string name = info.GetFullName();
#ifdef __SUPPORT_TEGRA3
EXPECT_STREQ("org.opencv.lib_v23_tegra3", name.c_str());
@@ -87,7 +87,7 @@ TEST(PackageInfo, FullNameTegra3)
TEST(PackageInfo, FullNameX86SSE2)
{
PackageInfo info("230", PLATFORM_UNKNOWN, ARCH_X86 | FEATURES_HAS_SSE2);
PackageInfo info(2030000, PLATFORM_UNKNOWN, ARCH_X86 | FEATURES_HAS_SSE2);
string name = info.GetFullName();
#ifdef __SUPPORT_INTEL_FEATURES
EXPECT_STREQ("org.opencv.lib_v23_x86_sse2", name.c_str());
@@ -99,7 +99,7 @@ TEST(PackageInfo, FullNameX86SSE2)
#ifdef __SUPPORT_MIPS
TEST(PackageInfo, FullNameMips)
{
PackageInfo info("243", PLATFORM_UNKNOWN, ARCH_MIPS);
PackageInfo info(2040300, PLATFORM_UNKNOWN, ARCH_MIPS);
string name = info.GetFullName();
EXPECT_STREQ("org.opencv.lib_v24_mips", name.c_str());
}
@@ -108,21 +108,21 @@ TEST(PackageInfo, FullNameMips)
TEST(PackageInfo, Armv7NeonFromFullName)
{
PackageInfo info("org.opencv.lib_v23_armv7a_neon", "/data/data/org.opencv.lib_v23_armv7_neon");
EXPECT_EQ("230", info.GetVersion());
EXPECT_EQ(2030000, info.GetVersion());
EXPECT_EQ(ARCH_ARMv7 | FEATURES_HAS_NEON, info.GetCpuID());
}
TEST(PackageInfo, Armv5FromFullName)
{
PackageInfo info("org.opencv.lib_v23_armv5", "/data/data/org.opencv.lib_v23_armv5");
EXPECT_EQ("230", info.GetVersion());
EXPECT_EQ(2030000, info.GetVersion());
EXPECT_EQ(ARCH_ARMv5, info.GetCpuID());
}
TEST(PackageInfo, Armv5VFPv3FromFullName)
{
PackageInfo info("org.opencv.lib_v23_armv5_vfpv3", "/data/data/org.opencv.lib_v23_armv5_vfpv3");
EXPECT_EQ("230", info.GetVersion());
EXPECT_EQ(2030000, info.GetVersion());
EXPECT_EQ(ARCH_ARMv5 | FEATURES_HAS_VFPv3, info.GetCpuID());
}
@@ -131,20 +131,20 @@ TEST(PackageInfo, X86SSE2FromFullName)
PackageInfo info("org.opencv.lib_v24_x86_sse2", "/data/data/org.opencv.lib_v24_x86_sse2");
EXPECT_EQ(PLATFORM_UNKNOWN, info.GetPlatform());
EXPECT_EQ(ARCH_X86 | FEATURES_HAS_SSE2, info.GetCpuID());
EXPECT_EQ("240", info.GetVersion());
EXPECT_EQ(2040000, info.GetVersion());
}
TEST(PackageInfo, Tegra2FromFullName)
{
PackageInfo info("org.opencv.lib_v23_tegra2", "/data/data/org.opencv.lib_v23_tegra2");
EXPECT_EQ("230", info.GetVersion());
EXPECT_EQ(2030000, info.GetVersion());
EXPECT_EQ(PLATFORM_TEGRA2, info.GetPlatform());
}
TEST(PackageInfo, Tegra3FromFullName)
{
PackageInfo info("org.opencv.lib_v24_tegra3", "/data/data/org.opencv.lib_v24_tegra3");
EXPECT_EQ("240", info.GetVersion());
EXPECT_EQ(2040000, info.GetVersion());
EXPECT_EQ(PLATFORM_TEGRA3, info.GetPlatform());
}
@@ -152,14 +152,28 @@ TEST(PackageInfo, Tegra3FromFullName)
TEST(PackageInfo, MipsFromFullName)
{
PackageInfo info("org.opencv.lib_v24_mips", "/data/data/org.opencv.lib_v24_mips");
EXPECT_EQ("240", info.GetVersion());
EXPECT_EQ(2040000, info.GetVersion());
EXPECT_EQ(ARCH_MIPS, info.GetCpuID());
}
#endif
TEST(PackageInfo, Check2DigitRevision)
{
PackageInfo info("org.opencv.lib_v23_armv7a_neon", "/data/data/org.opencv.lib_v23_armv7_neon", "4.1");
EXPECT_EQ(2030400, info.GetVersion());
EXPECT_EQ(ARCH_ARMv7 | FEATURES_HAS_NEON, info.GetCpuID());
}
TEST(PackageInfo, Check3DigitRevision)
{
PackageInfo info("org.opencv.lib_v23_armv7a_neon", "/data/data/org.opencv.lib_v23_armv7_neon", "4.1.5");
EXPECT_EQ(2030401, info.GetVersion());
EXPECT_EQ(ARCH_ARMv7 | FEATURES_HAS_NEON, info.GetCpuID());
}
TEST(PackageInfo, Comparator1)
{
PackageInfo info1("240", PLATFORM_UNKNOWN, ARCH_X86);
PackageInfo info1(2040000, PLATFORM_UNKNOWN, ARCH_X86);
PackageInfo info2("org.opencv.lib_v24_x86", "/data/data/org.opencv.lib_v24_x86");
EXPECT_STREQ(info1.GetFullName().c_str(), info2.GetFullName().c_str());
EXPECT_EQ(info1, info2);
@@ -167,7 +181,7 @@ TEST(PackageInfo, Comparator1)
TEST(PackageInfo, Comparator2)
{
PackageInfo info1("240", PLATFORM_UNKNOWN, ARCH_ARMv7 | FEATURES_HAS_NEON | FEATURES_HAS_VFPv3);
PackageInfo info1(2040000, PLATFORM_UNKNOWN, ARCH_ARMv7 | FEATURES_HAS_NEON | FEATURES_HAS_VFPv3);
#ifdef __SUPPORT_ARMEABI_V7A_FEATURES
PackageInfo info2("org.opencv.lib_v24_armv7a_neon", "/data/data/org.opencv.lib_v24_armv7a_neon");
#else
@@ -180,7 +194,7 @@ TEST(PackageInfo, Comparator2)
#ifdef __SUPPORT_TEGRA3
TEST(PackageInfo, Comparator3)
{
PackageInfo info1("230", PLATFORM_TEGRA3, 0);
PackageInfo info1(2030000, PLATFORM_TEGRA3, 0);
PackageInfo info2("org.opencv.lib_v23_tegra3", "/data/data/org.opencv.lib_v23_tegra3");
EXPECT_STREQ(info1.GetFullName().c_str(), info2.GetFullName().c_str());
EXPECT_EQ(info1, info2);
@@ -5,7 +5,6 @@
#include "IOpenCVEngine.h"
#include <utils/String16.h>
#include <gtest/gtest.h>
#include <set>
#include <string>
#include <vector>
@@ -14,52 +13,52 @@ using namespace std;
TEST(PackageManager, InstalledVersions)
{
PackageManagerStub pm;
PackageInfo info("230", PLATFORM_UNKNOWN, ARCH_ARMv7);
PackageInfo info(2030000, PLATFORM_UNKNOWN, ARCH_ARMv7);
pm.InstalledPackages.push_back(info);
std::set<string> versions = pm.GetInstalledVersions();
std::vector<int> versions = pm.GetInstalledVersions();
EXPECT_EQ(1, versions.size());
EXPECT_EQ("230", *versions.begin());
EXPECT_EQ(2030000, *versions.begin());
}
TEST(PackageManager, CheckVersionInstalled)
{
PackageManagerStub pm;
PackageInfo info("230", PLATFORM_UNKNOWN, ARCH_ARMv7);
PackageInfo info(2030000, PLATFORM_UNKNOWN, ARCH_ARMv7);
pm.InstalledPackages.push_back(info);
EXPECT_TRUE(pm.CheckVersionInstalled("230", PLATFORM_UNKNOWN, ARCH_ARMv7));
EXPECT_TRUE(pm.CheckVersionInstalled(2030000, PLATFORM_UNKNOWN, ARCH_ARMv7));
}
TEST(PackageManager, InstallVersion)
{
PackageManagerStub pm;
PackageInfo info("230", PLATFORM_UNKNOWN, ARCH_ARMv5);
PackageInfo info(2030000, PLATFORM_UNKNOWN, ARCH_ARMv5);
pm.InstalledPackages.push_back(info);
EXPECT_TRUE(pm.InstallVersion("240", PLATFORM_UNKNOWN, ARCH_ARMv5));
EXPECT_TRUE(pm.InstallVersion(2040000, PLATFORM_UNKNOWN, ARCH_ARMv5));
EXPECT_EQ(2, pm.InstalledPackages.size());
EXPECT_TRUE(pm.CheckVersionInstalled("240", PLATFORM_UNKNOWN, ARCH_ARMv5));
EXPECT_TRUE(pm.CheckVersionInstalled(2040000, PLATFORM_UNKNOWN, ARCH_ARMv5));
}
TEST(PackageManager, GetPackagePathForArmv5)
{
PackageManagerStub pm;
EXPECT_TRUE(pm.InstallVersion("243", PLATFORM_UNKNOWN, ARCH_ARMv5));
string path = pm.GetPackagePathByVersion("243", PLATFORM_UNKNOWN, ARCH_ARMv5);
EXPECT_TRUE(pm.InstallVersion(2040300, PLATFORM_UNKNOWN, ARCH_ARMv5));
string path = pm.GetPackagePathByVersion(2040300, PLATFORM_UNKNOWN, ARCH_ARMv5);
EXPECT_STREQ("/data/data/org.opencv.lib_v24_armv5/lib", path.c_str());
}
TEST(PackageManager, GetPackagePathForArmv7)
{
PackageManagerStub pm;
EXPECT_TRUE(pm.InstallVersion("230", PLATFORM_UNKNOWN, ARCH_ARMv7));
string path = pm.GetPackagePathByVersion("230", PLATFORM_UNKNOWN, ARCH_ARMv7);
EXPECT_TRUE(pm.InstallVersion(2030000, PLATFORM_UNKNOWN, ARCH_ARMv7));
string path = pm.GetPackagePathByVersion(2030000, PLATFORM_UNKNOWN, ARCH_ARMv7);
EXPECT_STREQ("/data/data/org.opencv.lib_v23_armv7a/lib", path.c_str());
}
TEST(PackageManager, GetPackagePathForArmv7Neon)
{
PackageManagerStub pm;
EXPECT_TRUE(pm.InstallVersion("230", PLATFORM_UNKNOWN, ARCH_ARMv7 | FEATURES_HAS_NEON));
string path = pm.GetPackagePathByVersion("230", PLATFORM_UNKNOWN, ARCH_ARMv7 | FEATURES_HAS_NEON);
EXPECT_TRUE(pm.InstallVersion(2030000, PLATFORM_UNKNOWN, ARCH_ARMv7 | FEATURES_HAS_NEON));
string path = pm.GetPackagePathByVersion(2030000, PLATFORM_UNKNOWN, ARCH_ARMv7 | FEATURES_HAS_NEON);
#ifdef __SUPPORT_ARMEABI_V7A_FEATURES
EXPECT_STREQ("/data/data/org.opencv.lib_v23_armv7a_neon/lib", path.c_str());
#else
@@ -70,16 +69,16 @@ TEST(PackageManager, GetPackagePathForArmv7Neon)
TEST(PackageManager, GetPackagePathForX86)
{
PackageManagerStub pm;
EXPECT_TRUE(pm.InstallVersion("230", PLATFORM_UNKNOWN, ARCH_X86));
string path = pm.GetPackagePathByVersion("230", PLATFORM_UNKNOWN, ARCH_X86);
EXPECT_TRUE(pm.InstallVersion(2030000, PLATFORM_UNKNOWN, ARCH_X86));
string path = pm.GetPackagePathByVersion(2030000, PLATFORM_UNKNOWN, ARCH_X86);
EXPECT_STREQ("/data/data/org.opencv.lib_v23_x86/lib", path.c_str());
}
TEST(PackageManager, GetPackagePathForX86SSE2)
{
PackageManagerStub pm;
EXPECT_TRUE(pm.InstallVersion("230", PLATFORM_UNKNOWN, ARCH_X86 | FEATURES_HAS_SSE2));
string path = pm.GetPackagePathByVersion("230", PLATFORM_UNKNOWN, ARCH_X86 | FEATURES_HAS_SSE2);
EXPECT_TRUE(pm.InstallVersion(2030000, PLATFORM_UNKNOWN, ARCH_X86 | FEATURES_HAS_SSE2));
string path = pm.GetPackagePathByVersion(2030000, PLATFORM_UNKNOWN, ARCH_X86 | FEATURES_HAS_SSE2);
#ifdef __SUPPORT_INTEL_FEATURES
EXPECT_STREQ("/data/data/org.opencv.lib_v23_x86_sse2/lib", path.c_str());
#else
@@ -90,8 +89,8 @@ TEST(PackageManager, GetPackagePathForX86SSE2)
TEST(PackageManager, GetPackagePathForTegra3)
{
PackageManagerStub pm;
EXPECT_TRUE(pm.InstallVersion("230", PLATFORM_TEGRA3, ARCH_ARMv7 | FEATURES_HAS_NEON));
string path = pm.GetPackagePathByVersion("230", PLATFORM_TEGRA3, ARCH_ARMv7 | FEATURES_HAS_NEON);
EXPECT_TRUE(pm.InstallVersion(2030000, PLATFORM_TEGRA3, ARCH_ARMv7 | FEATURES_HAS_VFPv3 | FEATURES_HAS_NEON));
string path = pm.GetPackagePathByVersion(2030000, PLATFORM_TEGRA3, ARCH_ARMv7 | FEATURES_HAS_VFPv3 | FEATURES_HAS_NEON);
#ifdef __SUPPORT_TEGRA3
EXPECT_STREQ("/data/data/org.opencv.lib_v23_tegra3/lib", path.c_str());
#else
@@ -107,8 +106,8 @@ TEST(PackageManager, GetPackagePathForTegra3)
TEST(PackageManager, GetPackagePathForMips)
{
PackageManagerStub pm;
EXPECT_TRUE(pm.InstallVersion("243", PLATFORM_UNKNOWN, ARCH_MIPS));
string path = pm.GetPackagePathByVersion("243", PLATFORM_UNKNOWN, ARCH_MIPS);
EXPECT_TRUE(pm.InstallVersion(2040000, PLATFORM_UNKNOWN, ARCH_MIPS));
string path = pm.GetPackagePathByVersion(2040000, PLATFORM_UNKNOWN, ARCH_MIPS);
EXPECT_STREQ("/data/data/org.opencv.lib_v24_mips/lib", path.c_str());
}
#endif
+1 -1
Ver Arquivo
@@ -36,7 +36,7 @@ LOCAL_CFLAGS += -D__SUPPORT_TEGRA3
LOCAL_CFLAGS += -D__SUPPORT_MIPS
#LOCAL_CFLAGS += -D__SUPPORT_ARMEABI_FEATURES
LOCAL_LDFLAGS = -Wl,-allow-shlib-undefined
#LOCAL_LDFLAGS = -Wl,-allow-shlib-undefined
LOCAL_MODULE := OpenCVEngineTestApp
@@ -5,10 +5,18 @@
#undef LOG_TAG
#define LOG_TAG "OpenCVEngine"
// OpenCV Engine API version
#ifndef OPEN_CV_ENGINE_VERSION
#define OPEN_CV_ENGINE_VERSION 2
#endif
#define LIB_OPENCV_INFO_NAME "libopencv_info.so"
// OpenCV Manager package name
#define OPENCV_ENGINE_PACKAGE "org.opencv.engine"
// Class name of OpenCV engine binder object. Is needned for connection to service
#define OPECV_ENGINE_CLASSNAME "org.opencv.engine.OpenCVEngineInterface"
typedef const char* (*InfoFunctionType)();
#endif
@@ -4,11 +4,7 @@
#include <binder/IInterface.h>
#include <binder/Parcel.h>
#include <utils/String16.h>
// OpenCV Manager package name
#define OPENCV_ENGINE_PACKAGE "org.opencv.engine"
// Class name of OpenCV engine binder object. Is needned for connection to service
#define OPECV_ENGINE_CLASSNAME "org.opencv.engine.OpenCVEngineInterface"
#include "EngineCommon.h"
enum EngineMethonID
{
@@ -1,17 +1,17 @@
#ifndef __IPACKAGE_MANAGER__
#define __IPACKAGE_MANAGER__
#include <set>
#include <vector>
#include <string>
class IPackageManager
{
public:
virtual std::set<std::string> GetInstalledVersions() = 0;
virtual bool CheckVersionInstalled(const std::string& version, int platform, int cpu_id) = 0;
virtual bool InstallVersion(const std::string&, int platform, int cpu_id) = 0;
virtual std::string GetPackagePathByVersion(const std::string&, int platform, int cpu_id) = 0;
virtual std::vector<int> GetInstalledVersions() = 0;
virtual bool CheckVersionInstalled(int version, int platform, int cpu_id) = 0;
virtual bool InstallVersion(int version, int platform, int cpu_id) = 0;
virtual std::string GetPackagePathByVersion(int version, int platform, int cpu_id) = 0;
virtual ~IPackageManager(){};
};
#endif
#endif
+1 -1
Ver Arquivo
@@ -11,4 +11,4 @@
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
# Project target.
target=android-8
target=android-9
+1 -1
Ver Arquivo
@@ -26,7 +26,7 @@
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Version: "
android:text="Library version: "
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
+1 -1
Ver Arquivo
@@ -30,7 +30,7 @@
android:id="@+id/EngineVersionCaption"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Version: "
android:text="OpenCV Manager version: "
android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
@@ -20,8 +20,6 @@ public class MarketConnector
private static final String TAG = "OpenCVEngine/MarketConnector";
protected Context mContext;
public boolean mIncludeManager = true;
public MarketConnector(Context context)
{
mContext = context;
@@ -100,15 +98,13 @@ public class MarketConnector
{
List<PackageInfo> AllPackages = mContext.getPackageManager().getInstalledPackages(PackageManager.GET_CONFIGURATIONS);
List<PackageInfo> OpenCVPackages = new ArrayList<PackageInfo>();
if (mIncludeManager)
{
try {
OpenCVPackages.add(mContext.getPackageManager().getPackageInfo("org.opencv.engine", PackageManager.GET_CONFIGURATIONS));
} catch (NameNotFoundException e) {
Log.e(TAG, "OpenCV Manager package info was not found!");
e.printStackTrace();
}
try {
OpenCVPackages.add(mContext.getPackageManager().getPackageInfo("org.opencv.engine", PackageManager.GET_CONFIGURATIONS));
} catch (NameNotFoundException e) {
Log.e(TAG, "OpenCV Manager package info was not found!");
e.printStackTrace();
}
Iterator<PackageInfo> it = AllPackages.iterator();
while(it.hasNext())
{
@@ -0,0 +1,40 @@
package org.opencv.engine;
public class OpenCVLibraryInfo {
public OpenCVLibraryInfo(String packagePath) {
mNativeObj = open(packagePath + "/libopencv_info.so");
if (mNativeObj != 0) {
mPackageName = getPackageName(mNativeObj);
mLibraryList = getLibraryList(mNativeObj);
mVersionName = getVersionName(mNativeObj);
close(mNativeObj);
}
}
public boolean status() {
return (mNativeObj != 0);
}
public String packageName() {
return mPackageName;
}
public String libraryList() {
return mLibraryList;
}
public String versionName() {
return mVersionName;
}
private long mNativeObj;
private String mPackageName;
private String mLibraryList;
private String mVersionName;
private native long open(String packagePath);
private native String getPackageName(long obj);
private native String getLibraryList(long obj);
private native String getVersionName(long obj);
private native void close(long obj);
}
@@ -7,7 +7,9 @@ import java.util.StringTokenizer;
import org.opencv.engine.HardwareDetector;
import org.opencv.engine.MarketConnector;
import org.opencv.engine.OpenCVEngineInterface;
import org.opencv.engine.OpenCVLibraryInfo;
import org.opencv.engine.R;
import android.annotation.TargetApi;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.BroadcastReceiver;
@@ -77,7 +79,7 @@ public class ManagerActivity extends Activity
{
HardwarePlatformView.setText("Tegra");
}
else if (HardwareDetector.PLATFORM_TEGRA == Platfrom)
else if (HardwareDetector.PLATFORM_TEGRA2 == Platfrom)
{
HardwarePlatformView.setText("Tegra 2");
}
@@ -170,9 +172,13 @@ public class ManagerActivity extends Activity
mInstalledPackageView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long id) {
mInstalledPackageView.setTag(Integer.valueOf((int)id));
mActionDialog.show();
public void onItemClick(AdapterView<?> adapter, View view, int position, long id) {
//if (!mListViewItems.get((int) id).get("Name").equals("Built-in OpenCV library"));
if (!mInstalledPackageInfo[(int) id].packageName.equals("org.opencv.engine"))
{
mInstalledPackageView.setTag(Integer.valueOf((int)id));
mActionDialog.show();
}
}
});
@@ -232,8 +238,6 @@ public class ManagerActivity extends Activity
protected class OpenCVEngineServiceConnection implements ServiceConnection
{
public void onServiceDisconnected(ComponentName name) {
// TODO Auto-generated method stub
}
public void onServiceConnected(ComponentName name, IBinder service) {
@@ -266,23 +270,57 @@ public class ManagerActivity extends Activity
}
};
@TargetApi(Build.VERSION_CODES.GINGERBREAD)
synchronized protected void FillPackageList()
{
synchronized (mListViewItems) {
mMarket.mIncludeManager = false;
mInstalledPackageInfo = mMarket.GetInstalledOpenCVPackages();
mListViewItems.clear();
for (int i = 0; i < mInstalledPackageInfo.length; i++)
int RealPackageCount = mInstalledPackageInfo.length;
for (int i = 0; i < RealPackageCount; i++)
{
if (mInstalledPackageInfo[i] == null)
break;
// Convert to Items for package list view
HashMap<String,String> temp = new HashMap<String,String>();
String HardwareName = "";
String NativeLibDir = "";
String OpenCVersion = "";
String PublicName = mMarket.GetApplicationName(mInstalledPackageInfo[i].applicationInfo);
String PackageName = mInstalledPackageInfo[i].packageName;
String VersionName = mInstalledPackageInfo[i].versionName;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD)
NativeLibDir = mInstalledPackageInfo[i].applicationInfo.nativeLibraryDir;
else
NativeLibDir = "/data/data/" + mInstalledPackageInfo[i].packageName + "/lib";
if (PackageName.equals("org.opencv.engine"))
{
OpenCVLibraryInfo NativeInfo = new OpenCVLibraryInfo(NativeLibDir);
if (NativeInfo.status())
{
PublicName = "Built-in OpenCV library";
PackageName = NativeInfo.packageName();
VersionName = NativeInfo.versionName();
}
else
{
mInstalledPackageInfo[i] = mInstalledPackageInfo[RealPackageCount-1];
mInstalledPackageInfo[RealPackageCount-1] = null;
RealPackageCount--;
i--;
continue;
}
}
int idx = 0;
String OpenCVersion = "unknown";
String HardwareName = "";
StringTokenizer tokenizer = new StringTokenizer(mInstalledPackageInfo[i].packageName, "_");
Log.d(TAG, PackageName);
StringTokenizer tokenizer = new StringTokenizer(PackageName, "_");
while (tokenizer.hasMoreTokens())
{
if (idx == 1)
@@ -303,21 +341,22 @@ public class ManagerActivity extends Activity
}
String ActivePackagePath;
String Tags = null;
ActivePackagePath = mActivePackageMap.get(OpenCVersion);
Log.d(TAG, OpenCVersion + " -> " + ActivePackagePath);
if (null != ActivePackagePath)
{
int start = ActivePackagePath.indexOf(mInstalledPackageInfo[i].packageName);
int stop = start + mInstalledPackageInfo[i].packageName.length();
if (start >= 0 && ActivePackagePath.charAt(stop) == '/')
if (ActivePackagePath.equals(NativeLibDir))
{
temp.put("Activity", "y");
PublicName += " (in use)";
Tags = "active";
}
else
{
temp.put("Activity", "n");
if (!PublicName.equals("Built-in OpenCV library"))
Tags = "safe to remove";
}
}
else
@@ -325,9 +364,32 @@ public class ManagerActivity extends Activity
temp.put("Activity", "n");
}
temp.put("Version", NormalizeVersion(OpenCVersion, VersionName));
// HACK: OpenCV Manager for Armv7-a Neon already has Tegra3 optimizations
// that is enabled on proper hardware
if (HardwareDetector.DetectKnownPlatforms() == HardwareDetector.PLATFORM_TEGRA3 &&
HardwareName.equals("armv7a neon ") && Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD)
{
temp.put("Hardware", "Tegra 3");
if (Tags == null)
{
Tags = "optimized";
}
else
{
Tags = Tags + ", optimized";
}
}
else
{
temp.put("Hardware", HardwareName);
}
if (Tags != null)
PublicName = PublicName + " (" + Tags + ")";
temp.put("Name", PublicName);
temp.put("Version", NormalizeVersion(OpenCVersion, mInstalledPackageInfo[i].versionName));
temp.put("Hardware", HardwareName);
mListViewItems.add(temp);
}
@@ -337,10 +399,25 @@ public class ManagerActivity extends Activity
protected String NormalizeVersion(String OpenCVersion, String PackageVersion)
{
int dot = PackageVersion.indexOf(".");
return OpenCVersion.substring(0, OpenCVersion.length()-1) + "." +
OpenCVersion.toCharArray()[OpenCVersion.length()-1] + "." +
PackageVersion.substring(0, dot) + " rev " + PackageVersion.substring(dot+1);
if (OpenCVersion == null || PackageVersion == null)
return "unknown";
String[] revisions = PackageVersion.split("\\.");
if (revisions.length <= 1 || OpenCVersion.length() == 0)
return "unknown";
else
if (revisions.length == 2)
// the 2nd digit is revision
return OpenCVersion.substring(0, OpenCVersion.length()-1) + "." +
OpenCVersion.toCharArray()[OpenCVersion.length()-1] + "." +
revisions[0] + " rev " + revisions[1];
else
// the 2nd digit is part of library version
// the 3rd digit is revision
return OpenCVersion.substring(0, OpenCVersion.length()-1) + "." +
OpenCVersion.toCharArray()[OpenCVersion.length()-1] + "." +
revisions[0] + "." + revisions[1] + " rev " + revisions[2];
}
protected String ConvertPackageName(String Name, String Version)
+33
Ver Arquivo
@@ -0,0 +1,33 @@
How to select the proper version of OpenCV Manager
--------------------------------------------------
Since version 1.7 several packages of OpenCV Manager are built. Every package is targeted for some
specific hardware platform and includes corresponding OpenCV binaries. So, in most cases OpenCV
Manager uses built-in version of OpenCV. Separate package with OpenCV binaries is currently used in
a single rare case, when an ARMv7-A processor without NEON support is detected. In this case an
additional binary package is used. The new package selection logic in most cases simplifies OpenCV
installation on end user devices. In most cases OpenCV Manager may be installed automatically from
Google Play.
If Google Play is not available (i.e. on emulator, developer board, etc), you can install it
manually using adb tool:
.. code-block:: sh
adb install OpenCV-2.4.4-android-sdk/apk/OpenCV_2.4.4_Manager_2.6_<platform>.apk
Use the table below to determine proper OpenCV Manager package for your device:
+------------------------------+--------------+---------------------------------------------------+
| Hardware Platform | Android ver. | Package name |
+==============================+==============+===================================================+
| armeabi-v7a (ARMv7-A + NEON) | >= 2.3 | OpenCV_2.4.4_Manager_2.6_armv7a-neon.apk |
+------------------------------+--------------+---------------------------------------------------+
| armeabi-v7a (ARMv7-A + NEON) | = 2.2 | OpenCV_2.4.4_Manager_2.6_armv7a-neon-android8.apk |
+------------------------------+--------------+---------------------------------------------------+
| armeabi (ARMv5, ARMv6) | >= 2.3 | OpenCV_2.4.4_Manager_2.6_armeabi.apk |
+------------------------------+--------------+---------------------------------------------------+
| Intel x86 | >= 2.3 | OpenCV_2.4.4_Manager_2.6_x86.apk |
+------------------------------+--------------+---------------------------------------------------+
| MIPS | >= 2.3 | OpenCV_2.4.4_Manager_2.6_mips.apk |
+------------------------------+--------------+---------------------------------------------------+
-4
Ver Arquivo
@@ -1,7 +1,3 @@
if(IOS OR ANDROID)
return()
endif()
SET(OPENCV_HAARTRAINING_DEPS opencv_core opencv_imgproc opencv_highgui opencv_objdetect opencv_calib3d opencv_video opencv_features2d opencv_flann opencv_legacy)
ocv_check_dependencies(${OPENCV_HAARTRAINING_DEPS})
-4
Ver Arquivo
@@ -1,7 +1,3 @@
if(IOS OR ANDROID)
return()
endif()
SET(OPENCV_TRAINCASCADE_DEPS opencv_core opencv_ml opencv_imgproc opencv_objdetect opencv_highgui opencv_calib3d opencv_video opencv_features2d opencv_flann opencv_legacy)
ocv_check_dependencies(${OPENCV_TRAINCASCADE_DEPS})
+47 -26
Ver Arquivo
@@ -360,7 +360,7 @@ CvDTreeNode* CvCascadeBoostTrainData::subsample_data( const CvMat* _subsample_id
if (is_buf_16u)
{
unsigned short* udst_idx = (unsigned short*)(buf->data.s + root->buf_idx*buf->cols +
unsigned short* udst_idx = (unsigned short*)(buf->data.s + root->buf_idx*get_length_subbuf() +
vi*sample_count + data_root->offset);
for( int i = 0; i < num_valid; i++ )
{
@@ -373,7 +373,7 @@ CvDTreeNode* CvCascadeBoostTrainData::subsample_data( const CvMat* _subsample_id
}
else
{
int* idst_idx = buf->data.i + root->buf_idx*buf->cols +
int* idst_idx = buf->data.i + root->buf_idx*get_length_subbuf() +
vi*sample_count + root->offset;
for( int i = 0; i < num_valid; i++ )
{
@@ -390,14 +390,14 @@ CvDTreeNode* CvCascadeBoostTrainData::subsample_data( const CvMat* _subsample_id
const int* src_lbls = get_cv_labels(data_root, (int*)(uchar*)inn_buf);
if (is_buf_16u)
{
unsigned short* udst = (unsigned short*)(buf->data.s + root->buf_idx*buf->cols +
unsigned short* udst = (unsigned short*)(buf->data.s + root->buf_idx*get_length_subbuf() +
(workVarCount-1)*sample_count + root->offset);
for( int i = 0; i < count; i++ )
udst[i] = (unsigned short)src_lbls[sidx[i]];
}
else
{
int* idst = buf->data.i + root->buf_idx*buf->cols +
int* idst = buf->data.i + root->buf_idx*get_length_subbuf() +
(workVarCount-1)*sample_count + root->offset;
for( int i = 0; i < count; i++ )
idst[i] = src_lbls[sidx[i]];
@@ -407,14 +407,14 @@ CvDTreeNode* CvCascadeBoostTrainData::subsample_data( const CvMat* _subsample_id
const int* sample_idx_src = get_sample_indices(data_root, (int*)(uchar*)inn_buf);
if (is_buf_16u)
{
unsigned short* sample_idx_dst = (unsigned short*)(buf->data.s + root->buf_idx*buf->cols +
unsigned short* sample_idx_dst = (unsigned short*)(buf->data.s + root->buf_idx*get_length_subbuf() +
workVarCount*sample_count + root->offset);
for( int i = 0; i < count; i++ )
sample_idx_dst[i] = (unsigned short)sample_idx_src[sidx[i]];
}
else
{
int* sample_idx_dst = buf->data.i + root->buf_idx*buf->cols +
int* sample_idx_dst = buf->data.i + root->buf_idx*get_length_subbuf() +
workVarCount*sample_count + root->offset;
for( int i = 0; i < count; i++ )
sample_idx_dst[i] = sample_idx_src[sidx[i]];
@@ -489,6 +489,10 @@ void CvCascadeBoostTrainData::setData( const CvFeatureEvaluator* _featureEvaluat
int* idst = 0;
unsigned short* udst = 0;
uint64 effective_buf_size = 0;
int effective_buf_height = 0, effective_buf_width = 0;
clear();
shared = true;
have_labels = true;
@@ -548,13 +552,28 @@ void CvCascadeBoostTrainData::setData( const CvFeatureEvaluator* _featureEvaluat
var_type->data.i[var_count] = cat_var_count;
var_type->data.i[var_count+1] = cat_var_count+1;
work_var_count = ( cat_var_count ? 0 : numPrecalcIdx ) + 1/*cv_lables*/;
buf_size = (work_var_count + 1) * sample_count/*sample_indices*/;
buf_count = 2;
if ( is_buf_16u )
buf = cvCreateMat( buf_count, buf_size, CV_16UC1 );
buf_size = -1; // the member buf_size is obsolete
effective_buf_size = (uint64)(work_var_count + 1)*(uint64)sample_count * buf_count; // this is the total size of "CvMat buf" to be allocated
effective_buf_width = sample_count;
effective_buf_height = work_var_count+1;
if (effective_buf_width >= effective_buf_height)
effective_buf_height *= buf_count;
else
buf = cvCreateMat( buf_count, buf_size, CV_32SC1 );
effective_buf_width *= buf_count;
if ((uint64)effective_buf_width * (uint64)effective_buf_height != effective_buf_size)
{
CV_Error(CV_StsBadArg, "The memory buffer cannot be allocated since its size exceeds integer fields limit");
}
if ( is_buf_16u )
buf = cvCreateMat( effective_buf_height, effective_buf_width, CV_16UC1 );
else
buf = cvCreateMat( effective_buf_height, effective_buf_width, CV_32SC1 );
cat_count = cvCreateMat( 1, cat_var_count + 1, CV_32SC1 );
@@ -609,7 +628,7 @@ void CvCascadeBoostTrainData::setData( const CvFeatureEvaluator* _featureEvaluat
priors_mult = cvCloneMat( priors );
counts = cvCreateMat( 1, get_num_classes(), CV_32SC1 );
direction = cvCreateMat( 1, sample_count, CV_8UC1 );
split_buf = cvCreateMat( 1, sample_count, CV_32SC1 );
split_buf = cvCreateMat( 1, sample_count, CV_32SC1 );//TODO: make a pointer
}
void CvCascadeBoostTrainData::free_train_data()
@@ -652,10 +671,10 @@ void CvCascadeBoostTrainData::get_ord_var_data( CvDTreeNode* n, int vi, float* o
if ( vi < numPrecalcIdx )
{
if( !is_buf_16u )
*sortedIndices = buf->data.i + n->buf_idx*buf->cols + vi*sample_count + n->offset;
*sortedIndices = buf->data.i + n->buf_idx*get_length_subbuf() + vi*sample_count + n->offset;
else
{
const unsigned short* shortIndices = (const unsigned short*)(buf->data.s + n->buf_idx*buf->cols +
const unsigned short* shortIndices = (const unsigned short*)(buf->data.s + n->buf_idx*get_length_subbuf() +
vi*sample_count + n->offset );
for( int i = 0; i < nodeSampleCount; i++ )
sortedIndicesBuf[i] = shortIndices[i];
@@ -1027,6 +1046,7 @@ void CvCascadeBoostTree::split_node_data( CvDTreeNode* node )
int newBufIdx = data->get_child_buf_idx( node );
int workVarCount = data->get_work_var_count();
CvMat* buf = data->buf;
size_t length_buf_row = data->get_length_subbuf();
cv::AutoBuffer<uchar> inn_buf(n*(3*sizeof(int)+sizeof(float)));
int* tempBuf = (int*)(uchar*)inn_buf;
bool splitInputData;
@@ -1070,7 +1090,7 @@ void CvCascadeBoostTree::split_node_data( CvDTreeNode* node )
if (data->is_buf_16u)
{
ushort *ldst, *rdst;
ldst = (ushort*)(buf->data.s + left->buf_idx*buf->cols +
ldst = (ushort*)(buf->data.s + left->buf_idx*length_buf_row +
vi*scount + left->offset);
rdst = (ushort*)(ldst + nl);
@@ -1096,9 +1116,9 @@ void CvCascadeBoostTree::split_node_data( CvDTreeNode* node )
else
{
int *ldst, *rdst;
ldst = buf->data.i + left->buf_idx*buf->cols +
ldst = buf->data.i + left->buf_idx*length_buf_row +
vi*scount + left->offset;
rdst = buf->data.i + right->buf_idx*buf->cols +
rdst = buf->data.i + right->buf_idx*length_buf_row +
vi*scount + right->offset;
// split sorted
@@ -1131,9 +1151,9 @@ void CvCascadeBoostTree::split_node_data( CvDTreeNode* node )
if (data->is_buf_16u)
{
unsigned short *ldst = (unsigned short *)(buf->data.s + left->buf_idx*buf->cols +
unsigned short *ldst = (unsigned short *)(buf->data.s + left->buf_idx*length_buf_row +
(workVarCount-1)*scount + left->offset);
unsigned short *rdst = (unsigned short *)(buf->data.s + right->buf_idx*buf->cols +
unsigned short *rdst = (unsigned short *)(buf->data.s + right->buf_idx*length_buf_row +
(workVarCount-1)*scount + right->offset);
for( int i = 0; i < n; i++ )
@@ -1154,9 +1174,9 @@ void CvCascadeBoostTree::split_node_data( CvDTreeNode* node )
}
else
{
int *ldst = buf->data.i + left->buf_idx*buf->cols +
int *ldst = buf->data.i + left->buf_idx*length_buf_row +
(workVarCount-1)*scount + left->offset;
int *rdst = buf->data.i + right->buf_idx*buf->cols +
int *rdst = buf->data.i + right->buf_idx*length_buf_row +
(workVarCount-1)*scount + right->offset;
for( int i = 0; i < n; i++ )
@@ -1184,9 +1204,9 @@ void CvCascadeBoostTree::split_node_data( CvDTreeNode* node )
if (data->is_buf_16u)
{
unsigned short* ldst = (unsigned short*)(buf->data.s + left->buf_idx*buf->cols +
unsigned short* ldst = (unsigned short*)(buf->data.s + left->buf_idx*length_buf_row +
workVarCount*scount + left->offset);
unsigned short* rdst = (unsigned short*)(buf->data.s + right->buf_idx*buf->cols +
unsigned short* rdst = (unsigned short*)(buf->data.s + right->buf_idx*length_buf_row +
workVarCount*scount + right->offset);
for (int i = 0; i < n; i++)
{
@@ -1205,9 +1225,9 @@ void CvCascadeBoostTree::split_node_data( CvDTreeNode* node )
}
else
{
int* ldst = buf->data.i + left->buf_idx*buf->cols +
int* ldst = buf->data.i + left->buf_idx*length_buf_row +
workVarCount*scount + left->offset;
int* rdst = buf->data.i + right->buf_idx*buf->cols +
int* rdst = buf->data.i + right->buf_idx*length_buf_row +
workVarCount*scount + right->offset;
for (int i = 0; i < n; i++)
{
@@ -1352,6 +1372,7 @@ void CvCascadeBoost::update_weights( CvBoostTree* tree )
sampleIdx = data->get_sample_indices( data->data_root, sampleIdxBuf );
}
CvMat* buf = data->buf;
size_t length_buf_row = data->get_length_subbuf();
if( !tree ) // before training the first tree, initialize weights and other parameters
{
int* classLabelsBuf = (int*)cur_inn_buf_pos; cur_inn_buf_pos = (uchar*)(classLabelsBuf + n);
@@ -1375,7 +1396,7 @@ void CvCascadeBoost::update_weights( CvBoostTree* tree )
if (data->is_buf_16u)
{
unsigned short* labels = (unsigned short*)(buf->data.s + data->data_root->buf_idx*buf->cols +
unsigned short* labels = (unsigned short*)(buf->data.s + data->data_root->buf_idx*length_buf_row +
data->data_root->offset + (data->work_var_count-1)*data->sample_count);
for( int i = 0; i < n; i++ )
{
@@ -1393,7 +1414,7 @@ void CvCascadeBoost::update_weights( CvBoostTree* tree )
}
else
{
int* labels = buf->data.i + data->data_root->buf_idx*buf->cols +
int* labels = buf->data.i + data->data_root->buf_idx*length_buf_row +
data->data_root->offset + (data->work_var_count-1)*data->sample_count;
for( int i = 0; i < n; i++ )
+1 -1
Ver Arquivo
@@ -97,7 +97,7 @@ if(CMAKE_COMPILER_IS_GNUCXX)
endif()
# We need pthread's
if(UNIX AND NOT ANDROID)
if(UNIX AND NOT ANDROID AND NOT (APPLE AND CMAKE_COMPILER_IS_CLANGCXX))
add_extra_compiler_option(-pthread)
endif()
+8 -3
Ver Arquivo
@@ -179,7 +179,7 @@ unset(__android_project_chain CACHE)
#add_android_project(target_name ${path} NATIVE_DEPS opencv_core LIBRARY_DEPS ${OpenCV_BINARY_DIR} SDK_TARGET 11)
macro(add_android_project target path)
# parse arguments
set(android_proj_arglist NATIVE_DEPS LIBRARY_DEPS SDK_TARGET IGNORE_JAVA)
set(android_proj_arglist NATIVE_DEPS LIBRARY_DEPS SDK_TARGET IGNORE_JAVA IGNORE_MANIFEST)
set(__varname "android_proj_")
foreach(v ${android_proj_arglist})
set(${__varname}${v} "")
@@ -220,9 +220,13 @@ macro(add_android_project target path)
# get project sources
file(GLOB_RECURSE android_proj_files RELATIVE "${path}" "${path}/res/*" "${path}/src/*")
if(NOT android_proj_IGNORE_MANIFEST)
list(APPEND android_proj_files ${ANDROID_MANIFEST_FILE})
endif()
# copy sources out from the build tree
set(android_proj_file_deps "")
foreach(f ${android_proj_files} ${ANDROID_MANIFEST_FILE})
foreach(f ${android_proj_files})
add_custom_command(
OUTPUT "${android_proj_bin_dir}/${f}"
COMMAND ${CMAKE_COMMAND} -E copy "${path}/${f}" "${android_proj_bin_dir}/${f}"
@@ -298,7 +302,7 @@ macro(add_android_project target path)
COMMAND ${CMAKE_COMMAND} -E touch "${android_proj_bin_dir}/bin/${target}-debug.apk" # needed because ant does not update the timestamp of updated apk
WORKING_DIRECTORY "${android_proj_bin_dir}"
MAIN_DEPENDENCY "${android_proj_bin_dir}/${ANDROID_MANIFEST_FILE}"
DEPENDS "${OpenCV_BINARY_DIR}/bin/.classes.jar.dephelper" opencv_java # as we are part of OpenCV we can just force this dependency
DEPENDS "${OpenCV_BINARY_DIR}/bin/classes.jar.dephelper" opencv_java # as we are part of OpenCV we can just force this dependency
DEPENDS ${android_proj_file_deps} ${JNI_LIB_NAME})
endif()
@@ -324,6 +328,7 @@ macro(add_android_project target path)
install(FILES "${OpenCV_BINARY_DIR}/bin/${target}.apk" DESTINATION "samples" COMPONENT main)
get_filename_component(sample_dir "${path}" NAME)
#java part
list(REMOVE_ITEM android_proj_files ${ANDROID_MANIFEST_FILE})
foreach(f ${android_proj_files} ${ANDROID_MANIFEST_FILE})
get_filename_component(install_subdir "${f}" PATH)
install(FILES "${android_proj_bin_dir}/${f}" DESTINATION "samples/${sample_dir}/${install_subdir}" COMPONENT main)
+68 -20
Ver Arquivo
@@ -3,12 +3,17 @@ if(${CMAKE_VERSION} VERSION_LESS "2.8.3")
return()
endif()
if (NOT MSVC AND NOT CMAKE_COMPILER_IS_GNUCXX OR MINGW)
message(STATUS "CUDA compilation was disabled (due to unsuppoted host compiler).")
if(WIN32 AND NOT MSVC)
message(STATUS "CUDA compilation is disabled (due to only Visual Studio compiler supported on your platform).")
return()
endif()
find_package(CUDA 4.1)
if(CMAKE_COMPILER_IS_GNUCXX AND NOT APPLE AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
message(STATUS "CUDA compilation is disabled (due to Clang unsupported on your platform).")
return()
endif()
find_package(CUDA 4.2 QUIET)
if(CUDA_FOUND)
set(HAVE_CUDA 1)
@@ -21,15 +26,55 @@ if(CUDA_FOUND)
set(HAVE_CUBLAS 1)
endif()
message(STATUS "CUDA detected: " ${CUDA_VERSION})
if(${CUDA_VERSION_STRING} VERSION_GREATER "4.1")
set(CUDA_ARCH_BIN "1.1 1.2 1.3 2.0 2.1(2.0) 3.0" CACHE STRING "Specify 'real' GPU architectures to build binaries for, BIN(PTX) format is supported")
else()
set(CUDA_ARCH_BIN "1.1 1.2 1.3 2.0 2.1(2.0)" CACHE STRING "Specify 'real' GPU architectures to build binaries for, BIN(PTX) format is supported")
if(WITH_NVCUVID)
find_cuda_helper_libs(nvcuvid)
set(HAVE_NVCUVID 1)
endif()
set(CUDA_ARCH_PTX "2.0" CACHE STRING "Specify 'virtual' PTX architectures to build PTX intermediate code for")
message(STATUS "CUDA detected: " ${CUDA_VERSION})
set(_generations "Fermi" "Kepler")
if(NOT CMAKE_CROSSCOMPILING)
list(APPEND _generations "Auto")
endif()
set(CUDA_GENERATION "" CACHE STRING "Build CUDA device code only for specific GPU architecture. Leave empty to build for all architectures.")
if( CMAKE_VERSION VERSION_GREATER "2.8" )
set_property( CACHE CUDA_GENERATION PROPERTY STRINGS "" ${_generations} )
endif()
if(CUDA_GENERATION)
if(NOT ";${_generations};" MATCHES ";${CUDA_GENERATION};")
string(REPLACE ";" ", " _generations "${_generations}")
message(FATAL_ERROR "ERROR: ${_generations} Generations are suppered.")
endif()
unset(CUDA_ARCH_BIN CACHE)
unset(CUDA_ARCH_PTX CACHE)
endif()
set(__cuda_arch_ptx "")
if(CUDA_GENERATION STREQUAL "Fermi")
set(__cuda_arch_bin "2.0 2.1(2.0)")
elseif(CUDA_GENERATION STREQUAL "Kepler")
set(__cuda_arch_bin "3.0")
elseif(CUDA_GENERATION STREQUAL "Auto")
execute_process( COMMAND "${CUDA_NVCC_EXECUTABLE}" "${OpenCV_SOURCE_DIR}/cmake/OpenCVDetectCudaArch.cu" "--run"
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/"
RESULT_VARIABLE _nvcc_res OUTPUT_VARIABLE _nvcc_out
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
if(NOT _nvcc_res EQUAL 0)
message(STATUS "Automatic detection of CUDA generation failed. Going to build for all known architectures.")
else()
set(__cuda_arch_bin "${_nvcc_out}")
endif()
endif()
if(NOT DEFINED __cuda_arch_bin)
set(__cuda_arch_bin "1.1 1.2 1.3 2.0 2.1(2.0) 3.0")
set(__cuda_arch_ptx "2.0 3.0")
endif()
set(CUDA_ARCH_BIN ${__cuda_arch_bin} CACHE STRING "Specify 'real' GPU architectures to build binaries for, BIN(PTX) format is supported")
set(CUDA_ARCH_PTX ${__cuda_arch_ptx} CACHE STRING "Specify 'virtual' PTX architectures to build PTX intermediate code for")
string(REGEX REPLACE "\\." "" ARCH_BIN_NO_POINTS "${CUDA_ARCH_BIN}")
string(REGEX REPLACE "\\." "" ARCH_PTX_NO_POINTS "${CUDA_ARCH_PTX}")
@@ -67,11 +112,15 @@ if(CUDA_FOUND)
# Tell NVCC to add PTX intermediate code for the specified architectures
string(REGEX MATCHALL "[0-9]+" ARCH_LIST "${ARCH_PTX_NO_POINTS}")
foreach(ARCH IN LISTS ARCH_LIST)
set(NVCC_FLAGS_EXTRA ${NVCC_FLAGS_EXTRA} -gencode arch=compute_${ARCH},code=compute_${ARCH})
set(OPENCV_CUDA_ARCH_PTX "${OPENCV_CUDA_ARCH_PTX} ${ARCH}")
set(OPENCV_CUDA_ARCH_FEATURES "${OPENCV_CUDA_ARCH_FEATURES} ${ARCH}")
endforeach()
foreach(ARCH IN LISTS ARCH_LIST)
set(NVCC_FLAGS_EXTRA ${NVCC_FLAGS_EXTRA} -gencode arch=compute_${ARCH},code=compute_${ARCH})
set(OPENCV_CUDA_ARCH_PTX "${OPENCV_CUDA_ARCH_PTX} ${ARCH}")
set(OPENCV_CUDA_ARCH_FEATURES "${OPENCV_CUDA_ARCH_FEATURES} ${ARCH}")
endforeach()
if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "arm")
set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} --target-cpu-architecture=ARM")
endif()
# These vars will be processed in other scripts
set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} ${NVCC_FLAGS_EXTRA})
@@ -79,7 +128,7 @@ if(CUDA_FOUND)
message(STATUS "CUDA NVCC target flags: ${CUDA_NVCC_FLAGS}")
OCV_OPTION(CUDA_FAST_MATH "Enable --use_fast_math for CUDA compiler " OFF)
OCV_OPTION(CUDA_FAST_MATH "Enable --use_fast_math for CUDA compiler " OFF)
if(CUDA_FAST_MATH)
set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} --use_fast_math)
@@ -87,7 +136,6 @@ if(CUDA_FOUND)
mark_as_advanced(CUDA_BUILD_CUBIN CUDA_BUILD_EMULATION CUDA_VERBOSE_BUILD CUDA_SDK_ROOT_DIR)
unset(CUDA_npp_LIBRARY CACHE)
find_cuda_helper_libs(npp)
macro(ocv_cuda_compile VAR)
@@ -101,15 +149,15 @@ if(CUDA_FOUND)
string(REPLACE "-ggdb3" "" ${var} "${${var}}")
endforeach()
if (BUILD_SHARED_LIBS)
if(BUILD_SHARED_LIBS)
set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} -Xcompiler -DCVAPI_EXPORTS)
endif()
if(UNIX OR APPLE)
set (CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} -Xcompiler -fPIC)
set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} -Xcompiler -fPIC)
endif()
if(APPLE)
set (CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} -Xcompiler -fno-finite-math-only)
set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} -Xcompiler -fno-finite-math-only)
endif()
# disabled because of multiple warnings during building nvcc auto generated files
+27 -17
Ver Arquivo
@@ -5,15 +5,17 @@ if(CMAKE_CL_64)
set(MSVC64 1)
endif()
if(NOT APPLE)
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
set(CMAKE_COMPILER_IS_GNUCXX 1)
set(ENABLE_PRECOMPILED_HEADERS OFF CACHE BOOL "" FORCE)
endif()
if(CMAKE_C_COMPILER_ID STREQUAL "Clang")
set(CMAKE_COMPILER_IS_GNUCC 1)
set(ENABLE_PRECOMPILED_HEADERS OFF CACHE BOOL "" FORCE)
endif()
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
set(CMAKE_COMPILER_IS_GNUCXX 1)
set(CMAKE_COMPILER_IS_CLANGCXX 1)
endif()
if(CMAKE_C_COMPILER_ID STREQUAL "Clang")
set(CMAKE_COMPILER_IS_GNUCC 1)
set(CMAKE_COMPILER_IS_CLANGCC 1)
endif()
if((CMAKE_COMPILER_IS_CLANGCXX OR CMAKE_COMPILER_IS_CLANGCC) AND NOT CMAKE_GENERATOR MATCHES "Xcode")
set(ENABLE_PRECOMPILED_HEADERS OFF CACHE BOOL "" FORCE)
endif()
# ----------------------------------------------------------------------------
@@ -44,17 +46,25 @@ if(MSVC AND CMAKE_C_COMPILER MATCHES "icc")
set(CV_ICC __INTEL_COMPILER_FOR_WINDOWS)
endif()
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR (UNIX AND CV_ICC))
set(CV_COMPILER_IS_GNU TRUE)
else()
set(CV_COMPILER_IS_GNU FALSE)
endif()
# ----------------------------------------------------------------------------
# Detect GNU version:
# ----------------------------------------------------------------------------
if(CMAKE_COMPILER_IS_GNUCXX)
execute_process(COMMAND ${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1} --version
if(CMAKE_COMPILER_IS_CLANGCXX)
set(CMAKE_GCC_REGEX_VERSION "4.2.1")
set(CMAKE_OPENCV_GCC_VERSION_MAJOR 4)
set(CMAKE_OPENCV_GCC_VERSION_MINOR 2)
set(CMAKE_OPENCV_GCC_VERSION 42)
set(CMAKE_OPENCV_GCC_VERSION_NUM 402)
execute_process(COMMAND ${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1} -v
ERROR_VARIABLE CMAKE_OPENCV_CLANG_VERSION_FULL
ERROR_STRIP_TRAILING_WHITESPACE)
string(REGEX MATCH "version.*$" CMAKE_OPENCV_CLANG_VERSION_FULL "${CMAKE_OPENCV_CLANG_VERSION_FULL}")
string(REGEX MATCH "[0-9]+\\.[0-9]+" CMAKE_CLANG_REGEX_VERSION "${CMAKE_OPENCV_CLANG_VERSION_FULL}")
elseif(CMAKE_COMPILER_IS_GNUCXX)
execute_process(COMMAND ${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1} -dumpversion
OUTPUT_VARIABLE CMAKE_OPENCV_GCC_VERSION_FULL
OUTPUT_STRIP_TRAILING_WHITESPACE)
+14
Ver Arquivo
@@ -0,0 +1,14 @@
#include <stdio.h>
int main()
{
int count = 0;
if (cudaSuccess != cudaGetDeviceCount(&count)){return -1;}
if (count == 0) {return -1;}
for (int device = 0; device < count; ++device)
{
cudaDeviceProp prop;
if (cudaSuccess != cudaGetDeviceProperties(&prop, device)){ continue;}
printf("%d.%d ", prop.major, prop.minor);
}
return 0;
}
+148 -72
Ver Arquivo
@@ -1,78 +1,154 @@
if(APPLE)
set(OPENCL_FOUND YES)
set(OPENCL_LIBRARIES "-framework OpenCL")
set(OPENCL_FOUND YES)
set(OPENCL_LIBRARIES "-framework OpenCL")
else()
#find_package(OpenCL QUIET)
if(WITH_OPENCLAMDFFT)
find_path(CLAMDFFT_INCLUDE_DIR
NAMES clAmdFft.h)
find_library(CLAMDFFT_LIBRARIES
NAMES clAmdFft.Runtime)
find_package(OpenCL QUIET)
if(WITH_OPENCLAMDFFT)
set(CLAMDFFT_SEARCH_PATH $ENV{CLAMDFFT_PATH})
if(NOT CLAMDFFT_SEARCH_PATH)
if(WIN32)
set( CLAMDFFT_SEARCH_PATH "C:\\Program Files (x86)\\AMD\\clAmdFft" )
endif()
endif()
if(WITH_OPENCLAMDBLAS)
find_path(CLAMDBLAS_INCLUDE_DIR
NAMES clAmdBlas.h)
find_library(CLAMDBLAS_LIBRARIES
NAMES clAmdBlas)
endif()
# Try AMD/ATI Stream SDK
if (NOT OPENCL_FOUND)
set(ENV_AMDSTREAMSDKROOT $ENV{AMDAPPSDKROOT})
set(ENV_OPENCLROOT $ENV{OPENCLROOT})
set(ENV_CUDA_PATH $ENV{CUDA_PATH})
if(ENV_AMDSTREAMSDKROOT)
set(OPENCL_INCLUDE_SEARCH_PATH ${ENV_AMDSTREAMSDKROOT}/include)
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
set(OPENCL_LIB_SEARCH_PATH ${OPENCL_LIB_SEARCH_PATH} ${ENV_AMDSTREAMSDKROOT}/lib/x86)
else()
set(OPENCL_LIB_SEARCH_PATH ${OPENCL_LIB_SEARCH_PATH} ${ENV_AMDSTREAMSDKROOT}/lib/x86_64)
endif()
elseif(ENV_CUDAPATH AND WIN32)
set(OPENCL_INCLUDE_SEARCH_PATH ${ENV_CUDA_PATH}/include)
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
set(OPENCL_LIB_SEARCH_PATH ${OPENCL_LIB_SEARCH_PATH} ${ENV_CUDA_PATH}/lib/Win32)
else()
set(OPENCL_LIB_SEARCH_PATH ${OPENCL_LIB_SEARCH_PATH} ${ENV_CUDA_PATH}/lib/x64)
endif()
elseif(ENV_OPENCLROOT AND UNIX)
set(OPENCL_INCLUDE_SEARCH_PATH ${ENV_OPENCLROOT}/inc)
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
set(OPENCL_LIB_SEARCH_PATH ${OPENCL_LIB_SEARCH_PATH} /usr/lib)
else()
set(OPENCL_LIB_SEARCH_PATH ${OPENCL_LIB_SEARCH_PATH} /usr/lib64)
endif()
endif()
if(OPENCL_INCLUDE_SEARCH_PATH)
find_path(OPENCL_INCLUDE_DIR
NAMES CL/cl.h OpenCL/cl.h
PATHS ${OPENCL_INCLUDE_SEARCH_PATH}
NO_DEFAULT_PATH)
else()
find_path(OPENCL_INCLUDE_DIR
NAMES CL/cl.h OpenCL/cl.h)
endif()
if(OPENCL_LIB_SEARCH_PATH)
find_library(OPENCL_LIBRARY NAMES OpenCL PATHS ${OPENCL_LIB_SEARCH_PATH} NO_DEFAULT_PATH)
else()
find_library(OPENCL_LIBRARY NAMES OpenCL)
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(
OPENCL
DEFAULT_MSG
OPENCL_LIBRARY OPENCL_INCLUDE_DIR
)
if(OPENCL_FOUND)
set(OPENCL_LIBRARIES ${OPENCL_LIBRARY})
set(HAVE_OPENCL 1)
else()
set(OPENCL_LIBRARIES)
endif()
set( CLAMDFFT_INCLUDE_SEARCH_PATH ${CLAMDFFT_SEARCH_PATH}/include )
if(UNIX)
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
set(CLAMDFFT_LIB_SEARCH_PATH /usr/lib)
else()
set(CLAMDFFT_LIB_SEARCH_PATH /usr/lib64)
endif()
else()
set(HAVE_OPENCL 1)
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
set(CLAMDFFT_LIB_SEARCH_PATH ${CLAMDFFT_SEARCH_PATH}\\lib32\\import)
else()
set(CLAMDFFT_LIB_SEARCH_PATH ${CLAMDFFT_SEARCH_PATH}\\lib64\\import)
endif()
endif()
find_path(CLAMDFFT_INCLUDE_DIR
NAMES clAmdFft.h
PATHS ${CLAMDFFT_INCLUDE_SEARCH_PATH}
PATH_SUFFIXES clAmdFft
NO_DEFAULT_PATH)
find_library(CLAMDFFT_LIBRARY
NAMES clAmdFft.Runtime
PATHS ${CLAMDFFT_LIB_SEARCH_PATH}
NO_DEFAULT_PATH)
if(CLAMDFFT_LIBRARY)
set(CLAMDFFT_LIBRARIES ${CLAMDFFT_LIBRARY})
else()
set(CLAMDFFT_LIBRARIES "")
endif()
endif()
if(WITH_OPENCLAMDBLAS)
set(CLAMDBLAS_SEARCH_PATH $ENV{CLAMDBLAS_PATH})
if(NOT CLAMDBLAS_SEARCH_PATH)
if(WIN32)
set( CLAMDBLAS_SEARCH_PATH "C:\\Program Files (x86)\\AMD\\clAmdBlas" )
endif()
endif()
set( CLAMDBLAS_INCLUDE_SEARCH_PATH ${CLAMDBLAS_SEARCH_PATH}/include )
if(UNIX)
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
set(CLAMDBLAS_LIB_SEARCH_PATH /usr/lib)
else()
set(CLAMDBLAS_LIB_SEARCH_PATH /usr/lib64)
endif()
else()
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
set(CLAMDBLAS_LIB_SEARCH_PATH ${CLAMDBLAS_SEARCH_PATH}\\lib32\\import)
else()
set(CLAMDBLAS_LIB_SEARCH_PATH ${CLAMDBLAS_SEARCH_PATH}\\lib64\\import)
endif()
endif()
find_path(CLAMDBLAS_INCLUDE_DIR
NAMES clAmdBlas.h
PATHS ${CLAMDBLAS_INCLUDE_SEARCH_PATH}
PATH_SUFFIXES clAmdBlas
NO_DEFAULT_PATH)
find_library(CLAMDBLAS_LIBRARY
NAMES clAmdBlas
PATHS ${CLAMDBLAS_LIB_SEARCH_PATH}
NO_DEFAULT_PATH)
if(CLAMDBLAS_LIBRARY)
set(CLAMDBLAS_LIBRARIES ${CLAMDBLAS_LIBRARY})
else()
set(CLAMDBLAS_LIBRARIES "")
endif()
endif()
# Try AMD/ATI Stream SDK
if (NOT OPENCL_FOUND)
set(ENV_AMDSTREAMSDKROOT $ENV{AMDAPPSDKROOT})
set(ENV_AMDAPPSDKROOT $ENV{AMDAPPSDKROOT})
set(ENV_OPENCLROOT $ENV{OPENCLROOT})
set(ENV_CUDA_PATH $ENV{CUDA_PATH})
set(ENV_INTELOCLSDKROOT $ENV{INTELOCLSDKROOT})
if(ENV_AMDSTREAMSDKROOT)
set(OPENCL_INCLUDE_SEARCH_PATH ${ENV_AMDAPPSDKROOT}/include)
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
set(OPENCL_LIB_SEARCH_PATH ${OPENCL_LIB_SEARCH_PATH} ${ENV_AMDAPPSDKROOT}/lib/x86)
else()
set(OPENCL_LIB_SEARCH_PATH ${OPENCL_LIB_SEARCH_PATH} ${ENV_AMDAPPSDKROOT}/lib/x86_64)
endif()
elseif(ENV_AMDSTREAMSDKROOT)
set(OPENCL_INCLUDE_SEARCH_PATH ${ENV_AMDSTREAMSDKROOT}/include)
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
set(OPENCL_LIB_SEARCH_PATH ${OPENCL_LIB_SEARCH_PATH} ${ENV_AMDSTREAMSDKROOT}/lib/x86)
else()
set(OPENCL_LIB_SEARCH_PATH ${OPENCL_LIB_SEARCH_PATH} ${ENV_AMDSTREAMSDKROOT}/lib/x86_64)
endif()
elseif(ENV_CUDA_PATH AND WIN32)
set(OPENCL_INCLUDE_SEARCH_PATH ${ENV_CUDA_PATH}/include)
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
set(OPENCL_LIB_SEARCH_PATH ${OPENCL_LIB_SEARCH_PATH} ${ENV_CUDA_PATH}/lib/Win32)
else()
set(OPENCL_LIB_SEARCH_PATH ${OPENCL_LIB_SEARCH_PATH} ${ENV_CUDA_PATH}/lib/x64)
endif()
elseif(ENV_OPENCLROOT AND UNIX)
set(OPENCL_INCLUDE_SEARCH_PATH ${ENV_OPENCLROOT}/inc)
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
set(OPENCL_LIB_SEARCH_PATH ${OPENCL_LIB_SEARCH_PATH} /usr/lib)
else()
set(OPENCL_LIB_SEARCH_PATH ${OPENCL_LIB_SEARCH_PATH} /usr/lib64)
endif()
elseif(ENV_INTELOCLSDKROOT)
set(OPENCL_INCLUDE_SEARCH_PATH ${ENV_INTELOCLSDKROOT}/include)
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
set(OPENCL_LIB_SEARCH_PATH ${OPENCL_LIB_SEARCH_PATH} ${ENV_INTELOCLSDKROOT}/lib/x86)
else()
set(OPENCL_LIB_SEARCH_PATH ${OPENCL_LIB_SEARCH_PATH} ${ENV_INTELOCLSDKROOT}/lib/x64)
endif()
endif()
if(OPENCL_INCLUDE_SEARCH_PATH)
find_path(OPENCL_INCLUDE_DIR
NAMES CL/cl.h OpenCL/cl.h
PATHS ${OPENCL_INCLUDE_SEARCH_PATH}
NO_DEFAULT_PATH)
else()
find_path(OPENCL_INCLUDE_DIR
NAMES CL/cl.h OpenCL/cl.h)
endif()
if(OPENCL_LIB_SEARCH_PATH)
find_library(OPENCL_LIBRARY NAMES OpenCL PATHS ${OPENCL_LIB_SEARCH_PATH} NO_DEFAULT_PATH)
else()
find_library(OPENCL_LIBRARY NAMES OpenCL)
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(
OPENCL
DEFAULT_MSG
OPENCL_LIBRARY OPENCL_INCLUDE_DIR
)
if(OPENCL_FOUND)
set(OPENCL_LIBRARIES ${OPENCL_LIBRARY})
set(HAVE_OPENCL 1)
else()
set(OPENCL_LIBRARIES)
endif()
else()
set(HAVE_OPENCL 1)
endif()
endif()
+10 -3
Ver Arquivo
@@ -19,18 +19,25 @@ unset(HAVE_SPHINX CACHE)
if(PYTHON_EXECUTABLE)
if(PYTHON_VERSION_STRING)
set(PYTHON_VERSION_MAJOR_MINOR "${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}")
string(REGEX MATCH "[0-9]+.[0-9]+.[0-9]+" PYTHON_VERSION_FULL "${PYTHON_VERSION_STRING}")
set(PYTHON_VERSION_FULL "${PYTHON_VERSION_STRING}")
else()
execute_process(COMMAND ${PYTHON_EXECUTABLE} --version
ERROR_VARIABLE PYTHON_VERSION_FULL
ERROR_STRIP_TRAILING_WHITESPACE)
string(REGEX MATCH "[0-9]+.[0-9]+" PYTHON_VERSION_MAJOR_MINOR "${PYTHON_VERSION_FULL}")
string(REGEX MATCH "[0-9]+.[0-9]+.[0-9]+" PYTHON_VERSION_FULL "${PYTHON_VERSION_FULL}")
endif()
if("${PYTHON_VERSION_FULL}" MATCHES "[0-9]+.[0-9]+.[0-9]+")
set(PYTHON_VERSION_FULL "${CMAKE_MATCH_0}")
elseif("${PYTHON_VERSION_FULL}" MATCHES "[0-9]+.[0-9]+")
set(PYTHON_VERSION_FULL "${CMAKE_MATCH_0}")
else()
unset(PYTHON_VERSION_FULL)
endif()
if(NOT ANDROID AND NOT IOS)
if(CMAKE_VERSION VERSION_GREATER 2.8.8)
if(CMAKE_VERSION VERSION_GREATER 2.8.8 AND PYTHON_VERSION_FULL)
find_host_package(PythonLibs ${PYTHON_VERSION_FULL} EXACT)
else()
find_host_package(PythonLibs ${PYTHON_VERSION_FULL})
+2 -2
Ver Arquivo
@@ -1,4 +1,4 @@
if(ANDROID AND NOT MIPS)
if(BUILD_TBB)
add_subdirectory("${OpenCV_SOURCE_DIR}/3rdparty/tbb")
include_directories(SYSTEM ${TBB_INCLUDE_DIRS})
set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} tbb)
@@ -22,7 +22,7 @@ endif()
if(NOT HAVE_TBB)
set(TBB_DEFAULT_INCLUDE_DIRS
"/opt/intel/tbb" "/usr/local/include" "/usr/include"
"/opt/intel/tbb/include" "/usr/local/include" "/usr/include"
"C:/Program Files/Intel/TBB" "C:/Program Files (x86)/Intel/TBB"
"C:/Program Files (x86)/tbb/include"
"C:/Program Files (x86)/tbb/include"
+1 -1
Ver Arquivo
@@ -16,7 +16,7 @@ endif()
# Source package, for "make package_source"
# ----------------------------------------------------------------------------
if(BUILD_PACKAGE)
set(TARBALL_NAME "${CMAKE_PROJECT_NAME}-${OPENCV_VERSION_MAJOR}.${OPENCV_VERSION_MINOR}.${OPENCV_VERSION_PATCH}")
set(TARBALL_NAME "${CMAKE_PROJECT_NAME}-${OPENCV_VERSION}")
if (NOT WIN32)
if(APPLE)
set(TAR_CMD gnutar)
+32 -5
Ver Arquivo
@@ -7,11 +7,6 @@ if(WITH_TBB)
include("${OpenCV_SOURCE_DIR}/cmake/OpenCVDetectTBB.cmake")
endif(WITH_TBB)
# --- C= ---
if(WITH_CSTRIPES)
include("${OpenCV_SOURCE_DIR}/cmake/OpenCVDetectCStripes.cmake")
endif(WITH_CSTRIPES)
# --- IPP ---
ocv_clear_vars(IPP_FOUND)
if(WITH_IPP)
@@ -43,3 +38,35 @@ if(WITH_EIGEN)
set(HAVE_EIGEN 1)
endif()
endif(WITH_EIGEN)
# --- C= ---
if(WITH_CSTRIPES AND NOT HAVE_TBB)
include("${OpenCV_SOURCE_DIR}/cmake/OpenCVDetectCStripes.cmake")
else()
set(HAVE_CSTRIPES 0)
endif()
# --- OpenMP ---
if(NOT HAVE_TBB AND NOT HAVE_CSTRIPES)
set(_fname "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/omptest.cpp")
FILE(WRITE "${_fname}" "#ifndef _OPENMP\n#error\n#endif\nint main() { return 0; }\n")
TRY_COMPILE(HAVE_OPENMP "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp" "${_fname}")
else()
set(HAVE_OPENMP 0)
endif()
# --- GCD ---
if(APPLE AND NOT HAVE_TBB AND NOT HAVE_CSTRIPES AND NOT HAVE_OPENMP)
set(HAVE_GCD 1)
else()
set(HAVE_GCD 0)
endif()
# --- Concurrency ---
if(MSVC AND NOT HAVE_TBB AND NOT HAVE_CSTRIPES AND NOT HAVE_OPENMP)
set(_fname "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/concurrencytest.cpp")
FILE(WRITE "${_fname}" "#if _MSC_VER < 1600\n#error\n#endif\nint main() { return 0; }\n")
TRY_COMPILE(HAVE_CONCURRENCY "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp" "${_fname}")
else()
set(HAVE_CONCURRENCY 0)
endif()
+2 -1
Ver Arquivo
@@ -85,11 +85,12 @@ if(WITH_XINE)
endif(WITH_XINE)
# --- V4L ---
ocv_clear_vars(HAVE_LIBV4L HAVE_CAMV4L HAVE_CAMV4L2)
ocv_clear_vars(HAVE_LIBV4L HAVE_CAMV4L HAVE_CAMV4L2 HAVE_VIDEOIO)
if(WITH_V4L)
CHECK_MODULE(libv4l1 HAVE_LIBV4L)
CHECK_INCLUDE_FILE(linux/videodev.h HAVE_CAMV4L)
CHECK_INCLUDE_FILE(linux/videodev2.h HAVE_CAMV4L2)
CHECK_INCLUDE_FILE(sys/videoio.h HAVE_VIDEOIO)
endif(WITH_V4L)
# --- OpenNI ---
+7 -1
Ver Arquivo
@@ -20,7 +20,7 @@ if(ANDROID)
endif()
# setup lists of camera libs
foreach(abi ARMEABI ARMEABI_V7A X86)
foreach(abi ARMEABI ARMEABI_V7A X86 MIPS)
ANDROID_GET_ABI_RAWNAME(${abi} ndkabi)
if(BUILD_ANDROID_CAMERA_WRAPPER)
if(ndkabi STREQUAL ANDROID_NDK_ABI_NAME)
@@ -71,6 +71,12 @@ if(ANDROID)
endforeach()
string(REPLACE "opencv_" "" OPENCV_MODULES_CONFIGMAKE "${OPENCV_MODULES_CONFIGMAKE}")
# prepare 3rd-party component list without TBB for armeabi and mips platforms. TBB is useless there.
set(OPENCV_3RDPARTY_COMPONENTS_CONFIGMAKE_NO_TBB ${OPENCV_3RDPARTY_COMPONENTS_CONFIGMAKE})
foreach(mod ${OPENCV_3RDPARTY_COMPONENTS_CONFIGMAKE_NO_TBB})
string(REPLACE "tbb" "" OPENCV_3RDPARTY_COMPONENTS_CONFIGMAKE_NO_TBB "${OPENCV_3RDPARTY_COMPONENTS_CONFIGMAKE_NO_TBB}")
endforeach()
if(BUILD_FAT_JAVA_LIB)
set(OPENCV_LIBS_CONFIGMAKE java)
else()
+11 -2
Ver Arquivo
@@ -53,6 +53,10 @@ if(OpenCV_LIB_COMPONENTS)
list(REMOVE_ITEM OPENCV_MODULES_CONFIGCMAKE ${OpenCV_LIB_COMPONENTS})
endif()
if(BUILD_FAT_JAVA_LIB AND HAVE_opencv_java)
list(APPEND OPENCV_MODULES_CONFIGCMAKE opencv_java)
endif()
macro(ocv_generate_dependencies_map_configcmake suffix configuration)
set(OPENCV_DEPENDENCIES_MAP_${suffix} "")
set(OPENCV_PROCESSED_LIBS "")
@@ -126,8 +130,13 @@ configure_file("${OpenCV_SOURCE_DIR}/cmake/templates/OpenCVConfig-version.cmake.
set(OpenCV_INCLUDE_DIRS_CONFIGCMAKE "\"\${OpenCV_INSTALL_PATH}/${OPENCV_INCLUDE_INSTALL_PATH}/opencv" "\${OpenCV_INSTALL_PATH}/${OPENCV_INCLUDE_INSTALL_PATH}\"")
set(OpenCV2_INCLUDE_DIRS_CONFIGCMAKE "\"\"")
set(OpenCV_LIB_DIRS_CONFIGCMAKE "\"\${OpenCV_INSTALL_PATH}/${OPENCV_LIB_INSTALL_PATH}\"")
set(OpenCV_3RDPARTY_LIB_DIRS_CONFIGCMAKE "\"\${OpenCV_INSTALL_PATH}/${OPENCV_3P_LIB_INSTALL_PATH}\"")
if(ANDROID)
set(OpenCV_LIB_DIRS_CONFIGCMAKE "\"\${OpenCV_INSTALL_PATH}/sdk/native/libs/\${ANDROID_NDK_ABI_NAME}\"")
set(OpenCV_3RDPARTY_LIB_DIRS_CONFIGCMAKE "\"\${OpenCV_INSTALL_PATH}/sdk/native/3rdparty/libs/\${ANDROID_NDK_ABI_NAME}\"")
else()
set(OpenCV_LIB_DIRS_CONFIGCMAKE "\"\${OpenCV_INSTALL_PATH}/${OPENCV_LIB_INSTALL_PATH}\"")
set(OpenCV_3RDPARTY_LIB_DIRS_CONFIGCMAKE "\"\${OpenCV_INSTALL_PATH}/${OPENCV_3P_LIB_INSTALL_PATH}\"")
endif()
if(INSTALL_TO_MANGLED_PATHS)
string(REPLACE "OpenCV" "OpenCV-${OPENCV_VERSION}" OpenCV_3RDPARTY_LIB_DIRS_CONFIGCMAKE "${OPENCV_3P_LIB_INSTALL_PATH}")
set(OpenCV_3RDPARTY_LIB_DIRS_CONFIGCMAKE "\"\${OpenCV_INSTALL_PATH}/${OpenCV_3RDPARTY_LIB_DIRS_CONFIGCMAKE}\"")
+9 -3
Ver Arquivo
@@ -164,6 +164,9 @@ macro(ocv_module_disable module)
set(HAVE_${__modname} OFF CACHE INTERNAL "Module ${__modname} can not be built in current configuration")
set(OPENCV_MODULE_${__modname}_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}" CACHE INTERNAL "Location of ${__modname} module sources")
set(OPENCV_MODULES_DISABLED_FORCE "${OPENCV_MODULES_DISABLED_FORCE}" CACHE INTERNAL "List of OpenCV modules which can not be build in current configuration")
if(BUILD_${__modname})
# touch variable controlling build of the module to suppress "unused variable" CMake warning
endif()
unset(__modname)
return() # leave the current folder
endmacro()
@@ -171,6 +174,7 @@ endmacro()
# Internal macro; partly disables OpenCV module
macro(__ocv_module_turn_off the_module)
list(REMOVE_ITEM OPENCV_MODULES_DISABLED_AUTO "${the_module}")
list(APPEND OPENCV_MODULES_DISABLED_AUTO "${the_module}")
list(REMOVE_ITEM OPENCV_MODULES_BUILD "${the_module}")
list(REMOVE_ITEM OPENCV_MODULES_PUBLIC "${the_module}")
@@ -190,7 +194,7 @@ macro(__ocv_flatten_module_required_dependencies the_module)
break()
elseif(";${OPENCV_MODULES_DISABLED_USER};${OPENCV_MODULES_DISABLED_AUTO};" MATCHES ";${__dep};")
__ocv_module_turn_off(${the_module}) # depends on disabled module
break()
list(APPEND __flattened_deps "${__dep}")
elseif(";${OPENCV_MODULES_BUILD};" MATCHES ";${__dep};")
if(";${__resolved_deps};" MATCHES ";${__dep};")
list(APPEND __flattened_deps "${__dep}") # all dependencies of this module are already resolved
@@ -259,6 +263,7 @@ macro(__ocv_flatten_module_dependencies)
foreach(m ${OPENCV_MODULES_BUILD})
set(HAVE_${m} ON CACHE INTERNAL "Module ${m} will be built in current configuration")
__ocv_flatten_module_required_dependencies(${m})
set(OPENCV_MODULE_${m}_DEPS ${OPENCV_MODULE_${m}_DEPS} CACHE INTERNAL "Flattened required dependencies of ${m} module")
endforeach()
foreach(m ${OPENCV_MODULES_BUILD})
@@ -283,7 +288,7 @@ macro(__ocv_flatten_module_dependencies)
ocv_list_unique(OPENCV_MODULES_BUILD_)
set(OPENCV_MODULES_PUBLIC ${OPENCV_MODULES_PUBLIC} CACHE INTERNAL "List of OpenCV modules marked for export")
set(OPENCV_MODULES_BUILD ${OPENCV_MODULES_BUILD_} CACHE INTERNAL "List of OpenCV modules included into the build")
set(OPENCV_MODULES_BUILD ${OPENCV_MODULES_BUILD_} CACHE INTERNAL "List of OpenCV modules included into the build")
set(OPENCV_MODULES_DISABLED_AUTO ${OPENCV_MODULES_DISABLED_AUTO} CACHE INTERNAL "List of OpenCV modules implicitly disabled due to dependencies")
endmacro()
@@ -456,6 +461,7 @@ macro(ocv_create_module)
OUTPUT_NAME "${the_module}${OPENCV_DLLVERSION}"
DEBUG_POSTFIX "${OPENCV_DEBUG_POSTFIX}"
ARCHIVE_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH}
LIBRARY_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH}
RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}
INSTALL_NAME_DIR lib
)
@@ -465,7 +471,7 @@ macro(ocv_create_module)
# Android SDK build scripts can include only .so files into final .apk
# As result we should not set version properties for Android
set_target_properties(${the_module} PROPERTIES
VERSION ${OPENCV_VERSION}
VERSION ${OPENCV_LIBVERSION}
SOVERSION ${OPENCV_SOVERSION}
)
endif()
+1 -1
Ver Arquivo
@@ -19,7 +19,7 @@ IF(CMAKE_COMPILER_IS_GNUCXX)
ARGS ${CMAKE_CXX_COMPILER_ARG1} -dumpversion
OUTPUT_VARIABLE gcc_compiler_version)
#MESSAGE("GCC Version: ${gcc_compiler_version}")
IF(gcc_compiler_version MATCHES "4\\.[0,2-9]\\.[0-9x]")
IF(gcc_compiler_version VERSION_GREATER "4.2.-1")
SET(PCHSupport_FOUND TRUE)
ENDIF()
+10 -1
Ver Arquivo
@@ -64,6 +64,13 @@ MACRO(ocv_check_compiler_flag LANG FLAG RESULT)
else()
FILE(WRITE "${_fname}" "#pragma\nint main(void) { return 0; }\n")
endif()
elseif("_${LANG}_" MATCHES "_OBJCXX_")
set(_fname "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.mm")
if("${CMAKE_CXX_FLAGS} ${FLAG} " MATCHES "-Werror " OR "${CMAKE_CXX_FLAGS} ${FLAG} " MATCHES "-Werror=unknown-pragmas ")
FILE(WRITE "${_fname}" "int main() { return 0; }\n")
else()
FILE(WRITE "${_fname}" "#pragma\nint main() { return 0; }\n")
endif()
else()
unset(_fname)
endif()
@@ -100,6 +107,8 @@ macro(ocv_check_flag_support lang flag varname)
set(_lang CXX)
elseif("_${lang}_" MATCHES "_C_")
set(_lang C)
elseif("_${lang}_" MATCHES "_OBJCXX_")
set(_lang OBJCXX)
else()
set(_lang ${lang})
endif()
@@ -132,7 +141,7 @@ macro(ocv_warnings_disable)
set(${var} "${${var}} ${warning}")
endforeach()
endforeach()
elseif(CV_COMPILER_IS_GNU AND _gxx_warnings AND _flag_vars)
elseif((CMAKE_COMPILER_IS_GNUCXX OR (UNIX AND CV_ICC)) AND _gxx_warnings AND _flag_vars)
foreach(var ${_flag_vars})
foreach(warning ${_gxx_warnings})
if(NOT warning MATCHES "^-Wno-")
+10 -4
Ver Arquivo
@@ -1,12 +1,18 @@
SET(OPENCV_VERSION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/modules/core/include/opencv2/core/version.hpp")
FILE(STRINGS "${OPENCV_VERSION_FILE}" OPENCV_VERSION_PARTS REGEX "#define CV_.+OR_VERSION[ ]+[0-9]+" )
FILE(STRINGS "${OPENCV_VERSION_FILE}" OPENCV_VERSION_PARTS REGEX "#define CV_VERSION_[A-Z]+[ ]+[0-9]+" )
string(REGEX REPLACE ".+CV_MAJOR_VERSION[ ]+([0-9]+).*" "\\1" OPENCV_VERSION_MAJOR "${OPENCV_VERSION_PARTS}")
string(REGEX REPLACE ".+CV_MINOR_VERSION[ ]+([0-9]+).*" "\\1" OPENCV_VERSION_MINOR "${OPENCV_VERSION_PARTS}")
string(REGEX REPLACE ".+CV_SUBMINOR_VERSION[ ]+([0-9]+).*" "\\1" OPENCV_VERSION_PATCH "${OPENCV_VERSION_PARTS}")
string(REGEX REPLACE ".+CV_VERSION_EPOCH[ ]+([0-9]+).*" "\\1" OPENCV_VERSION_MAJOR "${OPENCV_VERSION_PARTS}")
string(REGEX REPLACE ".+CV_VERSION_MAJOR[ ]+([0-9]+).*" "\\1" OPENCV_VERSION_MINOR "${OPENCV_VERSION_PARTS}")
string(REGEX REPLACE ".+CV_VERSION_MINOR[ ]+([0-9]+).*" "\\1" OPENCV_VERSION_PATCH "${OPENCV_VERSION_PARTS}")
string(REGEX REPLACE ".+CV_VERSION_REVISION[ ]+([0-9]+).*" "\\1" OPENCV_VERSION_TWEAK "${OPENCV_VERSION_PARTS}")
set(OPENCV_VERSION "${OPENCV_VERSION_MAJOR}.${OPENCV_VERSION_MINOR}.${OPENCV_VERSION_PATCH}")
if(OPENCV_VERSION_TWEAK GREATER 0)
set(OPENCV_VERSION "${OPENCV_VERSION}.${OPENCV_VERSION_TWEAK}")
endif()
set(OPENCV_SOVERSION "${OPENCV_VERSION_MAJOR}.${OPENCV_VERSION_MINOR}")
set(OPENCV_LIBVERSION "${OPENCV_VERSION_MAJOR}.${OPENCV_VERSION_MINOR}.${OPENCV_VERSION_PATCH}")
# create a dependency on version file
# we never use output of the following command but cmake will rerun automatically if the version file changes
+32 -9
Ver Arquivo
@@ -29,8 +29,22 @@ ifeq ($(OPENCV_LIB_TYPE),SHARED)
OPENCV_3RDPARTY_COMPONENTS:=
OPENCV_EXTRA_COMPONENTS:=
else
OPENCV_3RDPARTY_COMPONENTS:=@OPENCV_3RDPARTY_COMPONENTS_CONFIGMAKE@
OPENCV_EXTRA_COMPONENTS:=@OPENCV_EXTRA_COMPONENTS_CONFIGMAKE@
ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
OPENCV_3RDPARTY_COMPONENTS:=@OPENCV_3RDPARTY_COMPONENTS_CONFIGMAKE@
OPENCV_EXTRA_COMPONENTS:=@OPENCV_EXTRA_COMPONENTS_CONFIGMAKE@
endif
ifeq ($(TARGET_ARCH_ABI),x86)
OPENCV_3RDPARTY_COMPONENTS:=@OPENCV_3RDPARTY_COMPONENTS_CONFIGMAKE@
OPENCV_EXTRA_COMPONENTS:=@OPENCV_EXTRA_COMPONENTS_CONFIGMAKE@
endif
ifeq ($(TARGET_ARCH_ABI),armeabi)
OPENCV_3RDPARTY_COMPONENTS:=@OPENCV_3RDPARTY_COMPONENTS_CONFIGMAKE_NO_TBB@
OPENCV_EXTRA_COMPONENTS:=@OPENCV_EXTRA_COMPONENTS_CONFIGMAKE@
endif
ifeq ($(TARGET_ARCH_ABI),mips)
OPENCV_3RDPARTY_COMPONENTS:=@OPENCV_3RDPARTY_COMPONENTS_CONFIGMAKE@
OPENCV_EXTRA_COMPONENTS:=@OPENCV_EXTRA_COMPONENTS_CONFIGMAKE@
endif
endif
ifeq (${OPENCV_CAMERA_MODULES},on)
@@ -43,6 +57,9 @@ ifeq (${OPENCV_CAMERA_MODULES},on)
ifeq ($(TARGET_ARCH_ABI),x86)
OPENCV_CAMERA_MODULES:=@OPENCV_CAMERA_LIBS_X86_CONFIGCMAKE@
endif
ifeq ($(TARGET_ARCH_ABI),mips)
OPENCV_CAMERA_MODULES:=@OPENCV_CAMERA_LIBS_MIPS_CONFIGCMAKE@
endif
else
OPENCV_CAMERA_MODULES:=
endif
@@ -75,14 +92,20 @@ define add_opencv_camera_module
include $(PREBUILT_SHARED_LIBRARY)
endef
ifeq ($(OPENCV_INSTALL_MODULES),on)
$(foreach module,$(OPENCV_LIBS),$(eval $(call add_opencv_module,$(module))))
endif
$(foreach module,$(OPENCV_3RDPARTY_COMPONENTS),$(eval $(call add_opencv_3rdparty_component,$(module))))
$(foreach module,$(OPENCV_CAMERA_MODULES),$(eval $(call add_opencv_camera_module,$(module))))
ifeq ($(OPENCV_MK_$(OPENCV_TARGET_ARCH_ABI)_ALREADY_INCLUDED),)
ifeq ($(OPENCV_INSTALL_MODULES),on)
$(foreach module,$(OPENCV_LIBS),$(eval $(call add_opencv_module,$(module))))
endif
ifneq ($(OPENCV_BASEDIR),)
OPENCV_LOCAL_C_INCLUDES += $(foreach mod, $(OPENCV_MODULES), $(OPENCV_BASEDIR)/modules/$(mod)/include)
$(foreach module,$(OPENCV_3RDPARTY_COMPONENTS),$(eval $(call add_opencv_3rdparty_component,$(module))))
$(foreach module,$(OPENCV_CAMERA_MODULES),$(eval $(call add_opencv_camera_module,$(module))))
ifneq ($(OPENCV_BASEDIR),)
OPENCV_LOCAL_C_INCLUDES += $(foreach mod, $(OPENCV_MODULES), $(OPENCV_BASEDIR)/modules/$(mod)/include)
endif
#turn off module installation to prevent their redefinition
OPENCV_MK_$(OPENCV_TARGET_ARCH_ABI)_ALREADY_INCLUDED:=on
endif
ifeq ($(OPENCV_LOCAL_CFLAGS),)
+32 -12
Ver Arquivo
@@ -22,10 +22,11 @@
# - OpenCV_INCLUDE_DIRS : The OpenCV include directories.
# - OpenCV_COMPUTE_CAPABILITIES : The version of compute capability
# - OpenCV_ANDROID_NATIVE_API_LEVEL : Minimum required level of Android API
# - OpenCV_VERSION : The version of this OpenCV build. Example: "@OPENCV_VERSION@"
# - OpenCV_VERSION_MAJOR : Major version part of OpenCV_VERSION. Example: "@OPENCV_VERSION_MAJOR@"
# - OpenCV_VERSION_MINOR : Minor version part of OpenCV_VERSION. Example: "@OPENCV_VERSION_MINOR@"
# - OpenCV_VERSION_PATCH : Patch version part of OpenCV_VERSION. Example: "@OPENCV_VERSION_PATCH@"
# - OpenCV_VERSION : The version of this OpenCV build: "@OPENCV_VERSION@"
# - OpenCV_VERSION_MAJOR : Major version part of OpenCV_VERSION: "@OPENCV_VERSION_MAJOR@"
# - OpenCV_VERSION_MINOR : Minor version part of OpenCV_VERSION: "@OPENCV_VERSION_MINOR@"
# - OpenCV_VERSION_PATCH : Patch version part of OpenCV_VERSION: "@OPENCV_VERSION_PATCH@"
# - OpenCV_VERSION_TWEAK : Tweak version part of OpenCV_VERSION: "@OPENCV_VERSION_TWEAK@"
#
# Advanced variables:
# - OpenCV_SHARED
@@ -41,8 +42,9 @@
set(OpenCV_COMPUTE_CAPABILITIES @OpenCV_CUDA_CC_CONFIGCMAKE@)
set(OpenCV_CUDA_VERSION @OpenCV_CUDA_VERSION@)
set(OpenCV_USE_CUBLAS @HAVE_CUBLAS@)
set(OpenCV_USE_CUFFT @HAVE_CUFFT@)
set(OpenCV_USE_CUBLAS @HAVE_CUBLAS@)
set(OpenCV_USE_CUFFT @HAVE_CUFFT@)
set(OpenCV_USE_NVCUVID @HAVE_NVCUVID@)
# Android API level from which OpenCV has been compiled is remembered
set(OpenCV_ANDROID_NATIVE_API_LEVEL @OpenCV_ANDROID_NATIVE_API_LEVEL_CONFIGCMAKE@)
@@ -99,6 +101,7 @@ SET(OpenCV_VERSION @OPENCV_VERSION@)
SET(OpenCV_VERSION_MAJOR @OPENCV_VERSION_MAJOR@)
SET(OpenCV_VERSION_MINOR @OPENCV_VERSION_MINOR@)
SET(OpenCV_VERSION_PATCH @OPENCV_VERSION_PATCH@)
SET(OpenCV_VERSION_TWEAK @OPENCV_VERSION_TWEAK@)
# ====================================================================
# Link libraries: e.g. libopencv_core.so, opencv_imgproc220d.lib, etc...
@@ -148,6 +151,7 @@ endif()
# ==============================================================
if(NOT OpenCV_FIND_COMPONENTS)
set(OpenCV_FIND_COMPONENTS ${OpenCV_LIB_COMPONENTS})
list(REMOVE_ITEM OpenCV_FIND_COMPONENTS opencv_java)
if(GTest_FOUND OR GTEST_FOUND)
list(REMOVE_ITEM OpenCV_FIND_COMPONENTS opencv_ts)
endif()
@@ -183,7 +187,7 @@ set(OpenCV_FIND_COMPONENTS ${OpenCV_FIND_COMPONENTS_})
# Resolve dependencies
# ==============================================================
if(OpenCV_USE_MANGLED_PATHS)
set(OpenCV_LIB_SUFFIX ".${OpenCV_VERSION}")
set(OpenCV_LIB_SUFFIX ".${OpenCV_VERSION_MAJOR}.${OpenCV_VERSION_MINOR}.${OpenCV_VERSION_PATCH}")
else()
set(OpenCV_LIB_SUFFIX "")
endif()
@@ -198,7 +202,7 @@ foreach(__opttype OPT DBG)
#indicate that this module is also found
string(TOUPPER "${__cvdep}" __cvdep)
set(${__cvdep}_FOUND 1)
else()
elseif(EXISTS "${OpenCV_3RDPARTY_LIB_DIR_${__opttype}}/${OpenCV_${__cvdep}_LIBNAME_${__opttype}}")
list(APPEND OpenCV_LIBS_${__opttype} "${OpenCV_3RDPARTY_LIB_DIR_${__opttype}}/${OpenCV_${__cvdep}_LIBNAME_${__opttype}}")
endif()
endforeach()
@@ -216,17 +220,18 @@ foreach(__opttype OPT DBG)
else()
#TODO: duplicates are annoying but they should not be the problem
endif()
# fix hard coded paths for CUDA libraries under Windows
if(WIN32 AND OpenCV_CUDA_VERSION AND NOT OpenCV_SHARED)
# CUDA
if(OpenCV_CUDA_VERSION AND (CMAKE_CROSSCOMPILING OR (WIN32 AND NOT OpenCV_SHARED)))
if(NOT CUDA_FOUND)
find_package(CUDA ${OpenCV_CUDA_VERSION} EXACT REQUIRED)
else()
if(NOT CUDA_VERSION_STRING VERSION_EQUAL OpenCV_CUDA_VERSION)
message(FATAL_ERROR "OpenCV static library compiled with CUDA ${OpenCV_CUDA_VERSION} support. Please, use the same version or rebuild OpenCV with CUDA ${CUDA_VERSION_STRING}")
message(FATAL_ERROR "OpenCV static library was compiled with CUDA ${OpenCV_CUDA_VERSION} support. Please, use the same version or rebuild OpenCV with CUDA ${CUDA_VERSION_STRING}")
endif()
endif()
list(APPEND OpenCV_EXTRA_LIBS_${__opttype} ${CUDA_LIBRARIES} ${CUDA_npp_LIBRARY} ${CUDA_nvcuvid_LIBRARY} ${CUDA_nvcuvenc_LIBRARY})
list(APPEND OpenCV_EXTRA_LIBS_${__opttype} ${CUDA_LIBRARIES} ${CUDA_npp_LIBRARY})
if(OpenCV_USE_CUBLAS)
list(APPEND OpenCV_EXTRA_LIBS_${__opttype} ${CUDA_CUBLAS_LIBRARIES})
@@ -236,6 +241,13 @@ foreach(__opttype OPT DBG)
list(APPEND OpenCV_EXTRA_LIBS_${__opttype} ${CUDA_CUFFT_LIBRARIES})
endif()
if(OpenCV_USE_NVCUVID)
list(APPEND OpenCV_EXTRA_LIBS_${__opttype} ${CUDA_nvcuvid_LIBRARIES})
endif()
if(WIN32)
list(APPEND OpenCV_EXTRA_LIBS_${__opttype} ${CUDA_nvcuvenc_LIBRARIES})
endif()
endif()
endforeach()
@@ -293,3 +305,11 @@ else()
SET(OpenCV_LIB_DIR ${OpenCV_LIB_DIR_OPT} ${OpenCV_3RDPARTY_LIB_DIR_OPT})
endif()
set(OpenCV_LIBRARIES ${OpenCV_LIBS})
if(CMAKE_CROSSCOMPILING AND OpenCV_SHARED AND (CMAKE_SYSTEM_NAME MATCHES "Linux"))
foreach(dir ${OpenCV_LIB_DIR})
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-rpath-link,${dir}")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-rpath-link,${dir}")
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,-rpath-link,${dir}")
endforeach()
endif()
+15 -9
Ver Arquivo
@@ -19,6 +19,9 @@
/* V4L2 capturing support */
#cmakedefine HAVE_CAMV4L2
/* V4L2 capturing support in videoio.h */
#cmakedefine HAVE_VIDEOIO
/* V4L/V4L2 capturing support via libv4l */
#cmakedefine HAVE_LIBV4L
@@ -175,21 +178,15 @@
/* NVidia Cuda Runtime API*/
#cmakedefine HAVE_CUDA
/* OpenCL Support */
#cmakedefine HAVE_OPENCL
/* AMD's OpenCL Fast Fourier Transform Library*/
#cmakedefine HAVE_CLAMDFFT
/* AMD's Basic Linear Algebra Subprograms Library*/
#cmakedefine HAVE_CLAMDBLAS
/* NVidia Cuda Fast Fourier Transform (FFT) API*/
#cmakedefine HAVE_CUFFT
/* NVidia Cuda Basic Linear Algebra Subprograms (BLAS) API*/
#cmakedefine HAVE_CUBLAS
/* NVidia Video Decoding API*/
#cmakedefine HAVE_NVCUVID
/* Compile for 'real' NVIDIA GPU architectures */
#define CUDA_ARCH_BIN "${OPENCV_CUDA_ARCH_BIN}"
@@ -202,6 +199,15 @@
/* Create PTX or BIN for 1.0 compute capability */
#cmakedefine CUDA_ARCH_BIN_OR_PTX_10
/* OpenCL Support */
#cmakedefine HAVE_OPENCL
/* AMD's OpenCL Fast Fourier Transform Library*/
#cmakedefine HAVE_CLAMDFFT
/* AMD's Basic Linear Algebra Subprograms Library*/
#cmakedefine HAVE_CLAMDBLAS
/* VideoInput library */
#cmakedefine HAVE_VIDEOINPUT
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+36 -14
Ver Arquivo
@@ -2,8 +2,6 @@
# CMake file for OpenCV docs
#
file(GLOB FILES_DOC *.htm *.txt *.jpg *.png *.pdf)
file(GLOB FILES_DOC_VS vidsurv/*.doc)
file(GLOB FILES_TEX *.tex *.sty *.bib)
file(GLOB FILES_TEX_PICS pics/*.png pics/*.jpg)
@@ -11,6 +9,14 @@ if(BUILD_DOCS AND HAVE_SPHINX)
project(opencv_docs)
set(DOC_LIST "${OpenCV_SOURCE_DIR}/doc/opencv-logo.png" "${OpenCV_SOURCE_DIR}/doc/opencv-logo2.png"
"${OpenCV_SOURCE_DIR}/doc/opencv-logo-white.png" "${OpenCV_SOURCE_DIR}/doc/opencv.ico"
"${OpenCV_SOURCE_DIR}/doc/haartraining.htm" "${OpenCV_SOURCE_DIR}/doc/license.txt"
"${OpenCV_SOURCE_DIR}/doc/pattern.png" "${OpenCV_SOURCE_DIR}/doc/acircles_pattern.png")
set(OPTIONAL_DOC_LIST "")
set(OPENCV2_BASE_MODULES core imgproc highgui video calib3d features2d objdetect ml flann gpu photo stitching nonfree contrib legacy)
# build lists of modules to be documented
@@ -54,7 +60,7 @@ if(BUILD_DOCS AND HAVE_SPHINX)
configure_file("${OpenCV_SOURCE_DIR}/modules/refman.rst.in" "${OpenCV_SOURCE_DIR}/modules/refman.rst" IMMEDIATE @ONLY)
file(GLOB_RECURSE OPENCV_FILES_UG user_guide/*.rst)
file(GLOB_RECURSE OPENCV_FILES_UG user_guide/*.rst)
file(GLOB_RECURSE OPENCV_FILES_TUT tutorials/*.rst)
file(GLOB_RECURSE OPENCV_FILES_TUT_PICT tutorials/*.png tutorials/*.jpg)
@@ -68,19 +74,29 @@ if(BUILD_DOCS AND HAVE_SPHINX)
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/mymath.sty ${CMAKE_CURRENT_BINARY_DIR}
COMMAND ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/patch_refman_latex.py" opencv2refman.tex
COMMAND ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/patch_refman_latex.py" opencv2manager.tex
COMMAND ${PDFLATEX_COMPILER} opencv2refman.tex
COMMAND ${PDFLATEX_COMPILER} opencv2refman.tex
COMMAND ${PDFLATEX_COMPILER} opencv2manager.tex
COMMAND ${PDFLATEX_COMPILER} opencv2manager.tex
COMMAND ${PDFLATEX_COMPILER} opencv_user.tex
COMMAND ${PDFLATEX_COMPILER} opencv_user.tex
COMMAND ${PDFLATEX_COMPILER} opencv_tutorials.tex
COMMAND ${PDFLATEX_COMPILER} opencv_tutorials.tex
COMMAND ${CMAKE_COMMAND} -E echo "Generating opencv2refman.pdf"
COMMAND ${PDFLATEX_COMPILER} -interaction=batchmode opencv2refman.tex
COMMAND ${PDFLATEX_COMPILER} -interaction=batchmode opencv2refman.tex
COMMAND ${CMAKE_COMMAND} -E echo "Generating opencv2manager.pdf"
COMMAND ${PDFLATEX_COMPILER} -interaction=batchmode opencv2manager.tex
COMMAND ${PDFLATEX_COMPILER} -interaction=batchmode opencv2manager.tex
COMMAND ${CMAKE_COMMAND} -E echo "Generating opencv_user.pdf"
COMMAND ${PDFLATEX_COMPILER} -interaction=batchmode opencv_user.tex
COMMAND ${PDFLATEX_COMPILER} -interaction=batchmode opencv_user.tex
COMMAND ${CMAKE_COMMAND} -E echo "Generating opencv_tutorials.pdf"
COMMAND ${PDFLATEX_COMPILER} -interaction=batchmode opencv_tutorials.tex
COMMAND ${PDFLATEX_COMPILER} -interaction=batchmode opencv_tutorials.tex
COMMAND ${CMAKE_COMMAND} -E echo "Generating opencv_cheatsheet.pdf"
COMMAND ${PDFLATEX_COMPILER} -interaction=batchmode "${CMAKE_CURRENT_SOURCE_DIR}/opencv_cheatsheet.tex"
COMMAND ${PDFLATEX_COMPILER} -interaction=batchmode "${CMAKE_CURRENT_SOURCE_DIR}/opencv_cheatsheet.tex"
DEPENDS ${OPENCV_DOC_DEPS}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Generating the PDF Manuals"
)
LIST(APPEND OPTIONAL_DOC_LIST "${CMAKE_BINARY_DIR}/doc/opencv2refman.pdf" "${CMAKE_BINARY_DIR}/doc/opencv2manager.pdf"
"${CMAKE_BINARY_DIR}/doc/opencv_user.pdf" "${CMAKE_BINARY_DIR}/doc/opencv_tutorials.pdf" "${CMAKE_BINARY_DIR}/doc/opencv_cheatsheet.pdf")
if(ENABLE_SOLUTION_FOLDERS)
set_target_properties(docs PROPERTIES FOLDER "documentation")
endif()
@@ -97,7 +113,13 @@ if(BUILD_DOCS AND HAVE_SPHINX)
if(ENABLE_SOLUTION_FOLDERS)
set_target_properties(html_docs PROPERTIES FOLDER "documentation")
endif()
endif()
install(FILES ${FILES_DOC} DESTINATION "${OPENCV_DOC_INSTALL_PATH}" COMPONENT main)
install(FILES ${FILES_DOC_VS} DESTINATION "${OPENCV_DOC_INSTALL_PATH}/vidsurv" COMPONENT main)
foreach(f ${DOC_LIST})
install(FILES "${f}" DESTINATION "${OPENCV_DOC_INSTALL_PATH}" COMPONENT main)
endforeach()
foreach(f ${OPTIONAL_DOC_LIST})
install(FILES "${f}" DESTINATION "${OPENCV_DOC_INSTALL_PATH}" OPTIONAL)
endforeach()
endif()
+8
Ver Arquivo
@@ -394,4 +394,12 @@ div.body ul.search li {
div.linenodiv {
min-width: 1em;
text-align: right;
}
div.sphinxsidebar #searchbox input[type="text"] {
width:auto;
}
div.sphinxsidebar #searchbox input[type="submit"] {
width:auto;
}
+2
Ver Arquivo
@@ -1,3 +1,5 @@
#/usr/bin/env python
import sys, glob
sys.path.append("../modules/python/src2/")
+6 -1
Ver Arquivo
@@ -1,3 +1,5 @@
#/usr/bin/env python
import os, sys, fnmatch, re
sys.path.append("../modules/python/src2/")
@@ -36,7 +38,7 @@ doc_signatures_whitelist = [
"CvArr", "CvFileStorage",
# other
"InputArray", "OutputArray",
]
] + ["CvSubdiv2D", "CvQuadEdge2D", "CvSubdiv2DPoint", "cvDrawContours"]
defines = ["cvGraphEdgeIdx", "cvFree", "CV_Assert", "cvSqrt", "cvGetGraphVtx", "cvGraphVtxIdx",
"cvCaptureFromFile", "cvCaptureFromCAM", "cvCalcBackProjectPatch", "cvCalcBackProject",
@@ -114,6 +116,8 @@ def compareSignatures(f, s):
sarg = arg[1]
ftype = re.sub(r"\b(cv|std)::", "", (farg[0] or ""))
stype = re.sub(r"\b(cv|std)::", "", (sarg[0] or ""))
ftype = re.sub(r"\s+(\*|&)$", "\\1", ftype)
stype = re.sub(r"\s+(\*|&)$", "\\1", stype)
if ftype != stype:
return False, "type of argument #" + str(idx+1) + " mismatch"
fname = farg[1] or "arg" + str(idx)
@@ -149,6 +153,7 @@ def formatSignature(s):
if idx > 0:
_str += ", "
argtype = re.sub(r"\bcv::", "", arg[0])
argtype = re.sub(r"\s+(\*|&)$", "\\1", arg[0])
bidx = argtype.find('[')
if bidx < 0:
_str += argtype + " "
+11 -6
Ver Arquivo
@@ -1,3 +1,5 @@
#/usr/bin/env python
# -*- coding: utf-8 -*-
#
# opencvstd documentation build configuration file, created by
@@ -42,21 +44,24 @@ master_doc = 'index'
# General information about the project.
project = u'OpenCV'
copyright = u'2011-2012, opencv dev team'
copyright = u'2011-2013, opencv dev team'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
version_file = open("../modules/core/include/opencv2/core/version.hpp", "rt").read()
version_major = re.search("^W*#\W*define\W+CV_MAJOR_VERSION\W+(\d+)\W*$", version_file, re.MULTILINE).group(1)
version_minor = re.search("^W*#\W*define\W+CV_MINOR_VERSION\W+(\d+)\W*$", version_file, re.MULTILINE).group(1)
version_patch = re.search("^W*#\W*define\W+CV_SUBMINOR_VERSION\W+(\d+)\W*$", version_file, re.MULTILINE).group(1)
version_epoch = re.search("^W*#\W*define\W+CV_VERSION_EPOCH\W+(\d+)\W*$", version_file, re.MULTILINE).group(1)
version_major = re.search("^W*#\W*define\W+CV_VERSION_MAJOR\W+(\d+)\W*$", version_file, re.MULTILINE).group(1)
version_minor = re.search("^W*#\W*define\W+CV_VERSION_MINOR\W+(\d+)\W*$", version_file, re.MULTILINE).group(1)
version_patch = re.search("^W*#\W*define\W+CV_VERSION_REVISION\W+(\d+)\W*$", version_file, re.MULTILINE).group(1)
# The short X.Y version.
version = version_major + '.' + version_minor
version = version_epoch + '.' + version_major
# The full version, including alpha/beta/rc tags.
release = version_major + '.' + version_minor + '.' + version_patch
release = version_epoch + '.' + version_major + '.' + version_minor
if version_patch:
release = release + '.' + version_patch
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
+58 -4
Ver Arquivo
@@ -1,3 +1,4 @@
#/usr/bin/env python
# -*- coding: utf-8 -*-
"""
ocv domain, a modified copy of sphinx.domains.cpp + shpinx.domains.python.
@@ -991,6 +992,11 @@ class DefinitionParser(object):
return rv
def _parse_signature(self):
if r'CvStatModel::train' in self.definition:
# hack to skip parsing of problematic definition
self.pos = self.end
return [ArgumentDefExpr("const Mat&", "train_data", None), ArgumentDefExpr(None, self.definition[self.definition.find("["):-1], None)], False, True
self.skip_ws()
if not self.skip_string('('):
self.fail('expected parentheses for function')
@@ -1074,6 +1080,17 @@ class DefinitionParser(object):
value = None
return MemberObjDefExpr(name, visibility, static, typename, value)
def parse_enum_member_object(self):
visibility, static = self._parse_visibility_static()
typename = None
name = self._parse_type()
self.skip_ws()
if self.skip_string('='):
value = self.read_rest().strip()
else:
value = None
return MemberObjDefExpr(name, visibility, static, typename, value)
def parse_function(self):
visibility, static = self._parse_visibility_static()
if self.skip_word('explicit'):
@@ -1179,6 +1196,8 @@ class OCVObject(ObjectDescription):
def add_target_and_index(self, sigobj, sig, signode):
theid = sig#obj.get_id()
theid = re.sub(r" +", " ", theid)
if self.objtype == 'emember':
theid = re.sub(r" ?=.*", "", theid)
theid = re.sub(r"=[^,()]+\([^)]*?\)[^,)]*(,|\))", "\\1", theid)
theid = re.sub(r"=\w*[^,)(]+(,|\))", "\\1", theid)
theid = theid.replace("( ", "(").replace(" )", ")")
@@ -1292,6 +1311,25 @@ class OCVTypeObject(OCVObject):
signode += nodes.Text(' ')
self.attach_name(signode, obj.name)
class OCVEnumObject(OCVObject):
def get_index_text(self, name):
if self.objtype == 'enum':
return _('%s (enum)') % name
return ''
def parse_definition(self, parser):
return parser.parse_type_object()
def describe_signature(self, signode, obj):
self.attach_modifiers(signode, obj)
signode += addnodes.desc_annotation('enum ', 'enum ')
if obj.typename is not None:
self.attach_type(signode, obj.typename)
signode += nodes.Text(' ')
self.attach_name(signode, obj.name)
class OCVMemberObject(OCVObject):
ismember = True
@@ -1308,12 +1346,20 @@ class OCVMemberObject(OCVObject):
def describe_signature(self, signode, obj):
self.attach_modifiers(signode, obj)
self.attach_type(signode, obj.typename)
signode += nodes.Text(' ')
if obj.typename:
self.attach_type(signode, obj.typename)
signode += nodes.Text(' ')
self.attach_name(signode, obj.name)
if obj.value is not None:
signode += nodes.Text(u' = ' + obj.value)
class OCVEnumMemberObject(OCVMemberObject):
def parse_definition(self, parser):
# parent_class = self.env.temp_data.get('ocv:parent')
# if parent_class is None:
# parser.fail("missing parent structure/class")
return parser.parse_enum_member_object()
class OCVFunctionObject(OCVObject):
def attach_function(self, node, func):
@@ -1447,7 +1493,9 @@ class OCVDomain(Domain):
'pyfunction': ObjType(l_('pyfunction'), 'pyfunc'),
'pyoldfunction': ObjType(l_('pyoldfunction'), 'pyoldfunc'),
'member': ObjType(l_('member'), 'member'),
'type': ObjType(l_('type'), 'type')
'emember': ObjType(l_('emember'), 'emember'),
'type': ObjType(l_('type'), 'type'),
'enum': ObjType(l_('enum'), 'enum')
}
directives = {
@@ -1459,7 +1507,9 @@ class OCVDomain(Domain):
'pyfunction': OCVPyModulelevel,
'pyoldfunction': OCVPyOldModulelevel,
'member': OCVMemberObject,
'emember': OCVEnumMemberObject,
'type': OCVTypeObject,
'enum': OCVEnumObject,
'namespace': OCVCurrentNamespace
}
roles = {
@@ -1474,7 +1524,9 @@ class OCVDomain(Domain):
'pyfunc' : OCVPyXRefRole(),
'pyoldfunc' : OCVPyXRefRole(),
'member': OCVXRefRole(),
'type': OCVXRefRole()
'emember': OCVXRefRole(),
'type': OCVXRefRole(),
'enum': OCVXRefRole()
}
initial_data = {
'objects': {}, # fullname -> docname, objtype
@@ -1562,7 +1614,9 @@ class OCVDomain(Domain):
'pyfunction': _('Python function'),
'pyoldfunction': _('Legacy Python function'),
'member': _('C++ member'),
'emember': _('enum member'),
'type': _('C/C++ type'),
'enum': _('C/C++ enum'),
'namespace': _('C++ namespace'),
}.get(type.lname, _('%s %s') % (self.label, type.lname))
Arquivo binário não exibido.
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
Arquivo binário não exibido.

Alguns arquivos não foram exibidos porque demasiados arquivos foram alterados neste diff Mostrar Mais