500 Commits

Autor SHA1 Mensagem Data
Alexander Smorkalov aa7ea9be78 OpenCV Manager version++ for 2.6.4.2r2 update. 2013-09-18 12:26:41 +04:00
Alexander Smorkalov 114e04ee12 OpenCV version++. Current OpenCv version 2.4.6.2 2013-08-29 19:00:13 +04:00
Alexander Smorkalov 09e66adadc New Tegra detector with Android 4.3 support added. Manager version++.
(cherry picked from commit aa00b5a0ab)

Conflicts:

	platforms/android/service/engine/jni/BinderComponent/TegraDetector.cpp
2013-08-29 18:48:48 +04:00
Alexander Smorkalov ba26f6d48a Native camera libraries updated.
Android 4.3 support added;
ANY camera index support fixed;
applyProperties now uses camera->reconnect() instead close/connect for Android 4.x.
(cherry picked from commit fff91eef0b)
2013-08-29 18:46:45 +04:00
Roman Donchenko a0f6e1ba1d Merge pull request #1103 from apavlenko:ver_2.4.6.1 2013-07-10 15:49:00 +04:00
Andrey Pavlenko 2b2e02166e setting version to 2.4.6.1 (hot-fix release for Linux camera support) 2013-07-10 15:12:39 +04:00
Roman Donchenko 2dedfd9762 Merge pull request #1099 from asmorkalov:linux_vcap_fix 2013-07-09 17:13:05 +04:00
Alexander Smorkalov f77d1f57ee V4L and V4L2 based Video capture bug fix (Bugfix #3144). 2013-07-09 16:07:55 +04:00
Roman Donchenko b1f04c5388 Merge pull request #1097 from apavlenko:ocl_tests_fixes 2013-07-09 14:00:38 +04:00
Andrey Pavlenko fcb4c0e51c fixing working with test data and a small fix for init code
- set init value for `numsdev` to prevent use of uninitialized value
- stop use of 'workdir' and files from samples
- forcing use of 'opencv_extra' instead
Note: set OPENCV_TEST_DATA_PATH to full path to 'opencv_extra/testdata' (gitolite@code.opencv.org:opencv_extra.git) before running the test!
2013-07-09 13:25:21 +04:00
Andrey Pavlenko 1a2458885b Merge pull request #1094 from asmorkalov:android_na_fix 2013-07-08 11:25:40 +04:00
Alexander Smorkalov 69b308a368 Various fixes in android sample NativeActivity. 2013-07-05 14:08:37 +04:00
Roman Donchenko f5089100b9 Merge pull request #1073 from asmorkalov:android_cvjavaframe 2013-07-05 13:41:51 +04:00
Roman Donchenko c4e59866a2 Merge pull request #1074 from devernay:2.4-cap_qt-multithread 2013-07-05 13:28:38 +04:00
Andrey Pavlenko b6b1d5e75d Merge pull request #1092 from asmorkalov:manager_version_inc 2013-07-05 13:02:10 +04:00
Roman Donchenko 36a4d246f4 Merge pull request #1087 from znah:2.4 2013-07-05 12:07:45 +04:00
Alexander Smorkalov e905c81ccc OpenCV Manager version++. 2013-07-05 12:07:04 +04:00
Roman Donchenko dbf02c71b6 Merge pull request #1091 from SpecLad:xls-updates 2013-07-05 12:00:52 +04:00
Roman Donchenko 2b44172026 xls-report.py: make behaviour more intelligent in case of repeated results 2013-07-04 20:01:27 +04:00
Roman Donchenko 0732905cff xls-report.py: write tests in sorted order 2013-07-04 20:01:27 +04:00
Roman Donchenko ea054e2888 xls-report.py: made most columns a little wider 2013-07-04 20:01:27 +04:00
Roman Donchenko 4e939e2fce xls-report.py: added an option to include data from unrecognized XMLs 2013-07-04 20:00:59 +04:00
Roman Donchenko ec1df9f54d Merge pull request #1090 from asmorkalov:android_tbb_downgrade 2013-07-04 19:46:53 +04:00
Alexander Smorkalov c2e6668414 Bug #3124 libopencv_java.so v 2.4.6 hangs on some Android 4.0.3 devices fixed.
Downgrade TBB to 4.1u2 for all platforms, except WinRT.
2013-07-04 18:52:52 +04:00
Roman Donchenko 83fd385bbd xls-report.py: don't eat all errors when reading sheet.conf 2013-07-04 18:03:03 +04:00
Alexander Mordvintsev 3677a66403 line realign 2013-07-04 17:43:38 +04:00
Roman Donchenko a2d576c1bb Merge pull request #1085 from bitwangyaoyao:2.4_optBP 2013-07-04 17:24:21 +04:00
Roman Donchenko 4d569732b9 Merge pull request #1086 from melody-rain:2.4_fix_oclMat_constructor 2013-07-04 17:23:53 +04:00
Jin Ma 97e620b8f3 Fix oclMat constructor when roi is provided. 2013-07-04 16:14:55 +08:00
yao f2333e90f6 optimize stereoBP kernel 2013-07-04 14:46:38 +08:00
Alexander Mordvintsev 8045093cfb GFTT wrapped to python 2013-07-03 22:26:18 +04:00
Frédéric Devernay b524e275c1 allow QtKit capture in secondary threads
[NSRunLoop currentRunLoop] is not the same as in the main thread.
see
https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/F
oundation/Classes/nsrunloop_Class/Reference/Reference.html
"If no input sources or timers are attached to the run loop, this
method exits immediately"

The old code caused grabFrame() to return immediately if the capture
was not done in the main thread.
This code works correctly, even in secondary threads, provided that all
capture functions are called in the *same* thread
2013-07-02 18:08:12 +02:00
Alexander Smorkalov 91b713b8c9 JavaCameraView delivers same frame twice (Bug #3123) fixed. 2013-07-02 12:58:59 +04:00
Roman Donchenko 6bf8f474fa Merge pull request #1051 from pengx17:2.4_fback_ocl 2013-07-01 13:45:43 +04:00
Roman Donchenko c8cd2cf601 Merge pull request #1061 from bitwangyaoyao:2.4_fix2 2013-07-01 13:21:12 +04:00
Roman Donchenko 087bab6ceb Merge pull request #1060 from pengx17:2.4_setbinary_fix 2013-07-01 13:20:51 +04:00
Roman Donchenko 38cf0a692e Merge pull request #1055 from pengx17:2.4_ocl_hang_workaround 2013-07-01 13:20:04 +04:00
Andrey Pavlenko a4c38196bc Merge pull request #1069 from apavlenko:fix_bin_compat_checker 2013-07-01 12:10:57 +04:00
Andrey Pavlenko 97b939195f adding 'ios.h' to ignore list should work on non-Mac) 2013-07-01 10:03:08 +04:00
Roman Donchenko eedc032b98 Merge pull request #1067 from asmorkalov:android_service_readme 2013-06-28 19:47:30 +04:00
Roman Donchenko 43632bf973 Merge pull request #1065 from apavlenko:fix_eclipse_warning 2013-06-28 19:32:44 +04:00
Roman Donchenko d60cb1d00a Merge pull request #1064 from asmorkalov:winrt_sample_fix 2013-06-28 19:08:12 +04:00
Alexander Smorkalov 8b6f1d9bd9 OpenCV Version++; Manager Version++ 2013-06-28 18:25:53 +04:00
Andrey Pavlenko 6069967109 removing unused import 2013-06-28 17:28:57 +04:00
Alexander Smorkalov 67d4d9e9f4 Path to OpenCV dll libs fixes. 2013-06-28 16:48:27 +04:00
Roman Donchenko 4b51b1e3a8 Merge pull request #1059 from dominikrose:dc1394_2-1394b 2013-06-28 14:47:45 +04:00
Roman Donchenko 1707b1769f Merge pull request #1063 from alekcac:conversion 2013-06-28 14:41:35 +04:00
Roman Donchenko a96466a73a Merge pull request #1062 from kirill-kornyakov:fixes-for-documentation 2013-06-28 14:35:51 +04:00
Roman Donchenko 156155addb Merge pull request #1018 from jet47:cuda-5.5-arm 2013-06-28 14:26:45 +04:00
yao c66e27d49e stereoBM fix an error on Linux when running full performance test 2013-06-28 17:45:39 +08:00
Alexander Shishkov 7b06592dea added conversions between UIImage and cv::Mat 2013-06-28 13:26:54 +04:00
Kirill Kornyakov aef347e7b3 Removed references to opencv.itseez.com 2013-06-28 12:48:12 +04:00
Kirill Kornyakov 0339dd51f1 Removed all references to trunk 2013-06-28 12:38:44 +04:00
yao c73a10cb4d warnings fix 2013-06-28 16:23:01 +08:00
Kirill Kornyakov cbed07bc18 Removed references to YG from samples 2013-06-28 12:21:52 +04:00
Kirill Kornyakov f065c46fbe Completely get rid of opencv_group 2013-06-28 12:15:14 +04:00
Kirill Kornyakov a78ebc1175 Updated a couple of more links 2013-06-28 12:12:53 +04:00
Kirill Kornyakov 2cacad9470 updated email address 2013-06-28 11:53:39 +04:00
Kirill Kornyakov 2980a88570 Mentioned 2.4 and master branches 2013-06-28 11:51:40 +04:00
Kirill Kornyakov e447d87496 Added link to contribution process, updated formatting 2013-06-28 11:44:10 +04:00
Alexander Shishkov a8db327574 changed contacts in tutorual 2013-06-28 11:44:09 +04:00
Roman Donchenko 3b78fe2684 Merge pull request #1054 from asmorkalov:opencv_version 2013-06-28 11:29:55 +04:00
yao 6982ea5a66 some tweaks to samples 2013-06-28 15:08:39 +08:00
yao c1a59b8d80 more fix to HOG 2013-06-28 13:38:58 +08:00
yao f1d9680ba8 format the ocl's samples name 2013-06-28 11:44:43 +08:00
yao 587fb4940d some accuracy fix of HOG 2013-06-28 11:43:43 +08:00
peng xiao a5383b8627 Move function definition from header to cpp. 2013-06-28 10:52:39 +08:00
peng xiao e858a6c347 Renew function logic. 2013-06-28 10:39:09 +08:00
peng xiao 14dd345cdf Fix ocl::setBinaryDiskCache
Previously the function requires Info::Impl implicitly. A call will create
new Context this function which is not intended.
The properties are now moved to global scope to fix this issue.
2013-06-28 10:12:18 +08:00
Dominik Rose d39aeeca0f Merge remote-tracking branch 'remotes/upstream/2.4' into dc1394_2-1394b 2013-06-27 19:43:05 +02:00
Dominik Rose e32700cf8f dc1394-2: support for operation mode 1394b added 2013-06-27 15:05:32 +02:00
Roman Donchenko d76468c223 Merge pull request #1040 from asmorkalov:winrt 2013-06-27 16:59:25 +04:00
Roman Donchenko 5d7419e658 Merge pull request #1056 from asmorkalov:android_old_remove 2013-06-27 16:29:56 +04:00
Roman Donchenko 51008322c5 Merge pull request #1057 from SpecLad:gtest-param-filter 2013-06-27 15:50:31 +04:00
Alexander Smorkalov 7c5bd78804 Test fixes
Calib3d badarg tests fixed. Default exception handling enabled;
Highgui Video I/O tests fixed on ARM;
Code cleanup.
2013-06-27 15:47:37 +04:00
Alexander Smorkalov 070a77ae0d TBB updated to version 4.1 update 4. 2013-06-27 15:47:23 +04:00
Roman Donchenko 664b720e4d Extended Google Test to allow filtering by parameter value. 2013-06-27 13:14:37 +04:00
Roman Donchenko f477696cc5 Merge pull request #1050 from pengx17:2.4_clach_mod 2013-06-27 12:22:01 +04:00
Alexander Smorkalov e241c14b94 OpenCV Library and Manager version incremented.
OpenCV Version 2.4.6;
OpenCV Manager Version 2.8;
Doc fixes.
2013-06-27 12:05:25 +04:00
Alexander Smorkalov 5de7627806 Old android folder removed.
The changes must be applied after buildbot update only!
2013-06-27 11:26:51 +04:00
peng xiao b2da1cdcc2 Temporarily disable command queue release as it causes program hang at exit 2013-06-27 10:20:21 +08:00
peng xiao fc64faa22e Remove empty cv::ocl::CLAHE class. 2013-06-27 10:06:37 +08:00
peng xiao dcc4766129 Fix white-spacing 2013-06-27 09:57:42 +08:00
Roman Donchenko 76efc9853a Merge pull request #1053 from snosov1:unreliable-results-fix 2013-06-26 17:00:15 +04:00
Roman Donchenko bf6b119a3f Merge pull request #1045 from bitwangyaoyao:2.4_fix 2013-06-26 16:55:06 +04:00
Roman Donchenko 1cfe5aa41e Merge pull request #1048 from SpecLad:xls-conf 2013-06-26 16:53:50 +04:00
Alexander Smorkalov 347c86d9b5 Windows RT related code cleanup.
Windows RT sample cleanup.
Video I/O code cleanup.
2013-06-26 05:44:10 -07:00
Roman Donchenko a335fc591f Merge pull request #1052 from SpecLad:ocl-mingw-warnings 2013-06-26 16:13:47 +04:00
Sergei Nosov 29955620e0 multiruns added to avoid the 'unreliable results' error 2013-06-26 15:07:39 +04:00
Roman Donchenko 5b2b76763e Fix miscellaneous warnings from compiling with MinGW.
Note that MinGW defines NOMINMAX by default.
2013-06-26 14:59:00 +04:00
peng xiao 9270205947 Fix build errors 2013-06-26 17:24:09 +08:00
yao 2ec1140b25 fix pyrlk 2013-06-26 16:58:20 +08:00
peng xiao 132b885b24 Add opencl implementation of Farnback optical flow. 2013-06-26 16:35:19 +08:00
peng xiao cc3fb3d182 Let CLAHE_OCL reuse cv::CLAHE abstract class. 2013-06-26 10:50:51 +08:00
Alexander Smorkalov 91c519467d WinRT build fix for samples and static libs. 2013-06-25 03:36:07 -07:00
Alexander Smorkalov b0854c605a Windows RT sample improved.
Corrent histogram output on YUV image implemented;
Some code refactoring done.
2013-06-25 03:36:05 -07:00
Alexander Smorkalov bf22567c09 Transform selection implemented in sample GUI.
Gistogram output does not work propertly due color conversion problems.
2013-06-25 03:36:04 -07:00
Alexander Smorkalov de9f659f1e Several transforms added to sample IMFTransform. 2013-06-25 03:36:03 -07:00
Alexander Smorkalov 9e06287121 Windows RT sample updated.
Unused scenarious removed.
Grey scale convertion replaced with cv::Canny call.
2013-06-25 03:36:01 -07:00
Alexander Smorkalov 4990336760 Base camera access sample for Windows RT added.
Microsoft Media Foundation Camera Sample for Windows RT added.
2013-06-25 03:36:00 -07:00
Alexander Smorkalov ee591efb9f Build fix for Windows RT. 2013-06-25 03:35:58 -07:00
Alexander Smorkalov 34c6598752 Perf test failure fixes for Media Foundation. 2013-06-25 03:35:57 -07:00
Alexander Smorkalov 2bc1d3709c GetProperty method for MSMF VideoCapture implemented. 2013-06-25 03:35:56 -07:00
Alexander Smorkalov 08a0e1c91b TBB support for WinRT fixed.
Development release of TBB with WinRT support added;
TBB.dll is placed in bin folder now.
2013-06-25 03:35:54 -07:00
Alexander Smorkalov 43122939cb Media foundation video i/o fixes.
Bug in Video for Windows capture init fixed;
Media Foundation based capture finalization fixed;
Highgui tests for video i/o updated.
2013-06-25 03:35:30 -07:00
yao 1227e00f3d fix moments 2013-06-25 16:26:33 +08:00
Roman Donchenko 381057eaad Merge pull request #1002 from asmorkalov:doc_warning_fix 2013-06-25 11:42:00 +04:00
Roman Donchenko f8e187e1e1 Merge pull request #1035 from SpecLad:cv-concurrency 2013-06-25 11:33:16 +04:00
Roman Donchenko e6784ca8a0 Merge pull request #1021 from alekcac:platforms 2013-06-25 11:32:52 +04:00
yao dbdeff2069 fix stereobm crash on some cpu ocl 2013-06-25 14:12:02 +08:00
yao 6db776f957 add "-c" for cpu ocl mode in perf tests 2013-06-25 14:11:28 +08:00
Roman Donchenko c244f000ab Merge pull request #1030 from SpecLad:ts-impl-variants 2013-06-24 18:28:13 +04:00
Roman Donchenko 961251f0ca Merge pull request #1029 from SpecLad:have-qt-config 2013-06-24 17:03:51 +04:00
Alexander Shishkov bb9a0b7253 Update Info.plist.in 2013-06-24 14:52:17 +04:00
Alexander Smorkalov 996f02a531 Multiple Media Foundation video i/o fixes.
Video i/o tests enabled for media foundation;
Negative stride support added to VideoCapture;
Error handling improved, dead lock in case of playback error fixed;
Some code refacotring done.
2013-06-24 02:45:27 -07:00
Alexander Smorkalov 0c9d776083 Media Foundation-based code refactoring.
I* + SafeRelease -> ComPtr.
2013-06-24 02:45:26 -07:00
Alexander Smorkalov e94cc0b5ee Media Foundation camera capture fixed.
Camera-based VideoCapture updated to fit changes in ImageGrabber from prev
commit
2013-06-24 02:45:25 -07:00
Alexander Smorkalov 9fb762ccec VideoCapture for video files implemented.
Set and Get methods are not implemented;
Camera based video capture is broken due to modifications.
2013-06-24 02:45:24 -07:00
Alexander Smorkalov 22b0cfbaa2 Media Foundation-based VideoWriter improvements.
FourCC parameter handlig added;
Smart pointers instead SafeRelease call;
Windows RT support (vertical mirroring).
2013-06-24 02:45:23 -07:00
Alexander Smorkalov ccb8292e8e Media Foundation-based VideoWriter added 2013-06-24 02:45:22 -07:00
Alexander Smorkalov 033e3092a3 Media Foundation based VideoCapture improved
Code formating fixed;
GrabFrame method implemented correclty.
2013-06-24 02:45:21 -07:00
Alexander Smorkalov e3577c2f58 Build with dev release of TBB enabled. 2013-06-24 02:45:21 -07:00
Roman Donchenko 3bab7391d0 Merge pull request #1028 from SpecLad:ocl-clahe-dtor 2013-06-24 13:18:28 +04:00
Roman Donchenko c16316c4b4 Replaced the semi-public CV_PARALLEL_FRAMEWORK macro with a function.
That way, core/internal.hpp doesn't have to depend on cvconfig.h, which we
don't ship.
2013-06-24 12:57:14 +04:00
Roman Donchenko 171a56fe82 Merge pull request #1034 from pengx17:2.4_oclmat_inoutarray 2013-06-24 12:27:26 +04:00
Roman Donchenko 7cb047e2d9 Merge pull request #1031 from pengx17:2.4_fix_converTo 2013-06-24 12:25:48 +04:00
Roman Donchenko 4ed3d33dd7 Merge pull request #1025 from bitwangyaoyao:2.4_tests 2013-06-24 12:11:04 +04:00
Roman Donchenko b0421cafab Merge pull request #1022 from bitwangyaoyao:2.4_hog 2013-06-24 12:08:59 +04:00
Roman Donchenko 5fa200763f Merge pull request #1026 from SpecLad:ts-version-prop 2013-06-21 18:00:59 +04:00
Roman Donchenko e3ae36dcb3 Merge pull request #1033 from SpecLad:xls++ 2013-06-21 17:13:33 +04:00
Roman Donchenko d4a8b87645 Wrote relevant docs. 2013-06-21 16:45:17 +04:00
Roman Donchenko 0e3a9eaf98 Made Collector render property sets as dicts instead of tuples of pairs. 2013-06-21 13:43:16 +04:00
peng xiao 290c8db0a8 Revise naming for getOclMat function. 2013-06-21 14:51:23 +08:00
yao 6326739b44 a bug fix in stereo_match sample 2013-06-21 14:50:08 +08:00
peng xiao e129638263 Add a workaround to interpolate between oclMat and Input/OutputArray. 2013-06-21 14:05:29 +08:00
Roman Donchenko 2688e22cb5 Made xls-report.py use global properties in XML files.
Now it can determine, without looking at the file name, both the module
name and the configuration name (the latter with a little help from the
configuration file).
2013-06-20 19:57:45 +04:00
Roman Donchenko 57317c3196 Use log formatting as intended. 2013-06-20 19:39:02 +04:00
Roman Donchenko 3ea4836a0a Changed the impls argument to be an array name.
Turns out, you can't use preprocessor directives inside macro arguments.
Who'd have thought?
2013-06-20 15:18:35 +04:00
Roman Donchenko 3e2c456313 A few minor improvements to the XLS report generator.
* In comparison column headers, switched the order of labels, so that
  it's "to" vs "from".

* When a test was present, but not run successfully, put its status in
  the corresponding cell instead of coloring it gray.
2013-06-20 14:38:01 +04:00
Roman Donchenko e600beb484 Merge pull request #1017 from jet47:fix-gpu-warnings 2013-06-20 12:13:14 +04:00
peng xiao c1f4fe1637 Fix a bug of convertTo.
The bug was found that all 3-channel oclMat's were converted to
4-channel oclMat's after using convertTo function.
2013-06-20 11:26:22 +08:00
Roman Donchenko 51a672ec40 Disabled the cuda variant when CUDA is not available. 2013-06-19 19:16:18 +04:00
Roman Donchenko 7a104d2793 Added an option to print available implementation variants. 2013-06-19 18:47:15 +04:00
Roman Donchenko b581f27249 Made perf tests record module name, selected implementation and number of threads. 2013-06-19 17:55:42 +04:00
Roman Donchenko 936236e4b1 Extended the CPU/GPU selection mechanism in performance tests.
Now it allows choosing between arbitrary implementation variants.
2013-06-19 17:55:42 +04:00
Roman Donchenko 37d19b9c46 Pass the HAVE_QT* flags through the config header, like all others.
I don't know why it didn't work for the original author, but it definitely
works now.
2013-06-19 17:44:12 +04:00
Roman Donchenko 1d9660c6d2 Merge pull request #954 from LeszekSwirski:24_fix-qtwindow 2013-06-19 17:01:57 +04:00
Roman Donchenko 1ed5fb937d Give cv::ocl::CLAHE a virtual destructor, for the usual reasons. 2013-06-19 15:39:11 +04:00
Roman Donchenko d58421c08e Make version-related test properties more useful.
Namely, normalize their names to a common convention and remove useless text
from their values.
2013-06-19 14:45:03 +04:00
Roman Donchenko 1aa7b1596b Merge pull request #1023 from pengx17:2.4_fix_amd_path 2013-06-19 14:43:29 +04:00
yao f1c549fabf revise ocl samples, add tvl1 sample 2013-06-19 16:36:23 +08:00
Roman Donchenko fa158304fe Merge pull request #1016 from SpecLad:xls-report 2013-06-19 12:24:34 +04:00
Roman Donchenko dd23a3c227 Merge pull request #1020 from SpecLad:tests-record-more 2013-06-19 12:24:05 +04:00
yao 2c198f6cd6 revise accuracy and perf tests 2013-06-19 13:03:35 +08:00
peng xiao 9ecbce0111 Fix cmake path finding for amd libs.
There is no WIN64 defined in the environment.
2013-06-19 11:31:42 +08:00
yao 26c246140a optimize hog 2013-06-19 11:20:45 +08:00
Alexander Shishkov 68741bf8a0 moved iOS part to platforms folder 2013-06-19 00:20:21 +04:00
Roman Donchenko 25613fbfd7 Merge pull request #1008 from ivan-korolev:fix_sift_bug_2892 2013-06-18 18:32:03 +04:00
Roman Donchenko 4af7d65224 Made tests record information about CPU features and Tegra optimization status. 2013-06-18 18:26:53 +04:00
Roman Donchenko 24d84a45b1 Made tests record in the XML output which parallel framework was used. 2013-06-18 18:26:53 +04:00
Vladislav Vinogradov 371a9cd833 fixed build with CUDA 5.5 on arm platforms 2013-06-18 17:46:57 +04:00
Vladislav Vinogradov 1492b20472 fix gpu warnings with signed/unsigned char 2013-06-18 17:44:49 +04:00
Alexander Smorkalov 8f7ba03ed2 Some fixes for incorrectly documented parameters identified by rst_parser.py (Bug #1205) 2013-06-18 16:48:24 +04:00
Roman Donchenko 748210e11b Merge pull request #994 from asmorkalov:android_java_wrappers 2013-06-18 16:46:04 +04:00
Alexander Smorkalov 16c4aad36d Java/Python bindings for computeCorrespondEpilines added.
Simle Java test for computeCorrespondEpilines added.
2013-06-18 16:44:23 +04:00
Roman Donchenko 5b39c02c39 Merge pull request #1007 from alekcac:i_camera 2013-06-18 15:54:01 +04:00
Roman Donchenko 584f0745d0 Made xls-report.py ignore tests that were not successful. 2013-06-18 13:41:41 +04:00
Roman Donchenko 0f1156bbb6 Made the order of tests in XLS reports deterministic. 2013-06-18 13:37:40 +04:00
Roman Donchenko 4d7b1b5ede In the XLS report, enabled word wrapping for header cells.
Otherwise, Excel ignores line breaks in them.
2013-06-18 12:31:43 +04:00
Roman Donchenko 6ff207b53a Added a new and improved version of the XLS report generator. 2013-06-18 12:31:43 +04:00
Roman Donchenko f003e29dc0 Updated testlog_parser.py to the latest version from the private repo. 2013-06-18 12:31:43 +04:00
Alexander Shishkov 24fd2cc326 updated licenses 2013-06-18 07:02:09 +04:00
Alexander Shishkov 5db08961ce fixed Kirill's comments 2013-06-18 06:59:52 +04:00
Ivan Korolev fee8121040 Added regression tests for SURF/SIFT (related to #2892) 2013-06-14 17:08:01 +04:00
Roman Donchenko 843094a07f Merge pull request #996 from jet47:gpu-nvcuvid-libraries 2013-06-14 16:23:02 +04:00
Roman Donchenko 7308a4a845 Merge pull request #995 from jet47:fix-bug-2985 2013-06-14 16:22:47 +04:00
Roman Donchenko 918f37542b Merge pull request #999 from snosov1:unreliable-results-fix 2013-06-14 16:19:50 +04:00
Roman Donchenko 9cbeea03fa Merge pull request #1005 from alekcac:doc_fix 2013-06-14 15:53:36 +04:00
Roman Donchenko c4974a2511 Merge pull request #1004 from jet47:fix-bug-3068 2013-06-14 15:52:56 +04:00
Roman Donchenko fbc6814023 Merge pull request #987 from jet47:bug-3085-fix 2013-06-14 15:49:33 +04:00
Roman Donchenko 47ea0614dc Merge pull request #969 from pengx17:2.4_binary_cache 2013-06-14 15:47:23 +04:00
Roman Donchenko 0124902f42 Merge pull request #929 from dominikrose:mingw-libdc1394-2-windows 2013-06-14 15:46:25 +04:00
Alexander Shishkov 0cee15eb7f Updated iOS camera. Added rotation flag. Added functions to lock/unlock focus, white balance and exposure. 2013-06-14 15:10:25 +04:00
Roman Donchenko 308c7f5f6e Merge pull request #1000 from ivan-korolev:fix_sift_bug_2892 2013-06-14 13:50:01 +04:00
Roman Donchenko aea96e98bb Merge pull request #1001 from ivan-korolev:fix_stitching_bug_2405 2013-06-14 13:47:33 +04:00
Alexander Shishkov 93200922fd Fix bug with indices 2013-06-14 13:12:35 +04:00
Vladislav Vinogradov a4750f49c6 fix for bug #3068 (PCA::computeVar for double input):
The matrix g  can have CV_32F or CV_64F type,  but g.at uses only float template.
This fix adds specialization for double type.
2013-06-14 12:53:44 +04:00
peng xiao e6b18fc492 Fix a bug caused by NDEBUG macro; it is now removed.
Revise some descriptions of the enums.
2013-06-14 16:37:00 +08:00
Ivan Korolev 58fa401b4d Fixed a bug #2405 2013-06-14 10:43:20 +04:00
Andrey Pavlenko b84296c02e Merge pull request #998 from asmorkalov:android_cmake_mips_fix 2013-06-14 10:17:23 +04:00
Ivan Korolev fc82150edc Fixed a bug #2892 2013-06-14 08:21:42 +04:00
Sergei Nosov c90abb6a03 add multiruns to fix "unreliable results" error 2013-06-13 21:14:42 +04:00
Roman Donchenko 8fa1e756e2 Merge pull request #993 from ivan-korolev:fix_videostab_bug_3023 2013-06-13 16:57:12 +04:00
Roman Donchenko 533d4fe051 Merge pull request #988 from snosov1:3071-fix 2013-06-13 16:56:41 +04:00
Roman Donchenko b725cbf73f Merge pull request #986 from pengx17:2.4_initiated_context 2013-06-13 16:55:56 +04:00
Roman Donchenko 5bb6d36684 Merge pull request #982 from pengx17:2.4_fix_two_bugs 2013-06-13 16:55:12 +04:00
Roman Donchenko 462047d1e4 Merge pull request #981 from SeninAndrew:ximea_camera_support_fix 2013-06-13 16:54:45 +04:00
Alexander Smorkalov 80f6ede233 Fix build problems on MIPS and Linaro NDK.
Merged android.toolchain.cmake from project
https://github.com/taka-no-me/android-cmake
commit: fd1f7055f8b7338644d58d9a2015a784dfa3a5ca
2013-06-13 16:51:45 +04:00
Vladislav Vinogradov 0367a7f992 link with nvcuvenc and ffmpeg libraries only if WITH_NVCUVID is enabled 2013-06-13 16:46:34 +04:00
Roman Donchenko 7aac543570 Merge pull request #991 from asmorkalov:android_javadoc_fix 2013-06-13 16:30:14 +04:00
Vladislav Vinogradov 055137582c fix for bug #2985:
OPENCLAMDBLAS and OPENCLAMDFFT never detected under linux.
lib64/import and lib32/import is the path on Windows but not Linux.
for CLAMDBLAS library we should use CLAMDBLAS_PATH (not CLAMDFFT_PATH)
2013-06-13 16:13:46 +04:00
Ivan Korolev de4c3f0178 Fixed a bug related to video stabilization crashes with a blank video (Bug #3023) 2013-06-13 13:41:43 +04:00
Alexander Smorkalov 83e9b0a87a Javadoc waring fix. 2013-06-13 12:40:14 +04:00
Sergei Nosov 982ef83f80 Fixes bug #3071.
If we have perfect matches (min_dist == 0.0), then strict comparison
fails. Making it non-strict results in treating perfect matches as
good.
2013-06-13 11:51:45 +04:00
Vladislav Vinogradov e433145b7e fix for Bug #3085:
weights array is only allocated for (l_count+1) elements,
but then weights[l_count+1] element is accessed.
2013-06-13 10:22:56 +04:00
peng xiao 5fd724b54a Add a function to query if global OpenCL context is initialized. 2013-06-13 10:46:12 +08:00
Peng Xiao d9ab22e4ed Fix two bugs related to opencl context.
1. As getDevice will implicitly call setDevice, in getContext we should not need to call it again.
2. Fix an incorrect type casting.
2013-06-12 13:55:20 +08:00
Andrew Senin 8eb6decb25 Fixed Ximea cameras support 2013-06-11 21:17:31 +04:00
Roman Donchenko 98f6a4a615 Merge pull request #972 from jet47:mog2-params-bug-2168 2013-06-11 18:21:52 +04:00
Roman Donchenko a4ecd32176 Merge pull request #980 from SpecLad:include-config 2013-06-11 18:18:14 +04:00
Roman Donchenko 572cfc99a8 Merge pull request #973 from pengx17:2.4_oclclahe 2013-06-11 18:17:57 +04:00
Roman Donchenko 3af21cad4c Merge pull request #903 from aks2:2.4 2013-06-11 17:35:39 +04:00
Peng Xiao c8398c9fdc Use anonymous enumerations instead of constants 2013-06-11 20:32:55 +08:00
Roman Donchenko a75fbb0031 Merge pull request #968 from asmorkalov:android_na_cproj_fix 2013-06-11 11:59:32 +04:00
Roman Donchenko d583a79869 Revert "Add a variant of detectMultiScale with an argument 'weights'"
It was merged by mistake.

This reverts commit ab6be9b7b7.
2013-06-10 17:06:34 +04:00
Vadim Pisarevsky 52e9974431 Merge pull request #961 from PeterMinin:detected_objects_weight 2013-06-10 15:22:46 +04:00
Roman Donchenko 1b689a7431 Merge pull request #971 from SpecLad:matchers-ctor 2013-06-10 15:06:31 +04:00
Roman Donchenko 55e83b8d18 Merge pull request #970 from asmorkalov:dshow_valid_check_fix 2013-06-10 15:06:14 +04:00
Alexander Smorkalov 956d8027ef Bug #3044 cap_dshow.cpp forgotten validity check fixed. 2013-06-10 13:29:45 -07:00
Roman Donchenko 3016986833 Merge pull request #965 from apavlenko:fix_java_empty_mats 2013-06-10 15:04:16 +04:00
Peng Xiao 1d8cd3a717 Add ocl CLACH implementation.
Test cases (accuracy and performance) are provided.
2013-06-10 18:37:48 +08:00
Vladislav Vinogradov 99a5b3417a added missing BackgroundSubtractorMOG2 parameters 2013-06-10 13:41:46 +04:00
Roman Donchenko 41482fe56c Erase MatchPairsBody's copy constructor.
It's the same as the implicitly defined one, and it causes a -Wextra warning
(not initializing the base class in a copy constructor).
2013-06-10 13:30:23 +04:00
Peng Xiao e77abeef16 Add a new global function to control ocl binary storage
Previously the feature is controlled by setBinpath implicitly.
We add the function to cope with setBinpath and setBinpath is only
useful when setBinaryDiskCache is set.
Refer to the header to see more info.
2013-06-10 16:38:22 +08:00
Alexander Smorkalov a39a9f677f NativeActivity sample build with Eclipse CDT fixed. 2013-06-10 11:06:28 +04:00
Andrey Pavlenko 264d26e671 fixing empty Mat case 2013-06-08 12:41:57 +04:00
Roman Donchenko 33d1f67501 Include the OpenCV config headers into every module.
This has no bearing on compilation, but it makes them show up in IDEs.
2013-06-07 19:07:55 +04:00
Vadim Pisarevsky 4cf7a963a0 Merge pull request #946 from bitwangyaoyao:2.4_samples2 2013-06-07 13:44:29 +04:00
Vadim Pisarevsky 51f81eec36 Merge pull request #957 from pengx17:2.4_fix_corner_detector 2013-06-07 13:44:10 +04:00
Roman Donchenko 68e4256fd2 Merge pull request #960 from SpecLad:extra-modules 2013-06-07 11:29:40 +04:00
Roman Donchenko 9b46c6fb8a Merge pull request #959 from SpecLad:qt4-build 2013-06-07 11:27:46 +04:00
Peter Minin ab6be9b7b7 Add a variant of detectMultiScale with an argument 'weights' that
receives the number of neighbors joined into each detected object
2013-06-06 19:00:55 +04:00
Roman Donchenko e53b7d040c Merge pull request #955 from SpecLad:symlink 2013-06-06 17:58:15 +04:00
Leszek Swirski 7d0f6b4d68 Fix image saving from QT toolbar 2013-06-06 11:15:00 +01:00
Leszek Swirski 9a1cc06ebe Fix pixel value rendering for non-fixed-size QT windows 2013-06-06 11:14:52 +01:00
Roman Donchenko 8714cbac91 Fix a missing header path when building with Qt 4.
Also, removing explicit include path configuration,
since QT_USE_FILE takes care of that.
2013-06-06 14:09:33 +04:00
peng xiao 429f84e59e Fix a bug of cornerHarris and cornerMinEigenVal.
The bug is a buffer overrun when border type is reflect101.
It is found that gfft crashed with input of size 100x100 on Intel CPU.
2013-06-06 11:44:35 +08:00
Roman Donchenko a954d3630f Add support for adding custom OpenCV modules. 2013-06-05 18:10:44 +04:00
Roman Donchenko 7f9675bcc0 Merge pull request #953 from jet47:fix-bug-3069 2013-06-05 17:56:35 +04:00
Roman Donchenko 7a80b9adaf Merge pull request #952 from SpecLad:jepg 2013-06-05 17:50:12 +04:00
Roman Donchenko 985bfea556 Don't resolve symlinks when looking for modules.
We don't really need it, it makes the code longer, and it can lead to
inconsistent paths when OpenCV is itself inside a symlink.
2013-06-05 17:17:13 +04:00
Roman Donchenko 087db2949a Merge pull request #948 from jet47:cuda-5.5-support 2013-06-05 17:04:22 +04:00
Roman Donchenko 127a152f76 Merge pull request #890 from caorong:patch-1 2013-06-05 16:00:25 +04:00
caorong a2adafd508 fix a bug(DetectorType never change)
changed line281 -> line220
Presentation:
because line 220 give the globle var mDetectorType,and in line 230 it will be compared with mDeteorType !!!  it will never be unequal ~
fix:
change mDetectorType(previous globle var) to a new local val tmpDetectorType
2013-06-05 15:57:54 +04:00
Vladislav Vinogradov 31a5f7ef3c fixed bug #3069 (infinite loop in GPU LBP Cascade detectMultiScale) 2013-06-05 14:08:55 +04:00
Roman Donchenko 93a44d4236 Fix typo in .gitattributes. 2013-06-05 13:51:11 +04:00
Roman Donchenko 27bff3c175 Merge pull request #947 from jet47:fix-gpu-arm-build 2013-06-05 11:50:12 +04:00
Roman Donchenko 99340b5613 Merge pull request #941 from apavlenko:signed_char 2013-06-05 11:27:08 +04:00
Roman Donchenko 5b5815d8cf Merge pull request #893 from jet47:gpu-arm-fixes 2013-06-04 17:52:30 +04:00
Roman Donchenko f527b6a93f Merge pull request #940 from SpecLad:autolock 2013-06-04 17:50:31 +04:00
Vladislav Vinogradov 89f3c40d79 fixed BroxOpticalFlow sanity test (increase epsilon value)
+ interpolateFrames and createOpticalFlowNeedleMap
2013-06-04 15:01:06 +04:00
Vladislav Vinogradov 4a770535c4 fixed BoxFilter sanity test (different rounding results) 2013-06-04 14:59:47 +04:00
Vladislav Vinogradov 516e5b2563 fixed BroxOpticalFlow regression test
the output of BroxOpticalFlow differs a bit in CUDA 5.5
2013-06-04 13:58:45 +04:00
Vladislav Vinogradov 918381875a rewrite gpu/device/vec_math.hpp file
old version isn't compiled with CUDA 5.5
new version doesn't depend on functional.hpp
2013-06-04 13:57:35 +04:00
Vadim Pisarevsky 119b7a298d Merge pull request #933 from pengx17:2.4_macfix_cont 2013-06-04 13:34:53 +04:00
Vadim Pisarevsky 2d88f20c1e Merge pull request #935 from pengx17:2.4_filter2d_fix 2013-06-04 13:34:40 +04:00
Vadim Pisarevsky 0cb1644825 Merge pull request #936 from bitwangyaoyao:2.4_perf 2013-06-04 13:34:25 +04:00
Vadim Pisarevsky e0c2daadbf Merge pull request #937 from bitwangyaoyao:2.4_fixPyrLK 2013-06-04 13:34:09 +04:00
Vadim Pisarevsky 267eb99a7d Merge pull request #938 from pengx17:2.4_surf_sample 2013-06-04 13:33:49 +04:00
Vadim Pisarevsky 37953b7cf0 Merge pull request #939 from pengx17:2.4_getDevice 2013-06-04 13:33:21 +04:00
Vladislav Vinogradov 3aea7e8f8d fixed gpu module build on arm platform
links with CUDA driver library only if we use video encoding/decoding
2013-06-04 12:51:36 +04:00
yao f049aa7674 use GoodFeaturesToTrackDetector_OCL 2013-06-04 15:59:21 +08:00
peng xiao a7a94de74a Fix a bug of gfft.
When user provided corners buffer is big enough to be copied to from
tmpCorners_, we allow the buffer to be reused other than allocate a new
cl_mem object.
2013-06-04 15:55:33 +08:00
yao dc937c10f9 change a test image of pyrlk 2013-06-04 11:31:54 +08:00
Roman Donchenko 75cf5cc4ee Merge pull request #943 from jet47:cuda-5.5-support 2013-06-03 16:08:23 +04:00
Roman Donchenko 5237647f75 Merge pull request #944 from jet47:cmake-2.8.11-cuda-fix 2013-06-03 16:08:06 +04:00
Vladislav Vinogradov bcf8bdb401 fixed constructors for functional objects (added __host__ modifier) 2013-06-03 14:41:23 +04:00
Vladislav Vinogradov ff28bf831f disabled samples with driver api 2013-06-03 14:01:04 +04:00
Vladislav Vinogradov 58e472754a fixed norm diff function (it uses pre-allocated buffer now) 2013-06-03 13:37:44 +04:00
Vladislav Vinogradov 0521e8908c fixed NPP error constants usage 2013-06-03 13:37:36 +04:00
Vladislav Vinogradov 09a7e86a39 fixed NPP library search (it was splitted) 2013-06-03 13:37:30 +04:00
Vladislav Vinogradov 013581f371 fixed GPU module compialtion with CMake 2.8.11
CMake 2.8.11 removed linkage with CUDA driver library,
but it's used by gpu video encoding/decoding
2013-06-03 13:29:26 +04:00
Roman Donchenko e9c298b784 Merge pull request #912 from SpecLad:contributing 2013-06-03 12:13:45 +04:00
Roman Donchenko 34c5f47f60 Merge pull request #934 from SpecLad:parallel-for 2013-06-03 12:13:16 +04:00
Andrey Pavlenko 081c47e3df making the comment less ambigous 2013-05-31 19:55:51 +04:00
Andrey Pavlenko 6f006e50dc setting 'char' to be signed by default since some tests fail when it's wrong (e.g. native compilation on ARM Linux) 2013-05-31 18:58:30 +04:00
Roman Donchenko 8a4090fe3f Make AutoLock noncopyable (it would break on copying, anyway). 2013-05-31 17:27:42 +04:00
Roman Donchenko 85360572b0 Merge pull request #931 from jet47:gpu-test-fixes 2013-05-31 16:46:31 +04:00
peng xiao cdb16f1120 Fix build error 2013-05-31 17:29:55 +08:00
peng xiao 97b86aa259 Initialize OpenCL context at the end of getDevice call.
Added for better compatibility with the current samples/test cases.
User now will be able to initialize OpenCL context explicitly with
ocl::getDevice api.
This may be obsoleted in future releases.
2013-05-31 16:48:40 +08:00
Roman Donchenko f90fd5b0da Split CLAHE into its own file, because it's faster that way.
Yes, it's as ludicrous as it sounds, but it's still true. Bizarrely,
the previous commit makes CLAHE run about 10% slower on Android, even
though it doesn't even touch any CLAHE code. Splitting it off fixes that,
although the reason it does is a mystery for the ages.

It's cleaner when it's in its own file, anyway. ;=]
2013-05-31 12:22:04 +04:00
Roman Donchenko 29b13ec1de Replaced most of the usages of parallel_for with that of parallel_for_.
This should allow many algorithms to take advantage of more parallelization
technologies.
2013-05-31 12:22:04 +04:00
peng xiao d85f27b537 Update ocl::surf_matcher sample.
The new sample adjust some parameters thus it should always be able to
calculate valid homography matrix when input is box.png and
box_in_scene.png.
Pure cpp surf and bfmatcher implementation is also added to show the user
its accuracy and performance.
2013-05-31 16:06:56 +08:00
yao 15a213d3fc fix a crash on Linux 2013-05-31 15:35:54 +08:00
yao abefcc6061 Adjust perf_filters, as this function only supports 3x3 kernel 2013-05-31 15:16:03 +08:00
peng xiao b1c248fcc9 Fix ocl::filter2D.
In current implementation, this function only works when anchor point is
in the kernel center and kernel size supported is either 3x3 or 5x5.
2013-05-31 10:53:52 +08:00
peng xiao fdc133d8c9 Fix ocl::pyrup kernel build on Mac. 2013-05-30 16:34:20 +08:00
Vadim Pisarevsky 37091b086c Merge pull request #932 from bitwangyaoyao:2.4_fixBFM 2013-05-30 12:21:27 +04:00
yao 5b598f8a0e a few fixes of ocl::perf test cases 2013-05-30 16:20:31 +08:00
Vadim Pisarevsky 6bb9342a5f Merge pull request #918 from bitwangyaoyao:2.4_samples 2013-05-30 12:01:40 +04:00
Vadim Pisarevsky 5a4efe8bcf Merge pull request #924 from pengx17:2.4_arithm_fix 2013-05-30 12:01:25 +04:00
Vadim Pisarevsky 678371be39 Merge pull request #925 from pengx17:2.4_canny_tmp_fix 2013-05-30 12:01:09 +04:00
Vadim Pisarevsky c176131a67 Merge pull request #927 from bitwangyaoyao:2.4_perf 2013-05-30 12:00:47 +04:00
Roman Donchenko c3f5e73769 Merge pull request #930 from pengx17:2.4_haar_ext 2013-05-30 11:57:24 +04:00
yao 7ed9c0e87a Fix brute_force_matcher's hung on some Intel CPU OCL 2013-05-30 14:57:15 +08:00
peng xiao fd7ba355ee Add non-stump based ocl Haar cascade classifier support.
For example, haarcascade_frontalface_alt2.xml is now supported.
Note that classifier's pattern of a cascade file must be consistent,
i.e., all trees must either have two nodes or one node, otherwise
unexpected results will occur.

Other fixes:
Test cases are updated.
Some unused codes are removed.
Fix some problems of haar when using OclCascadeClassifierBuf.
2013-05-30 14:01:19 +08:00
Vladislav Vinogradov 6b1c28ce6d fixed some gpu tests (different rounding results due to float arithmetics) 2013-05-29 17:38:32 +04:00
Roman Donchenko 0ae40507e5 Merge pull request #928 from apavlenko:bugfix_3027 2013-05-29 17:10:48 +04:00
Roman Donchenko fbb25787cd Merge pull request #920 from asmorkalov:android_move 2013-05-29 16:53:04 +04:00
Roman Donchenko b890274738 Merge pull request #910 from pengx17:2.4_oclgfft 2013-05-29 15:27:19 +04:00
peng xiao 006e4242b2 Merge branch '2.4' of https://github.com/Itseez/opencv into 2.4_oclgfft 2013-05-29 17:57:14 +08:00
Andrey Pavlenko e28f6fae49 fixing #3027 (searching JNI even if no ant), fixing java tests status message (ON/OFF) 2013-05-29 12:51:26 +04:00
yao a9b7ff41bd adjust test cases 2013-05-29 15:48:56 +08:00
peng xiao d015fa76fa Fix 2.4 ocl Canny.
This fix is a workaround for current 2.4 branch without introducing an
additional oclMat buffer into CannyBuf object.
Test case is cleaned up.
Volatile keywords in kernels are removed for performance concern.
2013-05-29 14:15:26 +08:00
Vadim Pisarevsky 2ccdf56119 Merge pull request #913 from janm399:2.4 2013-05-28 22:05:14 +04:00
Vadim Pisarevsky 24ca620c32 Merge pull request #916 from bitwangyaoyao:2.4_fixPyrLK 2013-05-28 22:04:37 +04:00
Vadim Pisarevsky d3c7ae6adf Merge pull request #919 from abidrahmank:2.4 2013-05-28 21:54:51 +04:00
Vadim Pisarevsky ecb1f3c4d2 Merge pull request #923 from pengx17:2.4_macfix 2013-05-28 21:54:25 +04:00
yao d81c145fa9 fix memory leak 2013-05-28 18:07:41 +08:00
yao 14bd6402be revise perf 2013-05-28 17:53:06 +08:00
peng xiao 1d0c283508 Fix a bug when pushing pointers of arguments into std::vector.
When argument pointers pushed into an vector and the pointers point to
address on stack, we need to make sure they are valid until kernels are
successfully flushed onto the queue.
2013-05-28 17:27:55 +08:00
Alexander Smorkalov f85cf5bdd9 Build fixes. Build scrips reorganized. 2013-05-28 12:27:56 +04:00
peng xiao 6fae02c05d Fix some OpenCL kernel file build errors on Mac. 2013-05-28 11:12:05 +08:00
Roman Donchenko 7561b1c6e5 Replace the pull request guidelines with a link to the wiki.
I've moved the contents of CONTRIBUTING.md to the wiki (and slightly
expanded it), so the former is no longer required. I've put a link to the
wiki page and a summary in the README.
2013-05-27 17:48:34 +04:00
Alexander Smorkalov 20fef00a77 android -> plarforms/android 2013-05-27 11:10:38 +04:00
abidrahmank 2dd3bf116e ANDed waitkey result with 0xFF for x64 systems 2013-05-27 10:30:30 +05:30
abidrahmank ca09ba6852 Bug #2960 : docs about CV_BGR2GRAY 2013-05-25 01:50:41 +05:30
abidrahmank 98960bf201 A new python sample on grabcut 2013-05-25 00:55:31 +05:30
yao fad96b95ad add results verification to facedetect and hog samples 2013-05-24 15:52:33 +08:00
yao c58e0d5d73 fix hog 2013-05-24 13:46:21 +08:00
yao 036b0579f1 remove the images in ocl sample folder 2013-05-23 18:12:09 +08:00
yao 33a3a19207 add two samples 2013-05-23 18:10:38 +08:00
yao d45f9ef866 fix Linux build errors 2013-05-23 17:58:50 +08:00
yao a223b5624f fix pyrLK's mismatch on Intel GPUs 2013-05-23 10:55:08 +08:00
Roman Donchenko 324cafdda6 Merge pull request #904 from ograycode:2.4 2013-05-22 18:46:40 +04:00
Jan Machacek 46b770f255 Fixed include name in OpenCL on OS X 2013-05-22 13:22:16 +01:00
Roman Donchenko 519ee72f6f Merge pull request #905 from bitwangyaoyao:2.4_TVL1 2013-05-22 12:08:16 +04:00
peng xiao b4a4a05bdc Add ocl's good features to track implementation.
Additional notes with this commit:
1. Add cornerHarris_dxdy and cornerMinEigenVal_dxdy to get
the interim dx and dy output of Sobel operator;
2. Add minMax_buf to allow user to reuse buffers in minMax;
3. Fix an error when either min or max pointer fed into minMax is NULL;
4. Corner sorter temporarily uses C++ STL's quick sort. A parallel
 selection sort in OpneCL is contained in the implementation but disabled
due to poor performance at the moment.
5. Accuracy test for ocl gfft.
2013-05-22 13:46:42 +08:00
Andrey Pavlenko d4255b7f75 Merge pull request #902 from apavlenko:fix_run_py 2013-05-21 14:07:32 +04:00
alex77git 445860d619 (typo) 2013-05-20 13:19:36 +02:00
alex77git c8abaea368 (tab to space) 2x 2013-05-20 12:06:25 +02:00
Vadim Pisarevsky cbbc82a789 Merge pull request #882 from pengx17:2.4_rewrite_query_info 2013-05-20 14:01:03 +04:00
Vadim Pisarevsky b51a1a7d15 Merge pull request #895 from bitwangyaoyao:2.4_perf 2013-05-20 14:00:47 +04:00
Roman Donchenko 389be67605 Merge pull request #853 from icylord:2.4 2013-05-20 12:11:47 +04:00
yao d8b192c84d Fix the mismatch on NV GPUs 2013-05-20 14:46:17 +08:00
ograycode 97e9368e75 Simple set of the camera index to allow the user to change it after the object has been initialized. 2013-05-19 22:04:56 -04:00
alex77git bc59428b3a Bug #2966, insert CV_Assert(size.width>0 && size.height>0); in imshow() 2013-05-20 02:28:40 +02:00
alex77git 6e7b1ef252 Bug #2967, void DescriptorMatcher::radiusMatch() // description unclear,
only file:  common_interfaces_of_descriptor_matchers.rst
2013-05-20 02:26:58 +02:00
alex77git 44a2b109b7 Bug #2967, basic_structures.rst, fix 2 typos 2013-05-20 02:24:09 +02:00
Andrey Pavlenko 4af104aaae 'aapt' tool moved in SDK r22, adding support to run.py 2013-05-19 14:57:21 +04:00
Vadim Pisarevsky aee6a617a6 Merge pull request #897 from bitwangyaoyao:2.4_TVL1 2013-05-19 00:23:24 +04:00
yao 04399a27d0 fix a warning 2013-05-17 15:44:22 +08:00
yao 4162ebfad3 add OpticalFlowDual_TVL1_OCL function 2013-05-17 15:34:22 +08:00
yao 03c55db4fb fix the waring in gemm test 2013-05-17 13:19:09 +08:00
yao 5f20fce6fd add accuracy tests while running perf 2013-05-17 13:18:46 +08:00
Andrey Pavlenko 528db00095 Merge pull request #892 from jet47:removed-vibe 2013-05-16 18:44:07 +04:00
Vladislav Vinogradov ec52096e30 removed VIBE implementation 2013-05-16 13:47:24 +04:00
Vadim Pisarevsky 7d9041460a Merge pull request #885 from pengx17:2.4_bfmatcher_ocl 2013-05-15 14:21:50 +04:00
Vadim Pisarevsky 4d866ea32e Merge pull request #884 from pengx17:2.4_pyrup_fix 2013-05-15 14:18:54 +04:00
Dominik Rose 66c9029fd5 libdc1394 - removed validation for msvc compiler in CMakeLists.txt 2013-05-15 12:15:16 +02:00
peng xiao d053f2165d Add BFMatcher_OCL class alias for BruteForceMatcher_OCL.
This adds a similar interface with pure-cpp and gpu versions.
2013-05-15 10:47:17 +08:00
peng xiao 3f93c3cc4e Clean up spaces in ocl.hpp 2013-05-15 10:43:47 +08:00
peng xiao 1ecc765903 Merge branch '2.4' of https://github.com/Itseez/opencv into 2.4_pyrup_fix 2013-05-15 08:55:43 +08:00
peng xiao df3997b108 Fix ocl::pyrUp
Use predefined OpenCL function to convert integers to floating points.
This is more accurate than before as it enables:
1. saturate cast
2. customized rounding
2013-05-15 08:51:21 +08:00
Dominik Rose 1a34c7fab3 Merge branch 'mingw-libdc1394-2-windows' of https://github.com/dominikrose/opencv into mingw-libdc1394-2-windows 2013-05-14 16:49:08 +02:00
Dominik Rose 76d1fa0ef6 Merge branch 'mingw-libdc1394-2-windows' of https://github.com/dominikrose/opencv into mingw-libdc1394-2-windows 2013-05-14 16:48:29 +02:00
Dominik Rose d9c9fb079b Merge branch 'mingw-libdc1394-2-windows' of https://github.com/dominikrose/opencv into mingw-libdc1394-2-windows 2013-05-14 16:34:02 +02:00
Dominik Rose 23eb41d1be Merge branch 'mingw-libdc1394-2-windows' of https://github.com/dominikrose/opencv into mingw-libdc1394-2-windows 2013-05-14 16:33:31 +02:00
Dominik Rose d0788be129 Merge branch 'mingw-libdc1394-2-windows' of https://github.com/dominikrose/opencv into mingw-libdc1394-2-windows 2013-05-14 16:31:01 +02:00
Dominik Rose 86ec9b79fd libd1394 2.x support for mingw on windows added 2013-05-14 16:30:12 +02:00
Dominik Rose 9247ad634f libd1394 2.x support for mingw on windows added 2013-05-14 16:20:01 +02:00
Vadim Pisarevsky 2a646f7626 Merge pull request #862 from piponazo:v4lFPS 2013-05-14 16:00:28 +04:00
Vadim Pisarevsky 25e6902a43 Merge pull request #818 from bitwangyaoyao:2.4_optBlur 2013-05-14 15:56:56 +04:00
Vadim Pisarevsky bd1d7cd208 Merge pull request #839 from pengx17:2.4_ocl_csbp 2013-05-14 15:56:07 +04:00
Vadim Pisarevsky 87765c0f16 Merge pull request #883 from bitwangyaoyao:2.4_fixMoments 2013-05-14 15:55:38 +04:00
yao 1d1d28baf2 fix black screen when input Mat is large 2013-05-14 18:02:53 +08:00
peng xiao ac21cabda2 Copy ocl::queryDeviceInfo interface from master to 2.4.
Affected functions surf.ocl, pyrlk.ocl and hog.ocl are updated with the change.
2013-05-14 17:50:38 +08:00
Andrey Pavlenko 87fcd2342f Merge pull request #878 from apavlenko:better_glue_search 2013-05-14 11:57:25 +04:00
Vadim Pisarevsky 35d8fa444b Merge pull request #849 from dominikrose:dom_2.4 2013-05-13 23:38:26 +04:00
Vadim Pisarevsky d79c05fec9 Merge pull request #872 from pengx17:2.4_create2dimage_fix 2013-05-13 23:12:25 +04:00
Vadim Pisarevsky 6eb5a95a59 Merge pull request #871 from bitwangyaoyao:2.4_acry 2013-05-13 23:04:11 +04:00
Vadim Pisarevsky fd83f2f5ca Merge pull request #819 from bitwangyaoyao:2.4_haarBuf 2013-05-13 22:36:10 +04:00
Vadim Pisarevsky c549ec8371 Merge pull request #850 from SpecLad:convhull-orientation 2013-05-13 22:18:54 +04:00
Andrey Pavlenko d94ecf40e6 Merge pull request #880 from apavlenko:qt-5.0 2013-05-13 21:18:47 +04:00
Andrey Pavlenko 0fec2eb6e5 Merge pull request #879 from apavlenko:gcc-4.8 2013-05-13 21:17:04 +04:00
Vadim Pisarevsky e4d4b07f00 Merge pull request #873 from prclibo:2.4 2013-05-13 21:06:54 +04:00
Andrey Kamaev f856f78ac0 Update CMake scripts to recognize Qt 5.0 2013-05-13 17:10:32 +04:00
Andrey Kamaev 2665c39a0d Fix build warnings from gcc 4.8 2013-05-13 17:07:30 +04:00
Andrey Kamaev 60059a7aa0 Improve handling of native_app_glue dependency in Android samples 2013-05-13 17:01:18 +04:00
yao e23884a238 fix the warnings in fft tests 2013-05-13 15:04:23 +08:00
Vadim Pisarevsky 9cce8ca4b6 Merge pull request #864 from pengx17:2.4_stereobm 2013-05-12 22:16:03 +04:00
Vadim Pisarevsky 1348e7cd4d Merge pull request #877 from apavlenko:version_info_in_test_log 2013-05-12 22:15:47 +04:00
Andrey Pavlenko d5881bc00a adding version info to test log 2013-05-12 18:36:55 +04:00
yao ada8f92cc7 fix warnings, unify test names 2013-05-09 17:57:13 +08:00
Bo Li 81779d8287 fixed pca bug for fixed mean input 2013-05-09 15:20:00 +08:00
peng xiao e14acabb3d Fix ocl moudle build with latest Intel OpenCL SDK.
We found that cl.h file provided in latest Intel SDK muted deprecated interfaces.
2013-05-09 14:00:36 +08:00
peng xiao 69e6d0016e Optimize stereobm a bit.
Speedup about 30% on 6730M GPU.
2013-05-08 17:29:24 +08:00
yao b6313951dc use clean EXPECT_MAT_NEAR (no string output) 2013-05-08 17:07:44 +08:00
yao 35c6860f06 further simplify the logics in filter tests 2013-05-08 16:08:33 +08:00
yao 1a53e2cfb2 remove interpolation.hpp 2013-05-08 15:27:35 +08:00
yao 3928c1ee26 add copyrights 2013-05-08 15:21:53 +08:00
yao e4d3378230 simplify logics in filter tests, remove redundant code in arithm tests 2013-05-08 15:12:12 +08:00
Andrey Pavlenko 2aa5f1bfd1 Merge pull request #866 from MadEgg:RetrieveFrame_index_argument 2013-05-07 17:00:29 +04:00
Vadim Pisarevsky 741fb9b7d1 Merge pull request #865 from pengx17:2.4_ocl_ver 2013-05-07 16:39:49 +04:00
Andrey Pavlenko 2faa2adae2 Merge pull request #846 from smart-mobile-software:tuto_crash 2013-05-07 15:15:16 +04:00
poiuytrez 7dda8e2cb8 Link to bug tracker replaced by bug description 2013-05-07 11:45:18 +02:00
yao 52dbbae82c some cleanup, remove some commented codes 2013-05-07 16:14:50 +08:00
peng xiao d34e7eca60 Suppress warning when compiling deprecated OpenCL function on GNU compilers. 2013-05-06 17:16:45 +08:00
Egbert van der Wal dc6a144396 add (optional) index argument to RetrieveFrame method 2013-05-04 17:18:12 +02:00
peng xiao ed2199a497 Fix build 2013-05-03 09:54:11 +08:00
peng xiao 1eca49f40b ocl: Enable backward binary portability for setTo function. 2013-05-03 09:45:56 +08:00
peng xiao 168c0b0385 Optimize ocl::stereobm.
1. Use macro defines for some parameters(radius).
2. Reduce local memory usage.
3. Fix accuracy problem on Intel GPU.
2013-05-02 16:14:28 +08:00
peng xiao 355bc691fc Add OpenCL version 1.2 query into ocl::Context::supportsFeature().
Add backwards portability for OpenCL 1.1 when OpenCV executables
are compiled with OpenCL 1.2 profile support.
2013-05-02 14:44:59 +08:00
poiuytrez bef6de9025 Fix tuto3 picture taken crash on all devices
A modification of the JavaCameraView is needed to avoid a crash when the
app is exited. It is a good practice to remove the callback after the
stopPreview method.
2013-05-01 16:58:15 +02:00
Luis Díaz Más d13d5c0c12 Added setting feature of FPS in cap_libv4l 2013-05-01 01:07:03 +02:00
Andrey Pavlenko 48a8aefd6b Merge pull request #854 from asmorkalov:android_null_invalid_cam 2013-04-30 17:36:39 +04:00
Andrey Pavlenko f21e99de0f Merge pull request #858 from apavlenko:fix_ocl_build_on_bb 2013-04-30 11:25:31 +04:00
Andrey Pavlenko 108bb811c5 fixing precommit build on ubuntu-64 (now it takes OCL headers from non-default OCL SDK, but libs from default one) 2013-04-29 23:10:03 +04:00
Alexander Smorkalov 456c56fe90 NullPointerException in case of error on opening native camera fixed. 2013-04-29 11:00:52 +04:00
Andrey Pavlenko 5ce4e3c265 Merge pull request #800 from asmorkalov:android_cam_idx_semantic 2013-04-29 10:00:08 +04:00
Andrey Pavlenko 6d89e1f412 Merge pull request #827 from apavlenko:fix_android_tutorial1 2013-04-29 09:59:19 +04:00
ShengyinWu ef5578a7ce Fixs: After scaling back to original image, some detected ROI will outside the original image ROI 2013-04-29 12:16:42 +08:00
Vadim Pisarevsky 2068c4582c Merge pull request #844 from bitwangyaoyao:2.4_integral 2013-04-28 00:37:40 +04:00
Vadim Pisarevsky 4f26f0c2e2 Merge pull request #843 from pengx17:2.4_stereobp_fix 2013-04-28 00:32:26 +04:00
Roman Donchenko 2dc8642508 Changed convexHull's documentation to essentially invert the meaning of `clockwise`.
The orientation of convexHull's result is currently the opposite of what the
documentation would suggest:

>>> import cv2, numpy as np
>>> points = np.array([[0,0],[0,1],[1,0]], dtype=np.int32)
>>> cv2.convexHull(points, clockwise=False)
array([[[1, 0]],
       [[0, 1]],
       [[0, 0]]], dtype=int32)
>>> cv2.convexHull(points, clockwise=True)
array([[[0, 0]],
       [[0, 1]],
       [[1, 0]]], dtype=int32)

Changing the function itself is probably not a good idea at this point, so
this fixes the documentation by flipping the coordinate system.

I also removed the mention of the origin, since it's irrelevant for this
function.
2013-04-26 14:22:55 +04:00
Dominik Rose cfaae5917b Calib3d documentation:
- fixed reference to Slabaugh
2013-04-26 11:34:35 +02:00
poiuytrez 60bf018781 Fix android tutorial 3 second picture taken bug 2013-04-24 12:38:15 +02:00
Alexander Smorkalov 8606ee4beb Front/Back camera semantic support added to Android VideoCapture back-end. 2013-04-24 10:56:16 +04:00
yao f788d010f7 fix a crash on CPU OCL for some specified image sizes 2013-04-24 14:12:41 +08:00
peng xiao 9cfa24e515 Fix thread sync for csbp. 2013-04-23 17:35:40 +08:00
yao b386ea72aa use float when sum overflow 2013-04-23 17:23:05 +08:00
peng xiao 3282aaa1f5 Fix a bug found on Intel OpenCL SDK. 2013-04-23 15:34:40 +08:00
Peng Xiao c701d54281 Fix build errors 2013-04-21 11:19:37 +08:00
Peng Xiao 7b08d5ec69 Add OpenCL stereo CSBP implementation 2013-04-20 00:34:37 +08:00
Andrey Kamaev a9a269505c Merge pull request #829 from SpecLad:sphinx-ver-1 2013-04-17 15:45:53 +04:00
Andrey Kamaev 28aefc4f5a Merge pull request #817 from pengx17:2.4_ocl_bitwise_cleanup 2013-04-17 15:45:38 +04:00
Roman Donchenko bd6f80faf3 Redo the Sphinx check to do the same thing on all platforms.
This also fixes the bug where the Sphinx version gets detected as
"Sphinx vX.Y.Z" instead of "X.Y.Z" on Unix-like systems.
2013-04-17 12:33:11 +04:00
Andrey Kamaev f6848b66d6 Merge pull request #826 from pengx17:2.4_canny_clampfix 2013-04-17 11:09:49 +04:00
Andrey Kamaev bf551df4cf Merge pull request #825 from pengx17:2.4_query_cpu_wavesize 2013-04-17 11:09:37 +04:00
Andrey Kamaev 5eff4f8340 Merge pull request #822 from taka-no-me:better_cv_enum 2013-04-17 11:08:58 +04:00
Andrey Pavlenko 8c40f0ccf2 fixing build and lint warnings 2013-04-16 15:30:43 +04:00
peng xiao 0f7d7100e5 Add clamping for y dimension. 2013-04-16 15:49:15 +08:00
peng xiao 6f63a5d8d5 Let wave_size=1 on CPU. 2013-04-16 14:41:30 +08:00
Andrey Kamaev c02095ae1c Merge pull request #821 from taka-no-me:contributing 2013-04-16 10:16:14 +04:00
Andrey Kamaev 96b008cd29 Eliminate the need of ::testsing::ValuesIn() for CV_ENUM
Also cv::, cv::gpu:: and cv::ocl:: namespace prefixes can be safely omitted
inside CV_ENUM and CV_FLAGS
2013-04-15 19:39:49 +04:00
Andrey Kamaev ecf28cc21e Add contributing page for Github 2013-04-15 16:57:58 +04:00
yao 69a0b5dde5 Add OclCascadeClassifierBuf interface 2013-04-15 17:24:30 +08:00
yao dec6a3b080 make boxfilter kernel compile on Mac GPU OCL 2013-04-15 16:46:25 +08:00
Andrey Kamaev 2ae3ab11e3 Merge pull request #814 from taka-no-me:gtest_r652 2013-04-15 12:13:16 +04:00
Andrey Kamaev 0df6dc16a5 Merge pull request #811 from pengx17:2.4_ocl_bfmatcher_newtype 2013-04-15 12:12:18 +04:00
peng xiao 06a4bad809 Merge ocl and/or/xor operators into one kernel each. 2013-04-15 10:36:03 +08:00
Andrey Kamaev 802d004bbb Fix build issues 2013-04-13 16:53:59 +04:00
Andrey Kamaev 9deea80b83 Update gtest to upstream r652
It is already marked as a gtest 1.7.0
2013-04-13 16:29:05 +04:00
Peng Xiao 6dd6013546 Use a faster way to count 1's (used by Hamming) 2013-04-13 14:34:30 +08:00
Peng Xiao f2dc445412 Merge branch '2.4_ocl_bfmatcher_newtype' of https://github.com/pengx17/opencv into 2.4_ocl_bfmatcher_newtype 2013-04-13 14:09:21 +08:00
Peng Xiao 6b6b1c9cbf Allow more query/train types for ocl::bfmatcher 2013-04-13 14:08:58 +08:00
Peng Xiao d9de84091c Allow more input query/train types for ocl::bfmatcher
RadiusMatch for HammingDist cannot pass yet.
2013-04-13 13:42:26 +08:00
Peng Xiao 1db20099a9 Enable runtime type definition in kernels 2013-04-13 12:50:17 +08:00
Peng Xiao fd1528795e Pass query type T into kernel 2013-04-13 11:39:13 +08:00
Peng Xiao 63813e83ae Untabify 2013-04-13 11:22:22 +08:00
Peng Xiao 6a40383aee Add HammingDist test case 2013-04-13 11:07:26 +08:00
Andrey Kamaev abe2ea59ed Merge pull request #802 from SpecLad:shebang 2013-04-12 15:00:28 +04:00
Andrey Kamaev 36028bd8ad Merge pull request #808 from bitwangyaoyao:2.4_mac 2013-04-12 14:59:45 +04:00
Andrey Kamaev d2de68c14c Merge pull request #804 from gpsinghsandhu:staticCast 2013-04-12 14:59:26 +04:00
Andrey Kamaev b696d49d5a Merge pull request #801 from kirill-kornyakov:lkdemo-fix 2013-04-12 14:59:11 +04:00
Vadim Pisarevsky 03e2a52e2c Merge pull request #807 from pengx17:2.4_ocl_bfm_opt 2013-04-12 13:46:55 +04:00
Vadim Pisarevsky 3d39087a67 Merge pull request #806 from bitwangyaoyao:2.4_fix 2013-04-12 13:46:33 +04:00
Vadim Pisarevsky a770d04e78 Merge pull request #781 from bitwangyaoyao:2.4_fixerr 2013-04-12 13:44:59 +04:00
yao 719e8674ad fix the compile errors on Mac 2013-04-12 17:38:59 +08:00
peng xiao 2338a895f5 Capitalize macro namings. 2013-04-12 16:56:49 +08:00
peng xiao 1bea9ee26c Rename test case category and code clean up. 2013-04-12 16:54:06 +08:00
peng xiao c9d8eb7a84 Fix build error on linux. 2013-04-12 16:52:21 +08:00
peng xiao 6eefd276cf Further optimize bfmatcher by passing macros. 2013-04-12 16:51:36 +08:00
peng xiao 113b7584e0 Optimize bfmatcher by passing macros. 2013-04-12 16:50:30 +08:00
peng xiao 1e49c00f4b Replace create with ensureSizeIsEnough thus buffer objects can be reused. 2013-04-12 16:47:44 +08:00
yao 61e041673e remove the OpenCL Dir finding in CMake 2013-04-12 14:44:55 +08:00
Gurpinder Singh Sandhu 36aad46fe1 changed reinterpret_cast to static_cast
This issue seem to be lingering around for quite some time
https://github.com/Itseez/opencv/pull/639
http://code.opencv.org/issues/2819
2013-04-11 22:32:50 +05:30
Roman Donchenko 57d4c86b2b Fixed the shebang lines on the Python scripts.
Also, removed the one from modules/python/src2/cv.py and cleared its
executable bit, since it's not a script.
2013-04-11 18:37:23 +04:00
Kirill Kornyakov 53a06913cb Minor code cleanings in lkdemo.cpp 2013-04-11 17:57:33 +04:00
Kirill Kornyakov e351538697 #2813 bugfix 2013-04-11 17:50:10 +04:00
Andrey Kamaev ca56e99a62 Merge pull request #796 from SpecLad:more-backports 2013-04-11 15:48:17 +04:00
Andrey Kamaev a1fa63ffc9 Merge pull request #799 from SpecLad:boost-initial-weights 2013-04-11 15:47:57 +04:00
Roman Donchenko 4143071e22 In CvBoost, delegated update_weights's implementation to a helper method.
This allows subclasses of CvBoost to override initial weights that
update_weights uses without duplicating its entire implementation.
2013-04-11 13:50:10 +04:00
Andrey Kamaev 62b593ca8b Merge pull request #793 from SpecLad:auto-cuda 2013-04-11 12:24:04 +04:00
Andrey Kamaev 7711fe2f43 Merge pull request #794 from asmorkalov:android_no_layout 2013-04-11 11:34:42 +04:00
Andrey Kamaev 18d4f14892 Merge pull request #792 from asmorkalov:manager_incompat_wh 2013-04-11 11:34:21 +04:00
Andrey Kamaev 9ba25e9d09 Merge pull request #742 from bitwangyaoyao:2.4_fix 2013-04-11 11:33:45 +04:00
Andrey Kamaev 0c64fc61dc Merge pull request #740 from evil0sheep:2.4 2013-04-11 11:33:31 +04:00
Roman Donchenko 484607fb6f Backported RNG_MT19937 from master. 2013-04-10 19:39:38 +04:00
Roman Donchenko f64d512774 Backported globbing from master. 2013-04-10 19:36:39 +04:00
Alexander Smorkalov 6e8f5ae574 Front/back camera constants semantic for Android fixed (Bug #2839).
Front/Back camera constants' values changed;
Additional camera facing check added for JavaCameraView.
2013-04-10 16:57:34 +04:00
Alexander Smorkalov 82c61eba49 Feature #2893 Create Java sample without layout.xml implemented. 2013-04-10 13:38:59 +04:00
Roman Donchenko e8721f1f6f Automatically add CUDA support to a module if it has CUDA sources.
Backport from master.
2013-04-10 12:20:54 +04:00
Alexander Smorkalov ec6f0e1baf Incompatible hardware detetction added to OpenCV Manager(Feature #2941) 2013-04-10 12:10:13 +04:00
Andrey Kamaev 71896544ca Merge pull request #789 from asmorkalov:android_na_mk_fix 2013-04-09 13:14:22 +04:00
Alexander Smorkalov 7bd169caa9 Native activity build with Android.mk fixed. 2013-04-09 10:17:22 +04:00
Andrey Kamaev aef8e6ba59 Merge pull request #782 from taka-no-me:bitness_detection 2013-04-09 08:52:32 +04:00
Andrey Kamaev 6d7313cd3d Merge pull request #776 from virtuald:2.4 2013-04-09 08:51:09 +04:00
Andrey Kamaev d3083ecf6d Fix bitness detection for target platform 2013-04-08 11:25:36 +04:00
Andrey Kamaev 5cfb6a848e Merge pull request #780 from sivapvarma:2.4 2013-04-08 10:11:16 +04:00
yao 7726e273a9 merge add and sub into one set of kernels 2013-04-06 13:37:36 +08:00
Siva Prasad Varma e2df8c7e62 Fix bug #2590
replaced wrong check to correct check
2013-04-05 19:09:09 +05:30
yao bee970ab94 remove the C3 kernels in arithm, as the oclMat will never store 3 channels data 2013-04-05 21:29:29 +08:00
Dustin Spicuzza 64b5784c0b Catch exceptions when large allocations fail 2013-04-05 00:43:10 -04:00
yao 8cc5b98051 Fix the problem of device selection on hybrid video systems. 2013-04-05 09:19:59 +08:00
yao 5022bc8c25 move the "cpu device checking" from supportsFeatures() to queryDeviceInfo() 2013-04-05 09:17:14 +08:00
yao d5aaea2749 fix some mismatch on cpu device running OCL 2013-04-03 14:24:55 +08:00
yao cb63bbf001 fix hog on some CPU device running ocl 2013-04-03 13:58:44 +08:00
yao fd4a6f0af0 make the sparse method give correct results on CPU ocl
Add CL_CPU to supportsFeature check
simplify the logic of pyrlk
2013-04-03 13:23:04 +08:00
dave 8db1a73102 Added v4l2 support for getting capture property CV_CAP_PROP_POS_MSEC 2013-04-02 10:31:02 -07:00
672 arquivos alterados com 30012 adições e 25335 exclusões
+1 -1
Ver Arquivo
@@ -33,7 +33,7 @@
CMakeLists.txt text whitespace=tabwidth=2
*.png binary
*.jepg binary
*.jpeg binary
*.jpg binary
*.exr binary
*.ico binary
Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.
BIN
Ver Arquivo
Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.
BIN
Ver Arquivo
Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.
BIN
Ver Arquivo
Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.
BIN
Ver Arquivo
Arquivo binário não exibido.
+2 -1
Ver Arquivo
@@ -23,7 +23,8 @@ if(WIN32 AND NOT MINGW)
add_definitions(-DJAS_WIN_MSVC_BUILD)
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 -Wno-implicit-function-declaration -Wno-uninitialized -Wmissing-prototypes
-Wno-unused-but-set-parameter -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
+66 -13
Ver Arquivo
@@ -1,12 +1,39 @@
#Cross compile TBB from source
project(tbb)
if (WIN32 AND NOT ARM)
message(FATAL_ERROR "BUILD_TBB option supports Windows on ARM only!\nUse regular official TBB build instead of the BUILD_TBB option!")
endif()
if (WIN32 AND ARM)
# 4.1 update 4 - The first release that supports Windows RT. Hangs on some Android devices
set(tbb_ver "tbb41_20130613oss")
set(tbb_url "http://threadingbuildingblocks.org/sites/default/files/software_releases/source/tbb41_20130613oss_src.tgz")
set(tbb_md5 "108c8c1e481b0aaea61878289eb28b6a")
set(tbb_version_file "version_string.ver")
ocv_warnings_disable(CMAKE_CXX_FLAGS -Wshadow -Wunused-parameter)
else()
# 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)
endif()
# 4.1 update 3 dev - Hangs on some Android devices
#set(tbb_ver "tbb41_20130401oss")
#set(tbb_url "http://threadingbuildingblocks.org/sites/default/files/software_releases/source/tbb41_20130401oss_src.tgz")
#set(tbb_md5 "f2f591a0d2ca8f801e221ce7d9ea84bb")
#set(tbb_version_file "version_string.ver")
#ocv_warnings_disable(CMAKE_CXX_FLAGS -Wshadow)
# 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)
#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")
@@ -107,7 +134,7 @@ if(NOT EXISTS "${tbb_src_dir}")
RESULT_VARIABLE tbb_untar_RESULT)
if(NOT tbb_untar_RESULT EQUAL 0 OR NOT EXISTS "${tbb_src_dir}")
message(FATAL_ERROR "Failed to unpack TBB sources")
message(FATAL_ERROR "Failed to unpack TBB sources from ${tbb_tarball} to ${tbb_src_dir} with error ${tbb_untar_RESULT}")
endif()
endif()
@@ -123,13 +150,22 @@ file(GLOB lib_hdrs "${tbb_src_dir}/src/tbb/*.h")
list(APPEND lib_srcs "${tbb_src_dir}/src/rml/client/rml_tbb.cpp")
if (WIN32)
add_definitions(-D__TBB_DYNAMIC_LOAD_ENABLED=0
-D__TBB_BUILD=1
-D_UNICODE
-DUNICODE
-DWINAPI_FAMILY=WINAPI_FAMILY_APP
-DDO_ITT_NOTIFY=0
add_definitions(/D__TBB_DYNAMIC_LOAD_ENABLED=0
/D__TBB_BUILD=1
/DTBB_NO_LEGACY=1
/D_UNICODE
/DUNICODE
/DWINAPI_FAMILY=WINAPI_FAMILY_APP
/DDO_ITT_NOTIFY=0
/DUSE_WINTHREAD
) # defines were copied from windows.cl.inc
if (ARM)
add_definitions(/D_WIN32_WINNT=0x0602
/D__TBB_WIN32_USE_CL_BUILTINS
)
endif()
set(CMAKE_LINKER_FLAGS "${CMAKE_LINKER_FLAGS} /APPCONTAINER")
else()
add_definitions(-D__TBB_DYNAMIC_LOAD_ENABLED=0 #required
@@ -173,7 +209,23 @@ 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)
if (WIN32)
if (ARM)
set(platform_macro /D_M_ARM=1)
endif()
add_custom_command(TARGET tbb
PRE_BUILD
COMMAND ${CMAKE_C_COMPILER} /nologo /TC /EP ${tbb_src_dir}\\src\\tbb\\win32-tbb-export.def /DTBB_NO_LEGACY=1 /D_CRT_SECURE_NO_DEPRECATE /D__TBB_BUILD=1 ${platform_macro} /I${tbb_src_dir}\\src /I${tbb_src_dir}\\include > "${tbb_src_dir}\\src\\tbb\\tbb.def"
WORKING_DIRECTORY ${tbb_src_dir}\\src\\tbb
COMMENT "Generating tbb.def file" VERBATIM
)
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /DEF:${tbb_src_dir}/src/tbb/tbb.def /DLL /MAP /fixed:no /INCREMENTAL:NO")
else()
target_link_libraries(tbb c m dl)
endif()
ocv_warnings_disable(CMAKE_CXX_FLAGS -Wundef -Wmissing-declarations)
string(REPLACE "-Werror=non-virtual-dtor" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
@@ -182,6 +234,7 @@ set_target_properties(tbb
PROPERTIES OUTPUT_NAME tbb
DEBUG_POSTFIX "${OPENCV_DEBUG_POSTFIX}"
ARCHIVE_OUTPUT_DIRECTORY ${3P_LIBRARY_OUTPUT_PATH}
RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}
)
if(ENABLE_SOLUTION_FOLDERS)
+28 -8
Ver Arquivo
@@ -103,6 +103,19 @@ if(UNIX AND NOT ANDROID)
endif()
endif()
# Add these standard paths to the search paths for FIND_PATH
# to find include files from these locations first
if(MINGW)
if(EXISTS /mingw)
list(APPEND CMAKE_INCLUDE_PATH /mingw)
endif()
if(EXISTS /mingw32)
list(APPEND CMAKE_INCLUDE_PATH /mingw32)
endif()
if(EXISTS /mingw64)
list(APPEND CMAKE_INCLUDE_PATH /mingw64)
endif()
endif()
# ----------------------------------------------------------------------------
# OpenCV cmake options
@@ -110,7 +123,7 @@ endif()
# Optional 3rd party components
# ===================================================
OCV_OPTION(WITH_1394 "Include IEEE1394 support" ON IF (UNIX AND NOT ANDROID AND NOT IOS) )
OCV_OPTION(WITH_1394 "Include IEEE1394 support" ON IF (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_CUDA "Include NVidia Cuda Runtime support" ON IF (CMAKE_VERSION VERSION_GREATER "2.8" AND NOT ANDROID AND NOT IOS) )
@@ -286,6 +299,10 @@ set(OPENCV_CONFIG_FILE_INCLUDE_DIR "${CMAKE_BINARY_DIR}/" CACHE PATH "Where to c
add_definitions(-DHAVE_CVCONFIG_H)
ocv_include_directories(${OPENCV_CONFIG_FILE_INCLUDE_DIR})
# ----------------------------------------------------------------------------
# Path for additional modules
# ----------------------------------------------------------------------------
set(OPENCV_EXTRA_MODULES_PATH "" CACHE PATH "Where to look for additional OpenCV modules")
# ----------------------------------------------------------------------------
# Autodetect if we are in a GIT repository
@@ -402,7 +419,7 @@ if(ANDROID)
if(NOT ANDROID_TOOLS_Pkg_Revision GREATER 13)
message(WARNING "OpenCV requires Android SDK tools revision 14 or newer. Otherwise tests and samples will no be compiled.")
endif()
elseif(ANT_EXECUTABLE)
else()
find_package(JNI)
endif()
@@ -456,15 +473,15 @@ if(BUILD_EXAMPLES OR BUILD_ANDROID_EXAMPLES OR INSTALL_PYTHON_EXAMPLES)
endif()
if(ANDROID)
add_subdirectory(android/service)
add_subdirectory(platforms/android/service)
endif()
if(BUILD_ANDROID_PACKAGE)
add_subdirectory(android/package)
add_subdirectory(platforms/android/package)
endif()
if (ANDROID)
add_subdirectory(android/libinfo)
add_subdirectory(platforms/android/libinfo)
endif()
# ----------------------------------------------------------------------------
@@ -594,12 +611,15 @@ endif()
status("")
status(" GUI: ")
if(HAVE_QT)
if(HAVE_QT5)
status(" QT 5.x:" HAVE_QT THEN "YES (ver ${Qt5Core_VERSION_STRING})" ELSE NO)
status(" QT OpenGL support:" HAVE_QT_OPENGL THEN "YES (${Qt5OpenGL_LIBRARIES} ${Qt5OpenGL_VERSION_STRING})" ELSE NO)
elseif(HAVE_QT)
status(" QT 4.x:" HAVE_QT THEN "YES (ver ${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}.${QT_VERSION_PATCH} ${QT_EDITION})" ELSE NO)
status(" QT OpenGL support:" HAVE_QT_OPENGL THEN "YES (${QT_QTOPENGL_LIBRARY})" ELSE NO)
else()
if(DEFINED WITH_QT)
status(" QT 4.x:" NO)
status(" QT:" NO)
endif()
if(DEFINED WITH_WIN32UI)
status(" Win32 UI:" HAVE_WIN32UI THEN YES ELSE NO)
@@ -827,7 +847,7 @@ status(" ant:" ANT_EXECUTABLE THEN "${ANT_EXECUTABLE} (ver ${A
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)
status(" Java tests:" BUILD_TESTS AND (CAN_BUILD_ANDROID_PROJECTS OR HAVE_opencv_java) THEN YES ELSE NO)
# ========================== documentation ==========================
if(BUILD_DOCS)
+11
Ver Arquivo
@@ -4,3 +4,14 @@ Homepage: http://opencv.org
Online docs: http://docs.opencv.org
Q&A forum: http://answers.opencv.org
Dev zone: http://code.opencv.org
Please read before starting work on a pull request:
http://code.opencv.org/projects/opencv/wiki/How_to_contribute
Summary of guidelines:
* One pull request per issue;
* Choose the right base branch;
* Include tests and documentation;
* Clean up "oops" commits before submitting;
* Follow the coding style guide.
-90
Ver Arquivo
@@ -1,90 +0,0 @@
@ECHO OFF
:: enable command extensions
VERIFY BADVALUE 2>NUL
SETLOCAL ENABLEEXTENSIONS || (ECHO Unable to enable command extensions. & EXIT \B)
:: build environment
SET SOURCE_DIR=%cd%
IF EXIST .\android.toolchain.cmake (SET BUILD_OPENCV=1) ELSE (SET BUILD_OPENCV=0)
IF EXIST .\jni\nul (SET BUILD_JAVA_PART=1) ELSE (SET BUILD_JAVA_PART=0)
:: load configuration
PUSHD %~dp0
SET SCRIPTS_DIR=%cd%
IF EXIST .\wincfg.cmd CALL .\wincfg.cmd
POPD
:: inherit old names
IF NOT DEFINED CMAKE SET CMAKE=%CMAKE_EXE%
IF NOT DEFINED MAKE SET MAKE=%MAKE_EXE%
:: defaults
IF NOT DEFINED BUILD_DIR SET BUILD_DIR=build
IF NOT DEFINED ANDROID_ABI SET ANDROID_ABI=armeabi-v7a
SET OPENCV_BUILD_DIR=%SCRIPTS_DIR%\..\%BUILD_DIR%
:: check that all required variables defined
PUSHD .
IF NOT DEFINED ANDROID_NDK (ECHO. & ECHO You should set an environment variable ANDROID_NDK to the full path to your copy of Android NDK & GOTO end)
(CD "%ANDROID_NDK%") || (ECHO. & ECHO Directory "%ANDROID_NDK%" specified by ANDROID_NDK variable does not exist & GOTO end)
IF NOT EXIST "%CMAKE%" (ECHO. & ECHO You should set an environment variable CMAKE to the full path to cmake executable & GOTO end)
IF NOT EXIST "%MAKE%" (ECHO. & ECHO You should set an environment variable MAKE to the full path to native port of make executable & GOTO end)
IF NOT %BUILD_JAVA_PART%==1 GOTO required_variables_checked
IF NOT DEFINED ANDROID_SDK (ECHO. & ECHO You should set an environment variable ANDROID_SDK to the full path to your copy of Android SDK & GOTO end)
(CD "%ANDROID_SDK%" 2>NUL) || (ECHO. & ECHO Directory "%ANDROID_SDK%" specified by ANDROID_SDK variable does not exist & GOTO end)
IF NOT DEFINED ANT_DIR (ECHO. & ECHO You should set an environment variable ANT_DIR to the full path to Apache Ant root & GOTO end)
(CD "%ANT_DIR%" 2>NUL) || (ECHO. & ECHO Directory "%ANT_DIR%" specified by ANT_DIR variable does not exist & GOTO end)
IF NOT DEFINED JAVA_HOME (ECHO. & ECHO You should set an environment variable JAVA_HOME to the full path to JDK & GOTO end)
(CD "%JAVA_HOME%" 2>NUL) || (ECHO. & ECHO Directory "%JAVA_HOME%" specified by JAVA_HOME variable does not exist & GOTO end)
:required_variables_checked
POPD
:: check for ninja
echo "%MAKE%"|findstr /i ninja >nul:
IF %errorlevel%==1 (SET BUILD_WITH_NINJA=0) ELSE (SET BUILD_WITH_NINJA=1)
IF %BUILD_WITH_NINJA%==1 (SET CMAKE_GENERATOR=Ninja) ELSE (SET CMAKE_GENERATOR=MinGW Makefiles)
:: create build dir
IF DEFINED REBUILD rmdir /S /Q "%BUILD_DIR%" 2>NUL
MKDIR "%BUILD_DIR%" 2>NUL
PUSHD "%BUILD_DIR%" || (ECHO. & ECHO Directory "%BUILD_DIR%" is not found & GOTO end)
:: run cmake
ECHO. & ECHO Runnning cmake...
ECHO ANDROID_ABI=%ANDROID_ABI%
ECHO.
IF NOT %BUILD_OPENCV%==1 GOTO other-cmake
:opencv-cmake
("%CMAKE%" -G"%CMAKE_GENERATOR%" -DANDROID_ABI="%ANDROID_ABI%" -DCMAKE_TOOLCHAIN_FILE="%SOURCE_DIR%"\android.toolchain.cmake -DCMAKE_MAKE_PROGRAM="%MAKE%" %* "%SOURCE_DIR%\..") && GOTO cmakefin
ECHO. & ECHO cmake failed & GOTO end
:other-cmake
("%CMAKE%" -G"%CMAKE_GENERATOR%" -DANDROID_ABI="%ANDROID_ABI%" -DOpenCV_DIR="%OPENCV_BUILD_DIR%" -DCMAKE_TOOLCHAIN_FILE="%OPENCV_BUILD_DIR%\..\android.toolchain.cmake" -DCMAKE_MAKE_PROGRAM="%MAKE%" %* "%SOURCE_DIR%") && GOTO cmakefin
ECHO. & ECHO cmake failed & GOTO end
:cmakefin
:: run make
ECHO. & ECHO Building native libs...
IF %BUILD_WITH_NINJA%==0 ("%MAKE%" -j %NUMBER_OF_PROCESSORS% VERBOSE=%VERBOSE%) || (ECHO. & ECHO make failed & GOTO end)
IF %BUILD_WITH_NINJA%==1 ("%MAKE%") || (ECHO. & ECHO ninja failed & GOTO end)
IF NOT %BUILD_JAVA_PART%==1 GOTO end
POPD && PUSHD %SOURCE_DIR%
:: configure java part
ECHO. & ECHO Updating Android project...
(CALL "%ANDROID_SDK%\tools\android" update project --name %PROJECT_NAME% --path .) || (ECHO. & ECHO failed to update android project & GOTO end)
:: compile java part
ECHO. & ECHO Compiling Android project...
(CALL "%ANT_DIR%\bin\ant" debug) || (ECHO. & ECHO failed to compile android project & GOTO end)
:end
POPD
ENDLOCAL
-5
Ver Arquivo
@@ -1,5 +0,0 @@
@ECHO OFF
PUSHD %~dp0..
CALL .\scripts\build.cmd %* -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON
POPD
-8
Ver Arquivo
@@ -1,8 +0,0 @@
#!/bin/sh
cd `dirname $0`/..
mkdir -p build_armeabi
cd build_armeabi
cmake -DANDROID_ABI=armeabi -DCMAKE_TOOLCHAIN_FILE=../android.toolchain.cmake $@ ../..
-8
Ver Arquivo
@@ -1,8 +0,0 @@
#!/bin/sh
cd `dirname $0`/..
mkdir -p build_mips
cd build_mips
cmake -DANDROID_ABI=mips -DCMAKE_TOOLCHAIN_FILE=../android.toolchain.cmake $@ ../..
-8
Ver Arquivo
@@ -1,8 +0,0 @@
#!/bin/sh
cd `dirname $0`/..
mkdir -p build_neon
cd build_neon
cmake -DANDROID_ABI="armeabi-v7a with NEON" -DCMAKE_TOOLCHAIN_FILE=../android.toolchain.cmake $@ ../..
-7
Ver Arquivo
@@ -1,7 +0,0 @@
#!/bin/sh
cd `dirname $0`/..
mkdir -p build_service
cd build_service
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/ $@ ../..
-9
Ver Arquivo
@@ -1,9 +0,0 @@
#!/bin/sh
cd `dirname $0`/..
mkdir -p build_x86
cd build_x86
cmake -DANDROID_ABI=x86 -DCMAKE_TOOLCHAIN_FILE=../android.toolchain.cmake $@ ../..
-30
Ver Arquivo
@@ -1,30 +0,0 @@
:: variables required for OpenCV build ::
:: Note: all pathes should be specified without tailing slashes!
SET ANDROID_NDK=C:\full\path\to\your\copy\of\android\NDK\android-ndk-r7b
SET CMAKE_EXE=C:\full\path\to\cmake\utility\cmake.exe
SET MAKE_EXE=%ANDROID_NDK%\prebuilt\windows\bin\make.exe
:: variables required for android-opencv build ::
SET ANDROID_SDK=C:\full\path\to\your\copy\of\android\SDK\android-sdk-windows
SET ANT_DIR=C:\full\path\to\ant\directory\apache-ant-1.8.2
SET JAVA_HOME=C:\full\path\to\JDK\jdk1.6.0_25
:: configuration options ::
:::: general ARM-V7 settings
SET ANDROID_ABI=armeabi-v7a
SET BUILD_DIR=build
:::: uncomment following lines to compile for old emulator or old device
::SET ANDROID_ABI=armeabi
::SET BUILD_DIR=build_armeabi
:::: uncomment following lines to compile for ARM-V7 with NEON support
::SET ANDROID_ABI=armeabi-v7a with NEON
::SET BUILD_DIR=build_neon
:::: uncomment following lines to compile for x86
::SET ANDROID_ABI=x86
::SET BUILD_DIR=build_x86
:::: other options
::SET ANDROID_NATIVE_API_LEVEL=8 &:: android-3 is enough for native part of OpenCV but android-8 is required for Java API
-89
Ver Arquivo
@@ -1,89 +0,0 @@
# Makefile for Sphinx documentation
#
# You can set these variables from the command line.
SPHINXOPTS =
SPHINXBUILD = sphinx-build
PAPER =
BUILDDIR = _build
# Internal variables.
PAPEROPT_a4 = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
.PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest
help:
@echo "Please use \`make <target>' where <target> is one of"
@echo " html to make standalone HTML files"
@echo " dirhtml to make HTML files named index.html in directories"
@echo " pickle to make pickle files"
@echo " json to make JSON files"
@echo " htmlhelp to make HTML files and a HTML help project"
@echo " qthelp to make HTML files and a qthelp project"
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
@echo " changes to make an overview of all changed/added/deprecated items"
@echo " linkcheck to check all external links for integrity"
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
clean:
-rm -rf $(BUILDDIR)/*
html:
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
dirhtml:
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
pickle:
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
@echo
@echo "Build finished; now you can process the pickle files."
json:
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
@echo
@echo "Build finished; now you can process the JSON files."
htmlhelp:
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
@echo
@echo "Build finished; now you can run HTML Help Workshop with the" \
".hhp project file in $(BUILDDIR)/htmlhelp."
qthelp:
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
@echo
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/OpenCVEngine.qhcp"
@echo "To view the help file:"
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/OpenCVEngine.qhc"
latex:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
@echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \
"run these through (pdf)latex."
changes:
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
@echo
@echo "The overview file is in $(BUILDDIR)/changes."
linkcheck:
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
@echo
@echo "Link check complete; look for any errors in the above output " \
"or in $(BUILDDIR)/linkcheck/output.txt."
doctest:
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
@echo "Testing of doctests in the sources finished, look at the " \
"results in $(BUILDDIR)/doctest/output.txt."
@@ -1,61 +0,0 @@
#include "TegraDetector.h"
#include <zlib.h>
#include <string.h>
#define KERNEL_CONFIG "/proc/config.gz"
#define KERNEL_CONFIG_MAX_LINE_WIDTH 512
#define KERNEL_CONFIG_TEGRA_MAGIC "CONFIG_ARCH_TEGRA=y"
#define KERNEL_CONFIG_TEGRA2_MAGIC "CONFIG_ARCH_TEGRA_2x_SOC=y"
#define KERNEL_CONFIG_TEGRA3_MAGIC "CONFIG_ARCH_TEGRA_3x_SOC=y"
#define KERNEL_CONFIG_TEGRA4_MAGIC "CONFIG_ARCH_TEGRA_11x_SOC=y"
#define MAX_DATA_LEN 4096
int DetectTegra()
{
int result = TEGRA_NOT_TEGRA;
gzFile kernelConfig = gzopen(KERNEL_CONFIG, "r");
if (kernelConfig != 0)
{
char tmpbuf[KERNEL_CONFIG_MAX_LINE_WIDTH];
const char *tegra_config = KERNEL_CONFIG_TEGRA_MAGIC;
const char *tegra2_config = KERNEL_CONFIG_TEGRA2_MAGIC;
const char *tegra3_config = KERNEL_CONFIG_TEGRA3_MAGIC;
const char *tegra4_config = KERNEL_CONFIG_TEGRA4_MAGIC;
int len = strlen(tegra_config);
int len2 = strlen(tegra2_config);
int len3 = strlen(tegra3_config);
int len4 = strlen(tegra4_config);
while (0 != gzgets(kernelConfig, tmpbuf, KERNEL_CONFIG_MAX_LINE_WIDTH))
{
if (0 == strncmp(tmpbuf, tegra_config, len))
{
result = 1;
}
if (0 == strncmp(tmpbuf, tegra2_config, len2))
{
result = 2;
break;
}
if (0 == strncmp(tmpbuf, tegra3_config, len3))
{
result = 3;
break;
}
if (0 == strncmp(tmpbuf, tegra4_config, len4))
{
result = 4;
break;
}
}
gzclose(kernelConfig);
}
else
{
result = TEGRA_DETECTOR_ERROR;
}
return result;
}
@@ -1,9 +0,0 @@
#ifndef __TEGRA_DETECTOR_H__
#define __TEGRA_DETECTOR_H__
#define TEGRA_DETECTOR_ERROR -2
#define TEGRA_NOT_TEGRA -1
int DetectTegra();
#endif
@@ -1,26 +0,0 @@
package org.opencv.engine;
import android.os.IBinder;
public class BinderConnector
{
public BinderConnector(MarketConnector Market)
{
Init(Market);
}
public native IBinder Connect();
public boolean Disconnect()
{
Final();
return true;
}
static
{
System.loadLibrary("OpenCVEngine");
System.loadLibrary("OpenCVEngine_jni");
}
private native boolean Init(MarketConnector Market);
public native void Final();
}
@@ -1,42 +0,0 @@
package org.opencv.engine;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
public class OpenCVEngineService extends Service
{
private static final String TAG = "OpenCVEngine/Service";
private IBinder mEngineInterface;
private MarketConnector mMarket;
private BinderConnector mNativeBinder;
public void onCreate()
{
Log.i(TAG, "Service starting");
super.onCreate();
Log.i(TAG, "Engine binder component creating");
mMarket = new MarketConnector(getBaseContext());
mNativeBinder = new BinderConnector(mMarket);
mEngineInterface = mNativeBinder.Connect();
Log.i(TAG, "Service started successfully");
}
public IBinder onBind(Intent intent)
{
Log.i(TAG, "Service onBind called for intent " + intent.toString());
return mEngineInterface;
}
public boolean onUnbind(Intent intent)
{
Log.i(TAG, "Service onUnbind called for intent " + intent.toString());
return true;
}
public void OnDestroy()
{
Log.i(TAG, "OpenCV Engine service destruction");
mNativeBinder.Disconnect();
}
}
+15 -15
Ver Arquivo
@@ -766,7 +766,7 @@ float CvCascadeBoostTrainData::getVarValue( int vi, int si )
}
struct FeatureIdxOnlyPrecalc
struct FeatureIdxOnlyPrecalc : ParallelLoopBody
{
FeatureIdxOnlyPrecalc( const CvFeatureEvaluator* _featureEvaluator, CvMat* _buf, int _sample_count, bool _is_buf_16u )
{
@@ -776,11 +776,11 @@ struct FeatureIdxOnlyPrecalc
idst = _buf->data.i;
is_buf_16u = _is_buf_16u;
}
void operator()( const BlockedRange& range ) const
void operator()( const Range& range ) const
{
cv::AutoBuffer<float> valCache(sample_count);
float* valCachePtr = (float*)valCache;
for ( int fi = range.begin(); fi < range.end(); fi++)
for ( int fi = range.start; fi < range.end; fi++)
{
for( int si = 0; si < sample_count; si++ )
{
@@ -803,7 +803,7 @@ struct FeatureIdxOnlyPrecalc
bool is_buf_16u;
};
struct FeatureValAndIdxPrecalc
struct FeatureValAndIdxPrecalc : ParallelLoopBody
{
FeatureValAndIdxPrecalc( const CvFeatureEvaluator* _featureEvaluator, CvMat* _buf, Mat* _valCache, int _sample_count, bool _is_buf_16u )
{
@@ -814,9 +814,9 @@ struct FeatureValAndIdxPrecalc
idst = _buf->data.i;
is_buf_16u = _is_buf_16u;
}
void operator()( const BlockedRange& range ) const
void operator()( const Range& range ) const
{
for ( int fi = range.begin(); fi < range.end(); fi++)
for ( int fi = range.start; fi < range.end; fi++)
{
for( int si = 0; si < sample_count; si++ )
{
@@ -840,7 +840,7 @@ struct FeatureValAndIdxPrecalc
bool is_buf_16u;
};
struct FeatureValOnlyPrecalc
struct FeatureValOnlyPrecalc : ParallelLoopBody
{
FeatureValOnlyPrecalc( const CvFeatureEvaluator* _featureEvaluator, Mat* _valCache, int _sample_count )
{
@@ -848,9 +848,9 @@ struct FeatureValOnlyPrecalc
valCache = _valCache;
sample_count = _sample_count;
}
void operator()( const BlockedRange& range ) const
void operator()( const Range& range ) const
{
for ( int fi = range.begin(); fi < range.end(); fi++)
for ( int fi = range.start; fi < range.end; fi++)
for( int si = 0; si < sample_count; si++ )
valCache->at<float>(fi,si) = (*featureEvaluator)( fi, si );
}
@@ -864,12 +864,12 @@ void CvCascadeBoostTrainData::precalculate()
int minNum = MIN( numPrecalcVal, numPrecalcIdx);
double proctime = -TIME( 0 );
parallel_for( BlockedRange(numPrecalcVal, numPrecalcIdx),
FeatureIdxOnlyPrecalc(featureEvaluator, buf, sample_count, is_buf_16u!=0) );
parallel_for( BlockedRange(0, minNum),
FeatureValAndIdxPrecalc(featureEvaluator, buf, &valCache, sample_count, is_buf_16u!=0) );
parallel_for( BlockedRange(minNum, numPrecalcVal),
FeatureValOnlyPrecalc(featureEvaluator, &valCache, sample_count) );
parallel_for_( Range(numPrecalcVal, numPrecalcIdx),
FeatureIdxOnlyPrecalc(featureEvaluator, buf, sample_count, is_buf_16u!=0) );
parallel_for_( Range(0, minNum),
FeatureValAndIdxPrecalc(featureEvaluator, buf, &valCache, sample_count, is_buf_16u!=0) );
parallel_for_( Range(minNum, numPrecalcVal),
FeatureValOnlyPrecalc(featureEvaluator, &valCache, sample_count) );
cout << "Precalculation time: " << (proctime + TIME( 0 )) << endl;
}
+3
Ver Arquivo
@@ -47,6 +47,9 @@ macro(add_extra_compiler_option option)
endif()
endmacro()
# OpenCV fails some tests when 'char' is 'unsigned' by default
add_extra_compiler_option(-fsigned-char)
if(MINGW)
# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40838
# here we are trying to workaround the problem
+15 -7
Ver Arquivo
@@ -176,7 +176,8 @@ macro(android_get_compatible_target VAR)
endmacro()
unset(__android_project_chain CACHE)
#add_android_project(target_name ${path} NATIVE_DEPS opencv_core LIBRARY_DEPS ${OpenCV_BINARY_DIR} SDK_TARGET 11)
# 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 IGNORE_MANIFEST)
@@ -212,6 +213,16 @@ macro(add_android_project target path)
ocv_check_dependencies(${android_proj_NATIVE_DEPS} opencv_java)
endif()
if(EXISTS "${path}/jni/Android.mk" )
# find if native_app_glue is used
file(STRINGS "${path}/jni/Android.mk" NATIVE_APP_GLUE REGEX ".*(call import-module,android/native_app_glue)" )
if(NATIVE_APP_GLUE)
if(ANDROID_NATIVE_API_LEVEL LESS 9 OR NOT EXISTS "${ANDROID_NDK}/sources/android/native_app_glue")
set(OCV_DEPENDENCIES_FOUND FALSE)
endif()
endif()
endif()
if(OCV_DEPENDENCIES_FOUND AND android_proj_sdk_target AND ANDROID_EXECUTABLE AND ANT_EXECUTABLE AND ANDROID_TOOLS_Pkg_Revision GREATER 13 AND EXISTS "${path}/${ANDROID_MANIFEST_FILE}")
project(${target})
@@ -268,9 +279,6 @@ macro(add_android_project target path)
file(STRINGS "${path}/jni/Android.mk" JNI_LIB_NAME REGEX "LOCAL_MODULE[ ]*:=[ ]*.*" )
string(REGEX REPLACE "LOCAL_MODULE[ ]*:=[ ]*([a-zA-Z_][a-zA-Z_0-9]*)[ ]*" "\\1" JNI_LIB_NAME "${JNI_LIB_NAME}")
# find using of native app glue to determine native activity
file(STRINGS "${path}/jni/Android.mk" NATIVE_APP_GLUE REGEX ".*(call import-module,android/native_app_glue)" )
if(JNI_LIB_NAME)
ocv_include_modules_recurse(${android_proj_NATIVE_DEPS})
ocv_include_directories("${path}/jni")
@@ -291,9 +299,9 @@ macro(add_android_project target path)
)
get_target_property(android_proj_jni_location "${JNI_LIB_NAME}" LOCATION)
if (NOT (CMAKE_BUILD_TYPE MATCHES "debug"))
add_custom_command(TARGET ${JNI_LIB_NAME} POST_BUILD COMMAND ${CMAKE_STRIP} --strip-unneeded "${android_proj_jni_location}")
endif()
if (NOT (CMAKE_BUILD_TYPE MATCHES "debug"))
add_custom_command(TARGET ${JNI_LIB_NAME} POST_BUILD COMMAND ${CMAKE_STRIP} --strip-unneeded "${android_proj_jni_location}")
endif()
endif()
endif()
+41 -2
Ver Arquivo
@@ -26,6 +26,47 @@ if(CUDA_FOUND)
set(HAVE_CUBLAS 1)
endif()
if(${CUDA_VERSION} VERSION_LESS "5.5")
find_cuda_helper_libs(npp)
else()
# hack for CUDA 5.5
if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "arm")
unset(CUDA_TOOLKIT_INCLUDE CACHE)
unset(CUDA_CUDART_LIBRARY CACHE)
unset(CUDA_cublas_LIBRARY CACHE)
unset(CUDA_cufft_LIBRARY CACHE)
unset(CUDA_npp_LIBRARY CACHE)
if(SOFTFP)
set(cuda_arm_path "${CUDA_TOOLKIT_ROOT_DIR}/targets/armv7-linux-gnueabi")
else()
set(cuda_arm_path "${CUDA_TOOLKIT_ROOT_DIR}/targets/armv7-linux-gnueabihf")
endif()
set(CUDA_TOOLKIT_INCLUDE "${cuda_arm_path}/include" CACHE PATH "include path")
set(CUDA_INCLUDE_DIRS ${CUDA_TOOLKIT_INCLUDE})
set(cuda_arm_library_path "${cuda_arm_path}/lib")
set(CUDA_CUDART_LIBRARY "${cuda_arm_library_path}/libcudart.so" CACHE FILEPATH "cudart library")
set(CUDA_LIBRARIES ${CUDA_CUDART_LIBRARY})
set(CUDA_cublas_LIBRARY "${cuda_arm_library_path}/libcublas.so" CACHE FILEPATH "cublas library")
set(CUDA_cufft_LIBRARY "${cuda_arm_library_path}/libcufft.so" CACHE FILEPATH "cufft library")
set(CUDA_nppc_LIBRARY "${cuda_arm_library_path}/libnppc.so" CACHE FILEPATH "nppc library")
set(CUDA_nppi_LIBRARY "${cuda_arm_library_path}/libnppi.so" CACHE FILEPATH "nppi library")
set(CUDA_npps_LIBRARY "${cuda_arm_library_path}/libnpps.so" CACHE FILEPATH "npps library")
set(CUDA_npp_LIBRARY "${CUDA_nppc_LIBRARY};${CUDA_nppi_LIBRARY};${CUDA_npps_LIBRARY}" CACHE STRING "npp library")
else()
unset(CUDA_npp_LIBRARY CACHE)
find_cuda_helper_libs(nppc)
find_cuda_helper_libs(nppi)
find_cuda_helper_libs(npps)
set(CUDA_npp_LIBRARY "${CUDA_nppc_LIBRARY};${CUDA_nppi_LIBRARY};${CUDA_npps_LIBRARY}" CACHE STRING "npp library")
endif()
endif()
if(WITH_NVCUVID)
find_cuda_helper_libs(nvcuvid)
set(HAVE_NVCUVID 1)
@@ -136,8 +177,6 @@ if(CUDA_FOUND)
mark_as_advanced(CUDA_BUILD_CUBIN CUDA_BUILD_EMULATION CUDA_VERBOSE_BUILD CUDA_SDK_ROOT_DIR)
find_cuda_helper_libs(npp)
macro(ocv_cuda_compile VAR)
foreach(var CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_DEBUG)
set(${var}_backup_in_cuda_compile_ "${${var}}")
+52 -48
Ver Arquivo
@@ -27,23 +27,23 @@ endif()
# the -fPIC flag should be used.
# ----------------------------------------------------------------------------
if(UNIX)
if (__ICL)
set(CV_ICC __ICL)
elseif(__ICC)
set(CV_ICC __ICC)
elseif(__ECL)
set(CV_ICC __ECL)
elseif(__ECC)
set(CV_ICC __ECC)
elseif(__INTEL_COMPILER)
set(CV_ICC __INTEL_COMPILER)
elseif(CMAKE_C_COMPILER MATCHES "icc")
set(CV_ICC icc_matches_c_compiler)
endif()
if (__ICL)
set(CV_ICC __ICL)
elseif(__ICC)
set(CV_ICC __ICC)
elseif(__ECL)
set(CV_ICC __ECL)
elseif(__ECC)
set(CV_ICC __ECC)
elseif(__INTEL_COMPILER)
set(CV_ICC __INTEL_COMPILER)
elseif(CMAKE_C_COMPILER MATCHES "icc")
set(CV_ICC icc_matches_c_compiler)
endif()
endif()
if(MSVC AND CMAKE_C_COMPILER MATCHES "icc")
set(CV_ICC __INTEL_COMPILER_FOR_WINDOWS)
set(CV_ICC __INTEL_COMPILER_FOR_WINDOWS)
endif()
# ----------------------------------------------------------------------------
@@ -64,45 +64,49 @@ if(CMAKE_COMPILER_IS_CLANGCXX)
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)
execute_process(COMMAND ${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1} -dumpversion
OUTPUT_VARIABLE CMAKE_OPENCV_GCC_VERSION_FULL
OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND ${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1} -v
ERROR_VARIABLE CMAKE_OPENCV_GCC_INFO_FULL
OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND ${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1} -v
ERROR_VARIABLE CMAKE_OPENCV_GCC_INFO_FULL
OUTPUT_STRIP_TRAILING_WHITESPACE)
# Typical output in CMAKE_OPENCV_GCC_VERSION_FULL: "c+//0 (whatever) 4.2.3 (...)"
# Look for the version number
string(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+" CMAKE_GCC_REGEX_VERSION "${CMAKE_OPENCV_GCC_VERSION_FULL}")
if(NOT CMAKE_GCC_REGEX_VERSION)
string(REGEX MATCH "[0-9]+\\.[0-9]+" CMAKE_GCC_REGEX_VERSION "${CMAKE_OPENCV_GCC_VERSION_FULL}")
endif()
# Split the three parts:
string(REGEX MATCHALL "[0-9]+" CMAKE_OPENCV_GCC_VERSIONS "${CMAKE_GCC_REGEX_VERSION}")
list(GET CMAKE_OPENCV_GCC_VERSIONS 0 CMAKE_OPENCV_GCC_VERSION_MAJOR)
list(GET CMAKE_OPENCV_GCC_VERSIONS 1 CMAKE_OPENCV_GCC_VERSION_MINOR)
set(CMAKE_OPENCV_GCC_VERSION ${CMAKE_OPENCV_GCC_VERSION_MAJOR}${CMAKE_OPENCV_GCC_VERSION_MINOR})
math(EXPR CMAKE_OPENCV_GCC_VERSION_NUM "${CMAKE_OPENCV_GCC_VERSION_MAJOR}*100 + ${CMAKE_OPENCV_GCC_VERSION_MINOR}")
message(STATUS "Detected version of GNU GCC: ${CMAKE_OPENCV_GCC_VERSION} (${CMAKE_OPENCV_GCC_VERSION_NUM})")
if(WIN32)
execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpmachine
OUTPUT_VARIABLE CMAKE_OPENCV_GCC_TARGET_MACHINE
OUTPUT_STRIP_TRAILING_WHITESPACE)
if(CMAKE_OPENCV_GCC_TARGET_MACHINE MATCHES "amd64|x86_64|AMD64")
set(MINGW64 1)
endif()
# Typical output in CMAKE_OPENCV_GCC_VERSION_FULL: "c+//0 (whatever) 4.2.3 (...)"
# Look for the version number
string(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+" CMAKE_GCC_REGEX_VERSION "${CMAKE_OPENCV_GCC_VERSION_FULL}")
if(NOT CMAKE_GCC_REGEX_VERSION)
string(REGEX MATCH "[0-9]+\\.[0-9]+" CMAKE_GCC_REGEX_VERSION "${CMAKE_OPENCV_GCC_VERSION_FULL}")
endif()
# Split the three parts:
string(REGEX MATCHALL "[0-9]+" CMAKE_OPENCV_GCC_VERSIONS "${CMAKE_GCC_REGEX_VERSION}")
list(GET CMAKE_OPENCV_GCC_VERSIONS 0 CMAKE_OPENCV_GCC_VERSION_MAJOR)
list(GET CMAKE_OPENCV_GCC_VERSIONS 1 CMAKE_OPENCV_GCC_VERSION_MINOR)
set(CMAKE_OPENCV_GCC_VERSION ${CMAKE_OPENCV_GCC_VERSION_MAJOR}${CMAKE_OPENCV_GCC_VERSION_MINOR})
math(EXPR CMAKE_OPENCV_GCC_VERSION_NUM "${CMAKE_OPENCV_GCC_VERSION_MAJOR}*100 + ${CMAKE_OPENCV_GCC_VERSION_MINOR}")
message(STATUS "Detected version of GNU GCC: ${CMAKE_OPENCV_GCC_VERSION} (${CMAKE_OPENCV_GCC_VERSION_NUM})")
if(WIN32)
execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpmachine
OUTPUT_VARIABLE CMAKE_OPENCV_GCC_TARGET_MACHINE
OUTPUT_STRIP_TRAILING_WHITESPACE)
if(CMAKE_OPENCV_GCC_TARGET_MACHINE MATCHES "amd64|x86_64|AMD64")
set(MINGW64 1)
endif()
endif()
endif()
if(MINGW64 OR CMAKE_SYSTEM_PROCESSOR MATCHES "amd64.*|x86_64.*|AMD64.*" OR CMAKE_GENERATOR MATCHES "Visual Studio.*Win64")
set(X86_64 1)
if(MSVC64 OR MINGW64)
set(X86_64 1)
elseif(MINGW OR (MSVC AND NOT CMAKE_CROSSCOMPILING))
set(X86 1)
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "amd64.*|x86_64.*|AMD64.*")
set(X86_64 1)
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "i686.*|i386.*|x86.*|amd64.*|AMD64.*")
set(X86 1)
set(X86 1)
elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "arm.*|ARM.*")
set(ARM 1)
set(ARM 1)
endif()
+14 -6
Ver Arquivo
@@ -4,7 +4,7 @@ if(APPLE)
set(OPENCL_INCLUDE_DIR "" CACHE STRING "OpenCL include directory")
mark_as_advanced(OPENCL_INCLUDE_DIR OPENCL_LIBRARY)
else(APPLE)
find_package(OpenCL QUIET)
#find_package(OpenCL QUIET)
if (NOT OPENCL_FOUND)
find_path(OPENCL_ROOT_DIR
@@ -17,7 +17,8 @@ else(APPLE)
NAMES OpenCL/cl.h CL/cl.h
HINTS ${OPENCL_ROOT_DIR}
PATH_SUFFIXES include include/nvidia-current
DOC "OpenCL include directory")
DOC "OpenCL include directory"
NO_DEFAULT_PATH)
if (X86_64)
set(OPENCL_POSSIBLE_LIB_SUFFIXES lib/Win64 lib/x86_64 lib/x64)
@@ -29,7 +30,8 @@ else(APPLE)
NAMES OpenCL
HINTS ${OPENCL_ROOT_DIR}
PATH_SUFFIXES ${OPENCL_POSSIBLE_LIB_SUFFIXES}
DOC "OpenCL library")
DOC "OpenCL library"
NO_DEFAULT_PATH)
mark_as_advanced(OPENCL_INCLUDE_DIR OPENCL_LIBRARY)
include(FindPackageHandleStandardArgs)
@@ -42,12 +44,18 @@ if(OPENCL_FOUND)
set(OPENCL_INCLUDE_DIRS ${OPENCL_INCLUDE_DIR})
set(OPENCL_LIBRARIES ${OPENCL_LIBRARY})
if (X86_64)
if(WIN32 AND X86_64)
set(CLAMD_POSSIBLE_LIB_SUFFIXES lib64/import)
elseif (X86)
elseif(WIN32)
set(CLAMD_POSSIBLE_LIB_SUFFIXES lib32/import)
endif()
if(X86_64 AND UNIX)
set(CLAMD_POSSIBLE_LIB_SUFFIXES lib64)
elseif(X86 AND UNIX)
set(CLAMD_POSSIBLE_LIB_SUFFIXES lib32)
endif()
if(WITH_OPENCLAMDFFT)
find_path(CLAMDFFT_ROOT_DIR
NAMES include/clAmdFft.h
@@ -78,7 +86,7 @@ if(OPENCL_FOUND)
if(WITH_OPENCLAMDBLAS)
find_path(CLAMDBLAS_ROOT_DIR
NAMES include/clAmdBlas.h
PATHS ENV CLAMDFFT_PATH ENV ProgramFiles
PATHS ENV CLAMDBLAS_PATH ENV ProgramFiles
PATH_SUFFIXES clAmdBlas AMD/clAmdBlas
DOC "AMD FFT root directory"
NO_DEFAULT_PATH)
+6 -12
Ver Arquivo
@@ -104,18 +104,12 @@ if(PYTHON_EXECUTABLE)
if(BUILD_DOCS)
find_host_program(SPHINX_BUILD sphinx-build)
if(SPHINX_BUILD)
if(UNIX)
execute_process(COMMAND sh -c "${SPHINX_BUILD} -_ 2>&1 | sed -ne 1p"
RESULT_VARIABLE SPHINX_PROCESS
OUTPUT_VARIABLE SPHINX_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE)
else()
execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import sphinx; print sphinx.__version__"
RESULT_VARIABLE SPHINX_PROCESS
OUTPUT_VARIABLE SPHINX_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE)
endif()
if(SPHINX_PROCESS EQUAL 0)
execute_process(COMMAND "${SPHINX_BUILD}"
OUTPUT_QUIET
ERROR_VARIABLE SPHINX_OUTPUT
OUTPUT_STRIP_TRAILING_WHITESPACE)
if(SPHINX_OUTPUT MATCHES "^Sphinx v([0-9][^ \n]*)")
set(SPHINX_VERSION "${CMAKE_MATCH_1}")
set(HAVE_SPHINX 1)
message(STATUS "Found Sphinx ${SPHINX_VERSION}: ${SPHINX_BUILD}")
endif()
+22 -6
Ver Arquivo
@@ -13,12 +13,29 @@ if(WITH_WIN32UI)
endif(WITH_WIN32UI)
# --- QT4 ---
ocv_clear_vars(HAVE_QT)
ocv_clear_vars(HAVE_QT HAVE_QT5)
if(WITH_QT)
find_package(Qt4)
if(QT4_FOUND)
set(HAVE_QT TRUE)
add_definitions(-DHAVE_QT) # We need to define the macro this way, using cvconfig.h does not work
if(NOT CMAKE_VERSION VERSION_LESS 2.8.3 AND NOT WITH_QT EQUAL 4)
find_package(Qt5Core)
find_package(Qt5Gui)
find_package(Qt5Widgets)
find_package(Qt5Test)
find_package(Qt5Concurrent)
if(Qt5Core_FOUND AND Qt5Gui_FOUND AND Qt5Widgets_FOUND AND Qt5Test_FOUND AND Qt5Concurrent_FOUND)
set(HAVE_QT5 ON)
set(HAVE_QT ON)
find_package(Qt5OpenGL)
if(Qt5OpenGL_FOUND)
set(QT_QTOPENGL_FOUND ON)
endif()
endif()
endif()
if(NOT HAVE_QT)
find_package(Qt4 REQUIRED QtCore QtGui QtTest)
if(QT4_FOUND)
set(HAVE_QT TRUE)
endif()
endif()
endif()
@@ -42,7 +59,6 @@ if(WITH_OPENGL)
list(APPEND OPENCV_LINKER_LIBS ${OPENGL_LIBRARIES})
if(QT_QTOPENGL_FOUND)
set(HAVE_QT_OPENGL TRUE)
add_definitions(-DHAVE_QT_OPENGL)
else()
ocv_include_directories(${OPENGL_INCLUDE_DIR})
endif()
+28 -5
Ver Arquivo
@@ -81,10 +81,33 @@ endif(WITH_GIGEAPI)
# --- Dc1394 ---
ocv_clear_vars(HAVE_DC1394 HAVE_DC1394_2)
if(WITH_1394)
CHECK_MODULE(libdc1394-2 HAVE_DC1394_2)
if(NOT HAVE_DC1394_2)
CHECK_MODULE(libdc1394 HAVE_DC1394)
endif()
if(WIN32 AND MINGW)
find_path(CMU1394_INCLUDE_PATH "/1394common.h"
PATH_SUFFIXES include
DOC "The path to cmu1394 headers")
find_path(DC1394_2_INCLUDE_PATH "/dc1394/dc1394.h"
PATH_SUFFIXES include
DOC "The path to DC1394 2.x headers")
if(CMU1394_INCLUDE_PATH AND DC1394_2_INCLUDE_PATH)
set(CMU1394_LIB_DIR "${CMU1394_INCLUDE_PATH}/../lib" CACHE PATH "Full path of CMU1394 library directory")
set(DC1394_2_LIB_DIR "${DC1394_2_INCLUDE_PATH}/../lib" CACHE PATH "Full path of DC1394 2.x library directory")
if(EXISTS "${CMU1394_LIB_DIR}/lib1394camera.a" AND EXISTS "${DC1394_2_LIB_DIR}/libdc1394.a")
set(HAVE_DC1394_2 TRUE)
endif()
endif()
if(HAVE_DC1394_2)
ocv_parse_pkg("libdc1394-2" "${DC1394_2_LIB_DIR}/pkgconfig" "")
ocv_include_directories(${DC1394_2_INCLUDE_PATH})
set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES}
"${DC1394_2_LIB_DIR}/libdc1394.a"
"${CMU1394_LIB_DIR}/lib1394camera.a")
endif(HAVE_DC1394_2)
else(WIN32 AND MINGW)
CHECK_MODULE(libdc1394-2 HAVE_DC1394_2)
if(NOT HAVE_DC1394_2)
CHECK_MODULE(libdc1394 HAVE_DC1394)
endif()
endif(WIN32 AND MINGW)
endif(WITH_1394)
# --- xine ---
@@ -197,7 +220,7 @@ endif(WITH_MSMF)
# --- Extra HighGUI libs on Windows ---
if(WIN32)
list(APPEND HIGHGUI_LIBRARIES comctl32 gdi32 ole32 vfw32)
list(APPEND HIGHGUI_LIBRARIES comctl32 gdi32 ole32 setupapi ws2_32 vfw32)
if(MINGW64)
list(APPEND HIGHGUI_LIBRARIES avifil32 avicap32 winmm msvfw32)
list(REMOVE_ITEM HIGHGUI_LIBRARIES vfw32)
+9 -5
Ver Arquivo
@@ -9,6 +9,7 @@
#
# Created: 5 Aug 2011 by Marian Zajko (marian.zajko@ximea.com)
# Updated: 25 June 2012 by Igor Kuzmin (parafin@ximea.com)
# Updated: 22 October 2012 by Marian Zajko (marian.zajko@ximea.com)
#
set(XIMEA_FOUND)
@@ -18,11 +19,15 @@ set(XIMEA_LIBRARY_DIR)
if(WIN32)
# Try to find the XIMEA API path in registry.
GET_FILENAME_COMPONENT(XIMEA_PATH "[HKEY_CURRENT_USER\\Software\\XIMEA\\CamSupport\\API;Path]" ABSOLUTE)
if(EXISTS XIMEA_PATH)
if(EXISTS ${XIMEA_PATH})
set(XIMEA_FOUND 1)
# set LIB folders
set(XIMEA_LIBRARY_DIR "${XIMEA_PATH}/x86")
if(CMAKE_CL_64)
set(XIMEA_LIBRARY_DIR "${XIMEA_PATH}/x64")
else()
set(XIMEA_LIBRARY_DIR "${XIMEA_PATH}/x86")
endif()
else()
set(XIMEA_FOUND 0)
endif()
@@ -38,5 +43,4 @@ endif()
mark_as_advanced(FORCE XIMEA_FOUND)
mark_as_advanced(FORCE XIMEA_PATH)
mark_as_advanced(FORCE XIMEA_LIBRARY_DIR)
mark_as_advanced(FORCE XIMEA_LIBRARY_DIR)
+1 -1
Ver Arquivo
@@ -162,7 +162,7 @@ if(UNIX)
endif()
if(ANDROID)
install(FILES "${OpenCV_SOURCE_DIR}/android/android.toolchain.cmake" DESTINATION ${OPENCV_CONFIG_INSTALL_PATH}/)
install(FILES "${OpenCV_SOURCE_DIR}/platforms/android/android.toolchain.cmake" DESTINATION ${OPENCV_CONFIG_INSTALL_PATH}/)
endif()
# --------------------------------------------------------------------------------------------
+26 -9
Ver Arquivo
@@ -303,7 +303,7 @@ macro(ocv_glob_modules)
# collect modules
set(OPENCV_INITIAL_PASS ON)
foreach(__path ${ARGN})
ocv_get_real_path(__path "${__path}")
get_filename_component(__path "${__path}" ABSOLUTE)
list(FIND __directories_observed "${__path}" __pathIdx)
if(__pathIdx GREATER -1)
@@ -315,7 +315,7 @@ macro(ocv_glob_modules)
if(__ocvmodules)
list(SORT __ocvmodules)
foreach(mod ${__ocvmodules})
ocv_get_real_path(__modpath "${__path}/${mod}")
get_filename_component(__modpath "${__path}/${mod}" ABSOLUTE)
if(EXISTS "${__modpath}/CMakeLists.txt")
list(FIND __directories_observed "${__modpath}" __pathIdx)
@@ -432,11 +432,19 @@ macro(ocv_glob_module_sources)
file(GLOB lib_hdrs "include/opencv2/${name}/*.hpp" "include/opencv2/${name}/*.h")
file(GLOB lib_hdrs_detail "include/opencv2/${name}/detail/*.hpp" "include/opencv2/${name}/detail/*.h")
file(GLOB cl_kernels "src/opencl/*.cl")
file(GLOB lib_cuda_srcs "src/cuda/*.cu")
set(cuda_objs "")
set(lib_cuda_hdrs "")
source_group("Src" FILES ${lib_srcs} ${lib_int_hdrs})
source_group("Include" FILES ${lib_hdrs})
source_group("Include\\detail" FILES ${lib_hdrs_detail})
if(HAVE_CUDA AND lib_cuda_srcs)
ocv_include_directories(${CUDA_INCLUDE_DIRS})
file(GLOB lib_cuda_hdrs "src/cuda/*.hpp")
ocv_cuda_compile(cuda_objs ${lib_cuda_srcs} ${lib_cuda_hdrs})
source_group("Src\\Cuda" FILES ${lib_cuda_srcs} ${lib_cuda_hdrs})
endif()
file(GLOB cl_kernels "src/opencl/*.cl")
if(HAVE_OPENCL AND cl_kernels)
ocv_include_directories(${OPENCL_INCLUDE_DIRS})
@@ -448,7 +456,12 @@ macro(ocv_glob_module_sources)
list(APPEND lib_srcs ${cl_kernels} "${CMAKE_CURRENT_BINARY_DIR}/kernels.cpp")
endif()
ocv_set_module_sources(${ARGN} HEADERS ${lib_hdrs} ${lib_hdrs_detail} SOURCES ${lib_srcs} ${lib_int_hdrs})
source_group("Src" FILES ${lib_srcs} ${lib_int_hdrs})
source_group("Include" FILES ${lib_hdrs})
source_group("Include\\detail" FILES ${lib_hdrs_detail})
ocv_set_module_sources(${ARGN} HEADERS ${lib_hdrs} ${lib_hdrs_detail}
SOURCES ${lib_srcs} ${lib_int_hdrs} ${cuda_objs} ${lib_cuda_srcs} ${lib_cuda_hdrs})
endmacro()
# creates OpenCV module in current folder
@@ -457,10 +470,14 @@ endmacro()
# ocv_create_module(<extra link dependencies>)
# ocv_create_module(SKIP_LINK)
macro(ocv_create_module)
add_library(${the_module} ${OPENCV_MODULE_TYPE} ${OPENCV_MODULE_${the_module}_HEADERS} ${OPENCV_MODULE_${the_module}_SOURCES})
add_library(${the_module} ${OPENCV_MODULE_TYPE} ${OPENCV_MODULE_${the_module}_HEADERS} ${OPENCV_MODULE_${the_module}_SOURCES}
"${OPENCV_CONFIG_FILE_INCLUDE_DIR}/cvconfig.h" "${OPENCV_CONFIG_FILE_INCLUDE_DIR}/opencv2/opencv_modules.hpp")
if(NOT "${ARGN}" STREQUAL "SKIP_LINK")
target_link_libraries(${the_module} ${OPENCV_MODULE_${the_module}_DEPS} ${OPENCV_MODULE_${the_module}_DEPS_EXT} ${OPENCV_LINKER_LIBS} ${IPP_LIBS} ${ARGN})
if (HAVE_CUDA)
target_link_libraries(${the_module} ${CUDA_LIBRARIES} ${CUDA_npp_LIBRARY})
endif()
if(HAVE_OPENCL AND OPENCL_LIBRARIES)
target_link_libraries(${the_module} ${OPENCL_LIBRARIES})
endif()
@@ -545,8 +562,8 @@ endmacro()
# ocv_define_module(module_name [INTERNAL] [REQUIRED] [<list of dependencies>] [OPTIONAL <list of optional dependencies>])
macro(ocv_define_module module_name)
ocv_add_module(${module_name} ${ARGN})
ocv_glob_module_sources()
ocv_module_include_directories()
ocv_glob_module_sources()
ocv_create_module()
ocv_add_precompiled_headers(${the_module})
+7 -10
Ver Arquivo
@@ -411,16 +411,6 @@ macro(ocv_regex_escape var regex)
endmacro()
# get absolute path with symlinks resolved
macro(ocv_get_real_path VAR PATHSTR)
if(CMAKE_VERSION VERSION_LESS 2.8)
get_filename_component(${VAR} "${PATHSTR}" ABSOLUTE)
else()
get_filename_component(${VAR} "${PATHSTR}" REALPATH)
endif()
endmacro()
# convert list of paths to full paths
macro(ocv_convert_to_full_paths VAR)
if(${VAR})
@@ -511,6 +501,13 @@ macro(ocv_parse_header2 LIBNAME HDR_PATH VARNAME)
endif()
endmacro()
# read single version info from the pkg file
macro(ocv_parse_pkg LIBNAME PKG_PATH SCOPE)
if(EXISTS "${PKG_PATH}/${LIBNAME}.pc")
file(STRINGS "${PKG_PATH}/${LIBNAME}.pc" line_to_parse REGEX "^Version:[ \t]+[0-9.]*.*$" LIMIT_COUNT 1)
STRING(REGEX REPLACE ".*Version: ([^ ]+).*" "\\1" ALIASOF_${LIBNAME}_VERSION "${line_to_parse}" )
endif()
endmacro()
################################################################################################
# short command to setup source group
+6
Ver Arquivo
@@ -228,3 +228,9 @@
/* Clp support */
#cmakedefine HAVE_CLP
/* Qt support */
#cmakedefine HAVE_QT
/* Qt OpenGL support */
#cmakedefine HAVE_QT_OPENGL
+2 -2
Ver Arquivo
@@ -53,8 +53,8 @@ if(BUILD_DOCS AND HAVE_SPHINX)
endif()
endforeach()
file(GLOB_RECURSE _OPENCV_FILES_REF "${OpenCV_SOURCE_DIR}/android/service/doc/*.rst")
file(GLOB_RECURSE _OPENCV_FILES_REF_PICT "${OpenCV_SOURCE_DIR}/android/service/doc/*.png" "${OpenCV_SOURCE_DIR}/android/service/doc/*.jpg")
file(GLOB_RECURSE _OPENCV_FILES_REF "${OpenCV_SOURCE_DIR}/platforms/android/service/doc/*.rst")
file(GLOB_RECURSE _OPENCV_FILES_REF_PICT "${OpenCV_SOURCE_DIR}/platforms/android/service/doc/*.png" "${OpenCV_SOURCE_DIR}/platforms/android/service/doc/*.jpg")
list(APPEND OPENCV_FILES_REF ${_OPENCV_FILES_REF})
list(APPEND OPENCV_FILES_REF_PICT ${_OPENCV_FILES_REF_PICT})
+1 -1
Ver Arquivo
@@ -183,7 +183,7 @@
{% if theme_lang == 'c' %}
{% endif %}
{% if theme_lang == 'cpp' %}
<li>Try the <a href="http://docs.opencv.org/trunk/opencv_cheatsheet.pdf">Cheatsheet</a>.</li>
<li>Try the <a href="http://docs.opencv.org/opencv_cheatsheet.pdf">Cheatsheet</a>.</li>
{% endif %}
{% if theme_lang == 'py' %}
<li>Try the <a href="cookbook.html">Cookbook</a>.</li>
+1 -1
Ver Arquivo
@@ -1,4 +1,4 @@
#/usr/bin/env python
#!/usr/bin/env python
import sys, glob
+1 -1
Ver Arquivo
@@ -1,4 +1,4 @@
#/usr/bin/env python
#!/usr/bin/env python
import os, sys, fnmatch, re
+114 -112
Ver Arquivo
@@ -1,4 +1,4 @@
#/usr/bin/env python
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
@@ -239,7 +239,7 @@ latex_documents = [
u'', 'manual'),
('doc/tutorials/tutorials', 'opencv_tutorials.tex', u'The OpenCV Tutorials',
u'', 'manual'),
('android/refman', 'opencv2manager.tex', u'The OpenCV Manager Manual',
('platforms/android/refman', 'opencv2manager.tex', u'The OpenCV Manager Manual',
u'', 'manual'),
]
@@ -284,120 +284,122 @@ latex_domain_indices = True
# (source start file, name, description, authors, manual section).
man_pages = [
('index', 'opencv', u'The OpenCV Reference Manual',
[u'opencv-dev@itseez.com'], 1)
[u'admin@opencv.org'], 1)
]
# ---- External links for tutorials -----------------
extlinks = {
'basicstructures' : ('http://opencv.itseez.com/modules/core/doc/basic_structures.html#%s', None),
'oldbasicstructures' : ('http://opencv.itseez.com/modules/core/doc/old_basic_structures.html#%s', None),
'readwriteimagevideo' : ('http://opencv.itseez.com/modules/highgui/doc/reading_and_writing_images_and_video.html#%s', None),
'operationsonarrays' : ('http://opencv.itseez.com/modules/core/doc/operations_on_arrays.html#%s', None),
'utilitysystemfunctions':('http://opencv.itseez.com/modules/core/doc/utility_and_system_functions_and_macros.html#%s', None),
'imgprocfilter':('http://opencv.itseez.com/modules/imgproc/doc/filtering.html#%s', None),
'svms':('http://opencv.itseez.com/modules/ml/doc/support_vector_machines.html#%s', None),
'drawingfunc':('http://opencv.itseez.com/modules/core/doc/drawing_functions.html#%s', None),
'xmlymlpers':('http://opencv.itseez.com/modules/core/doc/xml_yaml_persistence.html#%s', None),
'hgvideo' : ('http://opencv.itseez.com/modules/highgui/doc/reading_and_writing_images_and_video.html#%s', None),
'gpuinit' : ('http://opencv.itseez.com/modules/gpu/doc/initalization_and_information.html#%s', None),
'gpudatastructure' : ('http://opencv.itseez.com/modules/gpu/doc/data_structures.html#%s', None),
'gpuopmatrices' : ('http://opencv.itseez.com/modules/gpu/doc/operations_on_matrices.html#%s', None),
'gpuperelement' : ('http://opencv.itseez.com/modules/gpu/doc/per_element_operations.html#%s', None),
'gpuimgproc' : ('http://opencv.itseez.com/modules/gpu/doc/image_processing.html#%s', None),
'gpumatrixreduct' : ('http://opencv.itseez.com/modules/gpu/doc/matrix_reductions.html#%s', None),
'filtering':('http://opencv.itseez.com/modules/imgproc/doc/filtering.html#%s', None),
'flann' : ('http://opencv.itseez.com/modules/flann/doc/flann_fast_approximate_nearest_neighbor_search.html#%s', None ),
'calib3d' : ('http://opencv.itseez.com/trunk/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html#%s', None ),
'feature2d' : ('http://opencv.itseez.com/trunk/modules/imgproc/doc/feature_detection.html#%s', None ),
'imgproc_geometric' : ('http://opencv.itseez.com/trunk/modules/imgproc/doc/geometric_transformations.html#%s', None ),
'basicstructures' : ('http://docs.opencv.org/modules/core/doc/basic_structures.html#%s', None),
'oldbasicstructures' : ('http://docs.opencv.org/modules/core/doc/old_basic_structures.html#%s', None),
'readwriteimagevideo' : ('http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html#%s', None),
'operationsonarrays' : ('http://docs.opencv.org/modules/core/doc/operations_on_arrays.html#%s', None),
'utilitysystemfunctions':('http://docs.opencv.org/modules/core/doc/utility_and_system_functions_and_macros.html#%s', None),
'imgprocfilter':('http://docs.opencv.org/modules/imgproc/doc/filtering.html#%s', None),
'svms':('http://docs.opencv.org/modules/ml/doc/support_vector_machines.html#%s', None),
'drawingfunc':('http://docs.opencv.org/modules/core/doc/drawing_functions.html#%s', None),
'xmlymlpers':('http://docs.opencv.org/modules/core/doc/xml_yaml_persistence.html#%s', None),
'hgvideo' : ('http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html#%s', None),
'gpuinit' : ('http://docs.opencv.org/modules/gpu/doc/initalization_and_information.html#%s', None),
'gpudatastructure' : ('http://docs.opencv.org/modules/gpu/doc/data_structures.html#%s', None),
'gpuopmatrices' : ('http://docs.opencv.org/modules/gpu/doc/operations_on_matrices.html#%s', None),
'gpuperelement' : ('http://docs.opencv.org/modules/gpu/doc/per_element_operations.html#%s', None),
'gpuimgproc' : ('http://docs.opencv.org/modules/gpu/doc/image_processing.html#%s', None),
'gpumatrixreduct' : ('http://docs.opencv.org/modules/gpu/doc/matrix_reductions.html#%s', None),
'filtering':('http://docs.opencv.org/modules/imgproc/doc/filtering.html#%s', None),
'flann' : ('http://docs.opencv.org/modules/flann/doc/flann_fast_approximate_nearest_neighbor_search.html#%s', None ),
'calib3d' : ('http://docs.opencv.org/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html#%s', None ),
'feature2d' : ('http://docs.opencv.org/modules/imgproc/doc/feature_detection.html#%s', None ),
'imgproc_geometric' : ('http://docs.opencv.org/modules/imgproc/doc/geometric_transformations.html#%s', None ),
'opencv_group' : ('http://tech.groups.yahoo.com/group/OpenCV/%s', None),
# 'opencv_group' : ('http://answers.opencv.org/%s', None),
'opencv_qa' : ('http://answers.opencv.org/%s', None),
'how_to_contribute' : ('http://code.opencv.org/projects/opencv/wiki/How_to_contribute/%s', None),
'cvt_color': ('http://opencv.itseez.com/modules/imgproc/doc/miscellaneous_transformations.html?highlight=cvtcolor#cvtcolor%s', None),
'imread': ('http://opencv.itseez.com/modules/highgui/doc/reading_and_writing_images_and_video.html?highlight=imread#imread%s', None),
'imwrite': ('http://opencv.itseez.com/modules/highgui/doc/reading_and_writing_images_and_video.html?highlight=imwrite#imwrite%s', None),
'imshow': ('http://opencv.itseez.com/modules/highgui/doc/user_interface.html?highlight=imshow#imshow%s', None),
'named_window': ('http://opencv.itseez.com/modules/highgui/doc/user_interface.html?highlight=namedwindow#namedwindow%s', None),
'wait_key': ('http://opencv.itseez.com/modules/highgui/doc/user_interface.html?highlight=waitkey#waitkey%s', None),
'add_weighted': ('http://opencv.itseez.com/modules/core/doc/operations_on_arrays.html?highlight=addweighted#addweighted%s', None),
'saturate_cast': ('http://opencv.itseez.com/modules/core/doc/utility_and_system_functions_and_macros.html?highlight=saturate_cast#saturate-cast%s', None),
'mat_zeros': ('http://opencv.itseez.com/modules/core/doc/basic_structures.html?highlight=zeros#mat-zeros%s', None),
'convert_to': ('http://opencv.itseez.com/modules/core/doc/basic_structures.html#mat-convertto%s', None),
'create_trackbar': ('http://opencv.itseez.com/modules/highgui/doc/user_interface.html?highlight=createtrackbar#createtrackbar%s', None),
'point': ('http://opencv.itseez.com/modules/core/doc/basic_structures.html#point%s', None),
'scalar': ('http://opencv.itseez.com/modules/core/doc/basic_structures.html#scalar%s', None),
'line': ('http://opencv.itseez.com/modules/core/doc/drawing_functions.html#line%s', None),
'ellipse': ('http://opencv.itseez.com/modules/core/doc/drawing_functions.html#ellipse%s', None),
'rectangle': ('http://opencv.itseez.com/modules/core/doc/drawing_functions.html#rectangle%s', None),
'circle': ('http://opencv.itseez.com/modules/core/doc/drawing_functions.html#circle%s', None),
'fill_poly': ('http://opencv.itseez.com/modules/core/doc/drawing_functions.html#fillpoly%s', None),
'rng': ('http://opencv.itseez.com/modules/core/doc/operations_on_arrays.html?highlight=rng#rng%s', None),
'put_text': ('http://opencv.itseez.com/modules/core/doc/drawing_functions.html#puttext%s', None),
'gaussian_blur': ('http://opencv.itseez.com/modules/imgproc/doc/filtering.html?highlight=gaussianblur#gaussianblur%s', None),
'blur': ('http://opencv.itseez.com/modules/imgproc/doc/filtering.html?highlight=blur#blur%s', None),
'median_blur': ('http://opencv.itseez.com/modules/imgproc/doc/filtering.html?highlight=medianblur#medianblur%s', None),
'bilateral_filter': ('http://opencv.itseez.com/modules/imgproc/doc/filtering.html?highlight=bilateralfilter#bilateralfilter%s', None),
'erode': ('http://opencv.itseez.com/modules/imgproc/doc/filtering.html?highlight=erode#erode%s', None),
'dilate': ('http://opencv.itseez.com/modules/imgproc/doc/filtering.html?highlight=dilate#dilate%s', None),
'get_structuring_element': ('http://opencv.itseez.com/modules/imgproc/doc/filtering.html?highlight=getstructuringelement#getstructuringelement%s', None),
'flood_fill': ( 'http://opencv.itseez.com/modules/imgproc/doc/miscellaneous_transformations.html?highlight=floodfill#floodfill%s', None),
'morphology_ex': ('http://opencv.itseez.com/modules/imgproc/doc/filtering.html?highlight=morphologyex#morphologyex%s', None),
'pyr_down': ('http://opencv.itseez.com/modules/imgproc/doc/filtering.html?highlight=pyrdown#pyrdown%s', None),
'pyr_up': ('http://opencv.itseez.com/modules/imgproc/doc/filtering.html?highlight=pyrup#pyrup%s', None),
'resize': ('http://opencv.itseez.com/modules/imgproc/doc/geometric_transformations.html?highlight=resize#resize%s', None),
'threshold': ('http://opencv.itseez.com/modules/imgproc/doc/miscellaneous_transformations.html?highlight=threshold#threshold%s', None),
'filter2d': ('http://opencv.itseez.com/modules/imgproc/doc/filtering.html?highlight=filter2d#filter2d%s', None),
'copy_make_border': ('http://opencv.itseez.com/modules/imgproc/doc/filtering.html?highlight=copymakeborder#copymakeborder%s', None),
'sobel': ('http://opencv.itseez.com/modules/imgproc/doc/filtering.html?highlight=sobel#sobel%s', None),
'scharr': ('http://opencv.itseez.com/modules/imgproc/doc/filtering.html?highlight=scharr#scharr%s', None),
'laplacian': ('http://opencv.itseez.com/modules/imgproc/doc/filtering.html?highlight=laplacian#laplacian%s', None),
'canny': ('http://opencv.itseez.com/modules/imgproc/doc/feature_detection.html?highlight=canny#canny%s', None),
'copy_to': ('http://opencv.itseez.com/modules/core/doc/basic_structures.html?highlight=copyto#mat-copyto%s', None),
'hough_lines' : ('http://opencv.itseez.com/modules/imgproc/doc/feature_detection.html?highlight=houghlines#houghlines%s', None),
'hough_lines_p' : ('http://opencv.itseez.com/modules/imgproc/doc/feature_detection.html?highlight=houghlinesp#houghlinesp%s', None),
'hough_circles' : ('http://opencv.itseez.com/modules/imgproc/doc/feature_detection.html?highlight=houghcircles#houghcircles%s', None),
'remap' : ('http://opencv.itseez.com/modules/imgproc/doc/geometric_transformations.html?highlight=remap#remap%s', None),
'warp_affine' : ('http://opencv.itseez.com/modules/imgproc/doc/geometric_transformations.html?highlight=warpaffine#warpaffine%s' , None),
'get_rotation_matrix_2d' : ('http://opencv.itseez.com/modules/imgproc/doc/geometric_transformations.html?highlight=getrotationmatrix2d#getrotationmatrix2d%s', None),
'get_affine_transform' : ('http://opencv.itseez.com/modules/imgproc/doc/geometric_transformations.html?highlight=getaffinetransform#getaffinetransform%s', None),
'equalize_hist' : ('http://opencv.itseez.com/modules/imgproc/doc/histograms.html?highlight=equalizehist#equalizehist%s', None),
'split' : ('http://opencv.itseez.com/modules/core/doc/operations_on_arrays.html?highlight=split#split%s', None),
'calc_hist' : ('http://opencv.itseez.com/modules/imgproc/doc/histograms.html?highlight=calchist#calchist%s', None),
'normalize' : ('http://opencv.itseez.com/modules/core/doc/operations_on_arrays.html?highlight=normalize#normalize%s', None),
'match_template' : ('http://opencv.itseez.com/modules/imgproc/doc/object_detection.html?highlight=matchtemplate#matchtemplate%s', None),
'min_max_loc' : ('http://opencv.itseez.com/modules/core/doc/operations_on_arrays.html?highlight=minmaxloc#minmaxloc%s', None),
'mix_channels' : ( 'http://opencv.itseez.com/modules/core/doc/operations_on_arrays.html?highlight=mixchannels#mixchannels%s', None),
'calc_back_project' : ('http://opencv.itseez.com/modules/imgproc/doc/histograms.html?highlight=calcbackproject#calcbackproject%s', None),
'compare_hist' : ('http://opencv.itseez.com/modules/imgproc/doc/histograms.html?highlight=comparehist#comparehist%s', None),
'corner_harris' : ('http://opencv.itseez.com/modules/imgproc/doc/feature_detection.html?highlight=cornerharris#cornerharris%s', None),
'good_features_to_track' : ('http://opencv.itseez.com/modules/imgproc/doc/feature_detection.html?highlight=goodfeaturestotrack#goodfeaturestotrack%s', None),
'corner_min_eigenval' : ('http://opencv.itseez.com/modules/imgproc/doc/feature_detection.html?highlight=cornermineigenval#cornermineigenval%s', None),
'corner_eigenvals_and_vecs' : ('http://opencv.itseez.com/modules/imgproc/doc/feature_detection.html?highlight=cornereigenvalsandvecs#cornereigenvalsandvecs%s', None),
'corner_sub_pix' : ('http://opencv.itseez.com/modules/imgproc/doc/feature_detection.html?highlight=cornersubpix#cornersubpix%s', None),
'find_contours' : ('http://opencv.itseez.com/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html?highlight=findcontours#findcontours%s', None),
'convex_hull' : ('http://opencv.itseez.com/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html?highlight=convexhull#convexhull%s', None),
'draw_contours' : ('http://opencv.itseez.com/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html?highlight=drawcontours#drawcontours%s', None),
'bounding_rect' : ('http://opencv.itseez.com/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html?highlight=boundingrect#boundingrect%s', None),
'min_enclosing_circle' : ('http://opencv.itseez.com/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html?highlight=minenclosingcircle#minenclosingcircle%s', None),
'min_area_rect' : ('http://opencv.itseez.com/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html?highlight=minarearect#minarearect%s', None),
'fit_ellipse' : ('http://opencv.itseez.com/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html?highlight=fitellipse#fitellipse%s', None),
'moments' : ('http://opencv.itseez.com/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html?highlight=moments#moments%s', None),
'contour_area' : ('http://opencv.itseez.com/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html?highlight=contourarea#contourarea%s', None),
'arc_length' : ('http://opencv.itseez.com/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html?highlight=arclength#arclength%s', None),
'point_polygon_test' : ('http://opencv.itseez.com/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html?highlight=pointpolygontest#pointpolygontest%s', None),
'feature_detector' : ( 'http://opencv.itseez.com/modules/features2d/doc/common_interfaces_of_feature_detectors.html?highlight=featuredetector#FeatureDetector%s', None),
'feature_detector_detect' : ('http://opencv.itseez.com/modules/features2d/doc/common_interfaces_of_feature_detectors.html?highlight=detect#featuredetector-detect%s', None ),
'surf_feature_detector' : ('http://opencv.itseez.com/modules/features2d/doc/common_interfaces_of_feature_detectors.html?highlight=surffeaturedetector#surffeaturedetector%s', None ),
'draw_keypoints' : ('http://opencv.itseez.com/modules/features2d/doc/drawing_function_of_keypoints_and_matches.html?highlight=drawkeypoints#drawkeypoints%s', None ),
'descriptor_extractor': ( 'http://opencv.itseez.com/modules/features2d/doc/common_interfaces_of_descriptor_extractors.html?highlight=descriptorextractor#descriptorextractor%s', None ),
'descriptor_extractor_compute' : ( 'http://opencv.itseez.com/modules/features2d/doc/common_interfaces_of_descriptor_extractors.html?highlight=compute#descriptorextractor-compute%s', None ),
'surf_descriptor_extractor' : ( 'http://opencv.itseez.com/modules/features2d/doc/common_interfaces_of_descriptor_extractors.html?highlight=surfdescriptorextractor#surfdescriptorextractor%s', None ),
'draw_matches' : ( 'http://opencv.itseez.com/modules/features2d/doc/drawing_function_of_keypoints_and_matches.html?highlight=drawmatches#drawmatches%s', None ),
'find_homography' : ('http://opencv.itseez.com/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html?highlight=findhomography#findhomography%s', None),
'perspective_transform' : ('http://opencv.itseez.com/modules/core/doc/operations_on_arrays.html?highlight=perspectivetransform#perspectivetransform%s', None ),
'flann_based_matcher' : ('http://opencv.itseez.com/modules/features2d/doc/common_interfaces_of_descriptor_matchers.html?highlight=flannbasedmatcher#flannbasedmatcher%s', None),
'brute_force_matcher' : ('http://opencv.itseez.com/modules/features2d/doc/common_interfaces_of_descriptor_matchers.html?highlight=bruteforcematcher#bruteforcematcher%s', None ),
'cascade_classifier' : ('http://opencv.itseez.com/modules/objdetect/doc/cascade_classification.html?highlight=cascadeclassifier#cascadeclassifier%s', None ),
'cascade_classifier_load' : ('http://opencv.itseez.com/modules/objdetect/doc/cascade_classification.html?highlight=load#cascadeclassifier-load%s', None ),
'cascade_classifier_detect_multiscale' : ('http://opencv.itseez.com/modules/objdetect/doc/cascade_classification.html?highlight=detectmultiscale#cascadeclassifier-detectmultiscale%s', None )
'cvt_color': ('http://docs.opencv.org/modules/imgproc/doc/miscellaneous_transformations.html?highlight=cvtcolor#cvtcolor%s', None),
'imread': ('http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html?highlight=imread#imread%s', None),
'imwrite': ('http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html?highlight=imwrite#imwrite%s', None),
'imshow': ('http://docs.opencv.org/modules/highgui/doc/user_interface.html?highlight=imshow#imshow%s', None),
'named_window': ('http://docs.opencv.org/modules/highgui/doc/user_interface.html?highlight=namedwindow#namedwindow%s', None),
'wait_key': ('http://docs.opencv.org/modules/highgui/doc/user_interface.html?highlight=waitkey#waitkey%s', None),
'add_weighted': ('http://docs.opencv.org/modules/core/doc/operations_on_arrays.html?highlight=addweighted#addweighted%s', None),
'saturate_cast': ('http://docs.opencv.org/modules/core/doc/utility_and_system_functions_and_macros.html?highlight=saturate_cast#saturate-cast%s', None),
'mat_zeros': ('http://docs.opencv.org/modules/core/doc/basic_structures.html?highlight=zeros#mat-zeros%s', None),
'convert_to': ('http://docs.opencv.org/modules/core/doc/basic_structures.html#mat-convertto%s', None),
'create_trackbar': ('http://docs.opencv.org/modules/highgui/doc/user_interface.html?highlight=createtrackbar#createtrackbar%s', None),
'point': ('http://docs.opencv.org/modules/core/doc/basic_structures.html#point%s', None),
'scalar': ('http://docs.opencv.org/modules/core/doc/basic_structures.html#scalar%s', None),
'line': ('http://docs.opencv.org/modules/core/doc/drawing_functions.html#line%s', None),
'ellipse': ('http://docs.opencv.org/modules/core/doc/drawing_functions.html#ellipse%s', None),
'rectangle': ('http://docs.opencv.org/modules/core/doc/drawing_functions.html#rectangle%s', None),
'circle': ('http://docs.opencv.org/modules/core/doc/drawing_functions.html#circle%s', None),
'fill_poly': ('http://docs.opencv.org/modules/core/doc/drawing_functions.html#fillpoly%s', None),
'rng': ('http://docs.opencv.org/modules/core/doc/operations_on_arrays.html?highlight=rng#rng%s', None),
'put_text': ('http://docs.opencv.org/modules/core/doc/drawing_functions.html#puttext%s', None),
'gaussian_blur': ('http://docs.opencv.org/modules/imgproc/doc/filtering.html?highlight=gaussianblur#gaussianblur%s', None),
'blur': ('http://docs.opencv.org/modules/imgproc/doc/filtering.html?highlight=blur#blur%s', None),
'median_blur': ('http://docs.opencv.org/modules/imgproc/doc/filtering.html?highlight=medianblur#medianblur%s', None),
'bilateral_filter': ('http://docs.opencv.org/modules/imgproc/doc/filtering.html?highlight=bilateralfilter#bilateralfilter%s', None),
'erode': ('http://docs.opencv.org/modules/imgproc/doc/filtering.html?highlight=erode#erode%s', None),
'dilate': ('http://docs.opencv.org/modules/imgproc/doc/filtering.html?highlight=dilate#dilate%s', None),
'get_structuring_element': ('http://docs.opencv.org/modules/imgproc/doc/filtering.html?highlight=getstructuringelement#getstructuringelement%s', None),
'flood_fill': ( 'http://docs.opencv.org/modules/imgproc/doc/miscellaneous_transformations.html?highlight=floodfill#floodfill%s', None),
'morphology_ex': ('http://docs.opencv.org/modules/imgproc/doc/filtering.html?highlight=morphologyex#morphologyex%s', None),
'pyr_down': ('http://docs.opencv.org/modules/imgproc/doc/filtering.html?highlight=pyrdown#pyrdown%s', None),
'pyr_up': ('http://docs.opencv.org/modules/imgproc/doc/filtering.html?highlight=pyrup#pyrup%s', None),
'resize': ('http://docs.opencv.org/modules/imgproc/doc/geometric_transformations.html?highlight=resize#resize%s', None),
'threshold': ('http://docs.opencv.org/modules/imgproc/doc/miscellaneous_transformations.html?highlight=threshold#threshold%s', None),
'filter2d': ('http://docs.opencv.org/modules/imgproc/doc/filtering.html?highlight=filter2d#filter2d%s', None),
'copy_make_border': ('http://docs.opencv.org/modules/imgproc/doc/filtering.html?highlight=copymakeborder#copymakeborder%s', None),
'sobel': ('http://docs.opencv.org/modules/imgproc/doc/filtering.html?highlight=sobel#sobel%s', None),
'scharr': ('http://docs.opencv.org/modules/imgproc/doc/filtering.html?highlight=scharr#scharr%s', None),
'laplacian': ('http://docs.opencv.org/modules/imgproc/doc/filtering.html?highlight=laplacian#laplacian%s', None),
'canny': ('http://docs.opencv.org/modules/imgproc/doc/feature_detection.html?highlight=canny#canny%s', None),
'copy_to': ('http://docs.opencv.org/modules/core/doc/basic_structures.html?highlight=copyto#mat-copyto%s', None),
'hough_lines' : ('http://docs.opencv.org/modules/imgproc/doc/feature_detection.html?highlight=houghlines#houghlines%s', None),
'hough_lines_p' : ('http://docs.opencv.org/modules/imgproc/doc/feature_detection.html?highlight=houghlinesp#houghlinesp%s', None),
'hough_circles' : ('http://docs.opencv.org/modules/imgproc/doc/feature_detection.html?highlight=houghcircles#houghcircles%s', None),
'remap' : ('http://docs.opencv.org/modules/imgproc/doc/geometric_transformations.html?highlight=remap#remap%s', None),
'warp_affine' : ('http://docs.opencv.org/modules/imgproc/doc/geometric_transformations.html?highlight=warpaffine#warpaffine%s' , None),
'get_rotation_matrix_2d' : ('http://docs.opencv.org/modules/imgproc/doc/geometric_transformations.html?highlight=getrotationmatrix2d#getrotationmatrix2d%s', None),
'get_affine_transform' : ('http://docs.opencv.org/modules/imgproc/doc/geometric_transformations.html?highlight=getaffinetransform#getaffinetransform%s', None),
'equalize_hist' : ('http://docs.opencv.org/modules/imgproc/doc/histograms.html?highlight=equalizehist#equalizehist%s', None),
'split' : ('http://docs.opencv.org/modules/core/doc/operations_on_arrays.html?highlight=split#split%s', None),
'calc_hist' : ('http://docs.opencv.org/modules/imgproc/doc/histograms.html?highlight=calchist#calchist%s', None),
'normalize' : ('http://docs.opencv.org/modules/core/doc/operations_on_arrays.html?highlight=normalize#normalize%s', None),
'match_template' : ('http://docs.opencv.org/modules/imgproc/doc/object_detection.html?highlight=matchtemplate#matchtemplate%s', None),
'min_max_loc' : ('http://docs.opencv.org/modules/core/doc/operations_on_arrays.html?highlight=minmaxloc#minmaxloc%s', None),
'mix_channels' : ( 'http://docs.opencv.org/modules/core/doc/operations_on_arrays.html?highlight=mixchannels#mixchannels%s', None),
'calc_back_project' : ('http://docs.opencv.org/modules/imgproc/doc/histograms.html?highlight=calcbackproject#calcbackproject%s', None),
'compare_hist' : ('http://docs.opencv.org/modules/imgproc/doc/histograms.html?highlight=comparehist#comparehist%s', None),
'corner_harris' : ('http://docs.opencv.org/modules/imgproc/doc/feature_detection.html?highlight=cornerharris#cornerharris%s', None),
'good_features_to_track' : ('http://docs.opencv.org/modules/imgproc/doc/feature_detection.html?highlight=goodfeaturestotrack#goodfeaturestotrack%s', None),
'corner_min_eigenval' : ('http://docs.opencv.org/modules/imgproc/doc/feature_detection.html?highlight=cornermineigenval#cornermineigenval%s', None),
'corner_eigenvals_and_vecs' : ('http://docs.opencv.org/modules/imgproc/doc/feature_detection.html?highlight=cornereigenvalsandvecs#cornereigenvalsandvecs%s', None),
'corner_sub_pix' : ('http://docs.opencv.org/modules/imgproc/doc/feature_detection.html?highlight=cornersubpix#cornersubpix%s', None),
'find_contours' : ('http://docs.opencv.org/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html?highlight=findcontours#findcontours%s', None),
'convex_hull' : ('http://docs.opencv.org/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html?highlight=convexhull#convexhull%s', None),
'draw_contours' : ('http://docs.opencv.org/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html?highlight=drawcontours#drawcontours%s', None),
'bounding_rect' : ('http://docs.opencv.org/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html?highlight=boundingrect#boundingrect%s', None),
'min_enclosing_circle' : ('http://docs.opencv.org/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html?highlight=minenclosingcircle#minenclosingcircle%s', None),
'min_area_rect' : ('http://docs.opencv.org/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html?highlight=minarearect#minarearect%s', None),
'fit_ellipse' : ('http://docs.opencv.org/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html?highlight=fitellipse#fitellipse%s', None),
'moments' : ('http://docs.opencv.org/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html?highlight=moments#moments%s', None),
'contour_area' : ('http://docs.opencv.org/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html?highlight=contourarea#contourarea%s', None),
'arc_length' : ('http://docs.opencv.org/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html?highlight=arclength#arclength%s', None),
'point_polygon_test' : ('http://docs.opencv.org/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html?highlight=pointpolygontest#pointpolygontest%s', None),
'feature_detector' : ( 'http://docs.opencv.org/modules/features2d/doc/common_interfaces_of_feature_detectors.html?highlight=featuredetector#FeatureDetector%s', None),
'feature_detector_detect' : ('http://docs.opencv.org/modules/features2d/doc/common_interfaces_of_feature_detectors.html?highlight=detect#featuredetector-detect%s', None ),
'surf_feature_detector' : ('http://docs.opencv.org/modules/features2d/doc/common_interfaces_of_feature_detectors.html?highlight=surffeaturedetector#surffeaturedetector%s', None ),
'draw_keypoints' : ('http://docs.opencv.org/modules/features2d/doc/drawing_function_of_keypoints_and_matches.html?highlight=drawkeypoints#drawkeypoints%s', None ),
'descriptor_extractor': ( 'http://docs.opencv.org/modules/features2d/doc/common_interfaces_of_descriptor_extractors.html?highlight=descriptorextractor#descriptorextractor%s', None ),
'descriptor_extractor_compute' : ( 'http://docs.opencv.org/modules/features2d/doc/common_interfaces_of_descriptor_extractors.html?highlight=compute#descriptorextractor-compute%s', None ),
'surf_descriptor_extractor' : ( 'http://docs.opencv.org/modules/features2d/doc/common_interfaces_of_descriptor_extractors.html?highlight=surfdescriptorextractor#surfdescriptorextractor%s', None ),
'draw_matches' : ( 'http://docs.opencv.org/modules/features2d/doc/drawing_function_of_keypoints_and_matches.html?highlight=drawmatches#drawmatches%s', None ),
'find_homography' : ('http://docs.opencv.org/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html?highlight=findhomography#findhomography%s', None),
'perspective_transform' : ('http://docs.opencv.org/modules/core/doc/operations_on_arrays.html?highlight=perspectivetransform#perspectivetransform%s', None ),
'flann_based_matcher' : ('http://docs.opencv.org/modules/features2d/doc/common_interfaces_of_descriptor_matchers.html?highlight=flannbasedmatcher#flannbasedmatcher%s', None),
'brute_force_matcher' : ('http://docs.opencv.org/modules/features2d/doc/common_interfaces_of_descriptor_matchers.html?highlight=bruteforcematcher#bruteforcematcher%s', None ),
'cascade_classifier' : ('http://docs.opencv.org/modules/objdetect/doc/cascade_classification.html?highlight=cascadeclassifier#cascadeclassifier%s', None ),
'cascade_classifier_load' : ('http://docs.opencv.org/modules/objdetect/doc/cascade_classification.html?highlight=load#cascadeclassifier-load%s', None ),
'cascade_classifier_detect_multiscale' : ('http://docs.opencv.org/modules/objdetect/doc/cascade_classification.html?highlight=detectmultiscale#cascadeclassifier-detectmultiscale%s', None )
}
+1 -1
Ver Arquivo
@@ -1,4 +1,4 @@
#/usr/bin/env python
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
ocv domain, a modified copy of sphinx.domains.cpp + shpinx.domains.python.
+1 -1
Ver Arquivo
@@ -1,4 +1,4 @@
#/usr/bin/env python
#!/usr/bin/env python
import sys
+1 -1
Ver Arquivo
@@ -1,4 +1,4 @@
#/usr/bin/env python
#!/usr/bin/env python
"""gen_pattern.py
To run:
+1 -1
Ver Arquivo
@@ -1,4 +1,4 @@
#/usr/bin/env python
#!/usr/bin/env python
# svgfig.py copyright (C) 2008 Jim Pivarski <jpivarski@gmail.com>
#
+1 -1
Ver Arquivo
@@ -1,4 +1,4 @@
#/usr/bin/env python
#!/usr/bin/env python
import os, sys, re
@@ -12,8 +12,8 @@ For the distortion OpenCV takes into account the radial and tangential factors.
.. math::
x_{corrected} = x( 1 + k_1 r^2 + k_2 r^4 + k^3 r^6) \\
y_{corrected} = y( 1 + k_1 r^2 + k_2 r^4 + k^3 r^6)
x_{corrected} = x( 1 + k_1 r^2 + k_2 r^4 + k_3 r^6) \\
y_{corrected} = y( 1 + k_1 r^2 + k_2 r^4 + k_3 r^6)
So for an old pixel point at :math:`(x,y)` coordinate in the input image, for a corrected output image its position will be :math:`(x_{corrected} y_{corrected})` . The presence of the radial distortion manifests in form of the "barrel" or "fish-eye" effect.
+1 -1
Ver Arquivo
@@ -1,3 +1,3 @@
.. note::
Unfortunetly we have no tutorials into this section. Nevertheless, our tutorial writting team is working on it. If you have a tutorial suggestion or you have writen yourself a tutorial (or coded a sample code) that you would like to see here please contact us via our :opencv_group:`user group <>`.
Unfortunetly we have no tutorials into this section. And you can help us with that, since OpenCV is a community effort. If you have a tutorial suggestion or you have written a tutorial yourself (or coded a sample code) that you would like to see here, please contact follow these instructions: :ref:`howToWriteTutorial` and :how_to_contribute:`How to contribute <>`.
@@ -85,7 +85,7 @@ This tutorial code's is shown lines below. You can also download it from `here <
std::vector< DMatch > good_matches;
for( int i = 0; i < descriptors_1.rows; i++ )
{ if( matches[i].distance < 2*min_dist )
{ if( matches[i].distance <= 2*min_dist )
{ good_matches.push_back( matches[i]); }
}
@@ -127,6 +127,3 @@ Result
.. image:: images/Feature_FlannMatcher_Keypoints_Result.jpg
:align: center
:height: 250pt
@@ -62,7 +62,7 @@ The GPU has its own memory. When you read data from the hard drive with OpenCV i
I1 = gI1; // Download, gI1.download(I1) will work too
Once you have your data up in the GPU memory you may call GPU enabled functions of OpenCV. Most of the functions keep the same name just as on the CPU, with the difference that they only accept *GpuMat* inputs. A full list of these you will find in the documentation: `online here <http://opencv.itseez.com/modules/gpu/doc/gpu.html>`_ or the OpenCV reference manual that comes with the source code.
Once you have your data up in the GPU memory you may call GPU enabled functions of OpenCV. Most of the functions keep the same name just as on the CPU, with the difference that they only accept *GpuMat* inputs. A full list of these you will find in the documentation: `online here <http://docs.opencv.org/modules/gpu/doc/gpu.html>`_ or the OpenCV reference manual that comes with the source code.
Another thing to keep in mind is that not for all channel numbers you can make efficient algorithms on the GPU. Generally, I found that the input images for the GPU images need to be either one or four channel ones and one of the char or float type for the item sizes. No double support on the GPU, sorry. Passing other types of objects for some functions will result in an exception thrown, and an error message on the error output. The documentation details in most of the places the types accepted for the inputs. If you have three channel images as an input you can do two things: either adds a new channel (and use char elements) or split up the image and call the function for each image. The first one isn't really recommended as you waste memory.
@@ -48,10 +48,10 @@ The structure of package contents looks as follows:
::
OpenCV-2.4.5-android-sdk
OpenCV-2.4.6-android-sdk
|_ apk
| |_ OpenCV_2.4.5_binary_pack_armv7a.apk
| |_ OpenCV_2.4.5_Manager_2.7_XXX.apk
| |_ OpenCV_2.4.6_binary_pack_armv7a.apk
| |_ OpenCV_2.4.6_Manager_2.9_XXX.apk
|
|_ doc
|_ samples
@@ -98,7 +98,7 @@ The structure of package contents looks as follows:
* :file:`doc` folder contains various OpenCV documentation in PDF format.
It's also available online at http://docs.opencv.org.
.. note:: The most recent docs (nightly build) are at http://docs.opencv.org/trunk/.
.. note:: The most recent docs (nightly build) are at http://docs.opencv.org/2.4.
Generally, it's more up-to-date, but can refer to not-yet-released functionality.
.. TODO: I'm not sure that this is the best place to talk about OpenCV Manager
@@ -157,10 +157,10 @@ Get the OpenCV4Android SDK
.. code-block:: bash
unzip ~/Downloads/OpenCV-2.4.5-android-sdk.zip
unzip ~/Downloads/OpenCV-2.4.6-android-sdk.zip
.. |opencv_android_bin_pack| replace:: :file:`OpenCV-2.4.5-android-sdk.zip`
.. _opencv_android_bin_pack_url: http://sourceforge.net/projects/opencvlibrary/files/opencv-android/2.4.5/OpenCV-2.4.5-android-sdk.zip/download
.. |opencv_android_bin_pack| replace:: :file:`OpenCV-2.4.6-android-sdk.zip`
.. _opencv_android_bin_pack_url: http://sourceforge.net/projects/opencvlibrary/files/opencv-android/2.4.6/OpenCV-2.4.6-android-sdk.zip/download
.. |opencv_android_bin_pack_url| replace:: |opencv_android_bin_pack|
.. |seven_zip| replace:: 7-Zip
.. _seven_zip: http://www.7-zip.org/
@@ -295,7 +295,7 @@ Well, running samples from Eclipse is very simple:
.. code-block:: sh
:linenos:
<Android SDK path>/platform-tools/adb install <OpenCV4Android SDK path>/apk/OpenCV_2.4.5_Manager_2.7_armv7a-neon.apk
<Android SDK path>/platform-tools/adb install <OpenCV4Android SDK path>/apk/OpenCV_2.4.6_Manager_2.9_armv7a-neon.apk
.. note:: ``armeabi``, ``armv7a-neon``, ``arm7a-neon-android8``, ``mips`` and ``x86`` stand for
platform targets:
@@ -55,14 +55,14 @@ Manager to access OpenCV libraries externally installed in the target system.
:guilabel:`File -> Import -> Existing project in your workspace`.
Press :guilabel:`Browse` button and locate OpenCV4Android SDK
(:file:`OpenCV-2.4.5-android-sdk/sdk`).
(:file:`OpenCV-2.4.6-android-sdk/sdk`).
.. image:: images/eclipse_opencv_dependency0.png
:alt: Add dependency from OpenCV library
:align: center
#. In application project add a reference to the OpenCV Java SDK in
:guilabel:`Project -> Properties -> Android -> Library -> Add` select ``OpenCV Library - 2.4.5``.
:guilabel:`Project -> Properties -> Android -> Library -> Add` select ``OpenCV Library - 2.4.6``.
.. image:: images/eclipse_opencv_dependency1.png
:alt: Add dependency from OpenCV library
@@ -101,7 +101,7 @@ See the "15-puzzle" OpenCV sample for details.
public void onResume()
{
super.onResume();
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_5, this, mLoaderCallback);
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_6, this, mLoaderCallback);
}
...
@@ -128,27 +128,27 @@ described above.
#. Add the OpenCV library project to your workspace the same way as for the async initialization
above. Use menu :guilabel:`File -> Import -> Existing project in your workspace`,
press :guilabel:`Browse` button and select OpenCV SDK path
(:file:`OpenCV-2.4.5-android-sdk/sdk`).
(:file:`OpenCV-2.4.6-android-sdk/sdk`).
.. image:: images/eclipse_opencv_dependency0.png
:alt: Add dependency from OpenCV library
:align: center
#. In the application project add a reference to the OpenCV4Android SDK in
:guilabel:`Project -> Properties -> Android -> Library -> Add` select ``OpenCV Library - 2.4.5``;
:guilabel:`Project -> Properties -> Android -> Library -> Add` select ``OpenCV Library - 2.4.6``;
.. image:: images/eclipse_opencv_dependency1.png
:alt: Add dependency from OpenCV library
:align: center
#. If your application project **doesn't have a JNI part**, just copy the corresponding OpenCV
native libs from :file:`<OpenCV-2.4.5-android-sdk>/sdk/native/libs/<target_arch>` to your
native libs from :file:`<OpenCV-2.4.6-android-sdk>/sdk/native/libs/<target_arch>` to your
project directory to folder :file:`libs/<target_arch>`.
In case of the application project **with a JNI part**, instead of manual libraries copying you
need to modify your ``Android.mk`` file:
add the following two code lines after the ``"include $(CLEAR_VARS)"`` and before
``"include path_to_OpenCV-2.4.5-android-sdk/sdk/native/jni/OpenCV.mk"``
``"include path_to_OpenCV-2.4.6-android-sdk/sdk/native/jni/OpenCV.mk"``
.. code-block:: make
:linenos:
@@ -221,7 +221,7 @@ taken:
.. code-block:: make
include C:\Work\OpenCV4Android\OpenCV-2.4.5-android-sdk\sdk\native\jni\OpenCV.mk
include C:\Work\OpenCV4Android\OpenCV-2.4.6-android-sdk\sdk\native\jni\OpenCV.mk
Should be inserted into the :file:`jni/Android.mk` file **after** this line:
@@ -379,7 +379,7 @@ result.
public void onResume()
{
super.onResume();
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mLoaderCallback);
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_6, this, mLoaderCallback);
}
#. Defines that your activity implements ``CvViewFrameListener2`` interface and fix activity related
@@ -1,9 +1,22 @@
.. _howToWriteTutorial:
How to write a tutorial for OpenCV?
***********************************
How to write a tutorial for OpenCV
**********************************
Okay, so assume you have just finished a project of yours implementing something based on OpenCV and you want to present/share it with the community. Luckily, OpenCV is an *open source project*. This means that in theory anyone has access to the full source code and may extend it. While making a robust and practical library (like OpenCV) is great, the success of a library also depends on how user friendly it is. To improve on this aspect, the OpenCV team has already been listening to user feedback from its :opencv_group:`Yahoo user group <>` and by making samples you can find in the source directories sample folder. The addition of the tutorials (in both online and PDF format) is an extension of these efforts.
Okay, so assume you have just finished a project of yours implementing something
based on OpenCV and you want to present/share it with the community. Luckily, OpenCV
is an *open source project*. This means that anyone has access to the full source
code and may propose extensions. And a good tutorial is a valuable addition to the
library! Please read instructions on contribution process here:
http://opencv.org/contribute.html. You may also find this page helpful:
:how_to_contribute:`How to contribute <>`.
While making a robust and practical library (like OpenCV) is great, the success of a
library also depends on how user friendly it is. To improve on this aspect, the
OpenCV team has already been listening to user feedback at :opencv_qa:`OpenCV Q&A
forum <>` and by making samples you can find in the source directories
:file:`samples` folder. The addition of the tutorials (in both online and PDF format)
is an extension of these efforts.
Goal
====
@@ -15,7 +28,17 @@ Goal
.. _Sphinx: http://sphinx.pocoo.org/
The tutorials are just as an important part of the library as the implementation of those crafty data structures and algorithms you can find in OpenCV. Therefore, the source codes for the tutorials are part of the library. And yes, I meant source codes. The reason for this formulation is that the tutorials are written by using the |Sphinx|_ documentation generation system. This is based on the popular python documentation system called |reST|_ (reST). ReStructuredText is a really neat language that by using a few simple conventions (indentation, directives) and emulating old school e-mail writing techniques (text only) tries to offer a simple way to create and edit documents. Sphinx extends this with some new features and creates the resulting document in both HTML (for web) and PDF (for offline usage) format.
The tutorials are just as an important part of the library as the implementation of
those crafty data structures and algorithms you can find in OpenCV. Therefore, the
source codes for the tutorials are part of the library. And yes, I meant source
codes. The reason for this formulation is that the tutorials are written by using the
|Sphinx|_ documentation generation system. This is based on the popular Python
documentation system called |reST|_ (reST). ReStructuredText is a really neat
language that by using a few simple conventions (indentation, directives) and
emulating old school email writing techniques (text only) tries to offer a simple
way to create and edit documents. Sphinx extends this with some new features and
creates the resulting document in both HTML (for web) and PDF (for offline usage)
format.
Usually, an OpenCV tutorial has the following parts:
@@ -36,14 +59,17 @@ Usually, an OpenCV tutorial has the following parts:
#. For more complex demonstrations you may create a video.
As you can see you will need at least some basic knowledge of the *reST* system in order to complete the task at hand with success. However, don't worry *reST* (and *Sphinx*) was made with simplicity in mind. It is easy to grasp its basics. I found that the `OpenAlea documentations introduction on this subject <http://openalea.gforge.inria.fr/doc/openalea/doc/_build/html/source/tutorial/rest_syntax.html>`_ (or the `Thomas Cokelaer one <http://thomas-cokelaer.info/tutorials/sphinx/rest_syntax.html>`_ ) should enough for this. If for some directive or feature you need a more in-depth description look it up in the official |reST|_ help files or at the |Sphinx|_ documentation.
In our world achieving some tasks is possible in multiple ways. However, some of the roads to take may have obvious or hidden advantages over others. Then again, in some other cases it may come down to just simple user preference. Here, I'll present how I decided to write the tutorials, based on my personal experience. If for some of them you know a better solution and you can back it up feel free to use that. I've nothing against it, as long as it gets the job done in an elegant fashion.
Now the best would be if you could make the integration yourself. For this you need first to have the source code. I recommend following the guides for your operating system on acquiring OpenCV sources. For Linux users look :ref:`here <Linux-Installation>` and for :ref:`Windows here <Windows_Installation>`. You must also install python and sphinx with its dependencies in order to be able to build the documentation.
Once you have downloaded the repository to your hard drive you can take a look in the OpenCV directory to make sure you have both the samples and doc folder present. Anyone may download the trunk source files from :file:`git://code.opencv.org/opencv.git` . Nevertheless, not everyone has upload (commit/submit) rights. This is to protect the integrity of the library. If you plan doing more than one tutorial, and would like to have an account with commit user rights you should first register an account at http://code.opencv.org/ and then contact dr. Gary Bradski at -delete-bradski@-delete-willowgarage.com. Otherwise, you can just send the resulting files to us via the :opencv_group:`Yahoo user group <>` or to me at -delete-bernat@-delete-primeranks.net and I'll add it. If you have questions, suggestions or constructive critics I will gladly listen to them. If you send it to the OpenCV group please tag its subject with a **[Tutorial]** entry.
Once you have downloaded the repository to your hard drive you can take a look in the OpenCV directory to make sure you have both the samples and doc folder present. Anyone may download the latest source files from :file:`git://github.com/Itseez/opencv.git` . Nevertheless, not everyone has upload (commit/submit) rights. This is to protect the integrity of the library. If you plan doing more than one tutorial, and would like to have an account with commit user rights you should first register an account at http://code.opencv.org/ and then contact OpenCV administrator -delete-admin@-delete-opencv.org. Otherwise, you can just send the resulting files to us at -delete-admin@-delete-opencv.org and we'll add it.
Format the Source Code
======================
Before I start this let it be clear: the main goal is to have a working sample code. However, for your tutorial to be of a top notch quality you should follow a few guide lines I am going to present here. In case you have an application by using the older interface (with *IplImage*, *CVMat*, *cvLoadImage* and such) consider migrating it to the new C++ interface. The tutorials are intended to be an up to date help for our users. And as of OpenCV 2 the OpenCV emphasis on using the less error prone and clearer C++ interface. Therefore, if possible please convert your code to the C++ interface. For this it may help to read the :ref:`InteroperabilityWithOpenCV1` tutorial. However, once you have an OpenCV 2 working code, then you should make your source code snippet as easy to read as possible. Here're a couple of advices for this:
Before I start this let it be clear: the main goal is to have a working sample code. However, for your tutorial to be of a top notch quality you should follow a few guide lines I am going to present here. In case you have an application by using the older interface (with *IplImage*, *cvMat*, *cvLoadImage* and such) consider migrating it to the new C++ interface. The tutorials are intended to be an up to date help for our users. And as of OpenCV 2 the OpenCV emphasis on using the less error prone and clearer C++ interface. Therefore, if possible please convert your code to the C++ interface. For this it may help to read the :ref:`InteroperabilityWithOpenCV1` tutorial. However, once you have an OpenCV 2 working code, then you should make your source code snippet as easy to read as possible. Here're a couple of advices for this:
.. container:: enumeratevisibleitemswithsquare
@@ -102,6 +128,7 @@ Navigate to the :file:`opencv/doc/tutorials/section/table_of_content_section` fo
\pagebreak
The first line is a reference to the section title in the reST system. The section title will be a link and you may refer to it via the ``:ref:`` directive. The *include* directive imports the template text from the definitions directories *noContent.rst* file. *Sphinx* does not creates the PDF from scratch. It does this by first creating a latex file. Then creates the PDF from the latex file. With the *raw* directive you can directly add to this output commands. Its unique argument is for what kind of output to add the content of the directive. For the PDFs it may happen that multiple sections will overlap on a single page. To avoid this at the end of the TOC we add a *pagebreak* latex command, that hints to the LATEX system that the next line should be on a new page.
If you have one of this, try to transform it to the following form:
.. include:: ../../definitions/tocDefinitions.rst
@@ -157,6 +184,7 @@ Until the *raw* directive what you can see is a TOC tree entry. Here's how a TOC
:width: 90pt
As you can see we have an image to the left and a description box to the right. To create two boxes we use a table with two columns and a single row. In the left column is the image and in the right one the description. However, the image directive is way too long to fit in a column. Therefore, we need to use the substitution definition system. We add this definition after the TOC tree. All images for the TOC tree are to be put in the images folder near its |reST|_ file. We use the point measurement system because we are also creating PDFs. PDFs are printable documents, where there is no such thing that pixels (px), just points (pt). And while generally space is no problem for web pages (we have monitors with **huge** resolutions) the size of the paper (A4 or letter) is constant and will be for a long time in the future. Therefore, size constrains come in play more like for the PDF, than the generated HTML code.
Now your images should be as small as possible, while still offering the intended information for the user. Remember that the tutorial will become part of the OpenCV source code. If you add large images (that manifest in form of large image size) it will just increase the size of the repository pointlessly. If someone wants to download it later, its download time will be that much longer. Not to mention the larger PDF size for the tutorials and the longer load time for the web pages. In terms of pixels a TOC image should not be larger than 120 X 120 pixels. Resize your images if they are larger!
.. note:: If you add a larger image and specify a smaller image size, *Sphinx* will not resize that. At build time will add the full size image and the resize will be done by your browser after the image is loaded. A 120 X 120 image is somewhere below 10KB. If you add a 110KB image, you have just pointlessly added a 100KB extra data to transfer over the internet for every user!
@@ -189,7 +217,9 @@ Now before each TOC entry you need to add the three lines of:
.. cssclass:: toctableopencv
The plus sign (+) is to enumerate tutorials by using bullet points. So for every TOC entry we have a corresponding bullet point represented by the +. Sphinx is highly indenting sensitive. Indentation is used to express from which point until to which point does a construction last. Un-indentation means end of that construction. So to keep all the bullet points to the same group the following TOC entries (until the next +) should be indented by two spaces.
Here, I should also mention that **always** prefer using spaces instead of tabs. Working with only spaces makes possible that if we both use monotype fonts we will see the same thing. Tab size is text editor dependent and as should be avoided. *Sphinx* translates all tabs into 8 spaces before interpreting it.
It turns out that the automatic formatting of both the HTML and PDF(LATEX) system messes up our tables. Therefore, we need to help them out a little. For the PDF generation we add the ``.. tabularcolumns:: m{100pt} m{300pt}`` directive. This means that the first column should be 100 points wide and middle aligned. For the HTML look we simply name the following table of a *toctableopencv* class type. Then, we can modify the look of the table by modifying the CSS of our web page. The CSS definitions go into the :file:`opencv/doc/_themes/blue/static/default.css_t` file.
.. code-block:: css
@@ -221,12 +251,14 @@ However, you should not need to modify this. Just add these three lines (plus ke
../mat - the basic image container/mat - the basic image container
The page break entry comes for separating sections and should be only one in a TOC tree |reST|_ file. Finally, at the end of the TOC tree we need to add our tutorial to the *Sphinx* TOC tree system. *Sphinx* will generate from this the previous-next-up information for the HTML file and add items to the PDF according to the order here. By default this TOC tree directive generates a simple table of contents. However, we already created a fancy looking one so we no longer need this basic one. Therefore, we add the *hidden* option to do not show it.
The path is of a relative type. We step back in the file system and then go into the :file:`mat - the basic image container` directory for the :file:`mat - the basic image container.rst` file. Putting out the *rst* extension for the file is optional.
Write the tutorial
==================
Create a folder with the name of your tutorial. Preferably, use small letters only. Then create a text file in this folder with *rst* extension and the same name. If you have images for the tutorial create an :file:`images` folder and add your images there. When creating your images follow the guidelines described in the previous part!
Now here's our recommendation for the structure of the tutorial (although, remember that this is not carved in the stone; if you have a better idea, use it!):
.. container:: enumeratevisibleitemswithsquare
@@ -278,13 +310,13 @@ Now here's our recommendation for the structure of the tutorial (although, remem
After the directive you specify a relative path to the file from what to import. It has four options: the language to use, if you add the ``:linenos:`` the line numbers will be shown, you can specify the tab size with the ``:tab-width:`` and you do not need to load the whole file, you can show just the important lines. Use the *lines* option to do not show redundant information (such as the *help* function). Here basically you specify ranges, if the second range line number is missing than that means that until the end of the file. The ranges specified here do no need to be in an ascending order, you may even reorganize the structure of how you want to show your sample inside the tutorial.
+ The tutorial. Well here goes the explanation for why and what have you used. Try to be short, clear, concise and yet a thorough one. There's no magic formula. Look into a few already made tutorials and start out from there. Try to mix sample OpenCV code with your explanations. If with words is hard to describe something do not hesitate to add in a reasonable size image, to overcome this issue.
When you present OpenCV functionality it's a good idea to give a link to the used OpenCV data structure or function. Because the OpenCV tutorials and reference manual are in separate PDF files it is not possible to make this link work for the PDF format. Therefore, we use here only web page links to the **opencv.itseez.com** website. The OpenCV functions and data structures may be used for multiple tasks. Nevertheless, we want to avoid that every users creates its own reference to a commonly used function. So for this we use the global link collection of *Sphinx*. This is defined in the file:`opencv/doc/conf.py` configuration file. Open it and go all the way down to the last entry:
When you present OpenCV functionality it's a good idea to give a link to the used OpenCV data structure or function. Because the OpenCV tutorials and reference manual are in separate PDF files it is not possible to make this link work for the PDF format. Therefore, we use here only web page links to the http://docs.opencv.org website. The OpenCV functions and data structures may be used for multiple tasks. Nevertheless, we want to avoid that every users creates its own reference to a commonly used function. So for this we use the global link collection of *Sphinx*. This is defined in the file:`opencv/doc/conf.py` configuration file. Open it and go all the way down to the last entry:
.. code-block:: py
# ---- External links for tutorials -----------------
extlinks = {
'hgvideo' : ('http://opencv.itseez.com/modules/highgui/doc/reading_and_writing_images_and_video.html#%s', None)
'hgvideo' : ('http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html#%s', None)
}
In short here we defined a new **hgvideo** directive that refers to an external webpage link. Its usage is:
@@ -293,7 +325,7 @@ Now here's our recommendation for the structure of the tutorial (although, remem
A sample function of the highgui modules image write and read page is the :hgvideo:`imread() function <imread>`.
Which turns to: A sample function of the highgui modules image write and read page is the :hgvideo:`imread() function <imread>`. The argument you give between the <> will be put in place of the ``%s`` in the upper definition, and as the link will anchor to the correct function. To find out the anchor of a given function just open up a web page, search for the function and click on it. In the address bar it should appear like: ``http://opencv.itseez.com/modules/highgui/doc/reading_and_writing_images_and_video.html#imread`` . Look here for the name of the directives for each page of the OpenCV reference manual. If none present for one of them feel free to add one for it.
Which turns to: A sample function of the highgui modules image write and read page is the :hgvideo:`imread() function <imread>`. The argument you give between the <> will be put in place of the ``%s`` in the upper definition, and as the link will anchor to the correct function. To find out the anchor of a given function just open up a web page, search for the function and click on it. In the address bar it should appear like: ``http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html#imread`` . Look here for the name of the directives for each page of the OpenCV reference manual. If none present for one of them feel free to add one for it.
For formulas you can add LATEX code that will translate in the web pages into images. You do this by using the *math* directive. A usage tip:
.. code-block:: latex
@@ -339,6 +371,17 @@ Now here's our recommendation for the structure of the tutorial (although, remem
Take home the pride and joy of a job well done!
===============================================
Once you are done contact me or dr. Gary Bradski with the tutorial. We may submit the tutorial ourselves to the trunk branch of our repository or ask you to do so.
Now, to see your work **live** you may need to wait some time. The PDFs are updated usually at the launch of a new OpenCV version. The web pages are a little more diverse. They are automatically rebuilt in each evening. However, the **opencv.itseez.com** website contains only the most recent **stable branch** of OpenCV. Currently this is 2.3. When we add something new (like a tutorial) that first goes to the **trunk branch** of our repository. A build of this you may find on the **opencv.itseez.com/trunk** website. Although, we try to make a build every night occasionally we might freeze any of the branches to fix upcoming issues. During this it may take a little longer to see your work *live*, however if you submited it, be sure that eventually it will show up.
If you have any questions or advices relating to this tutorial you can contact me at -delete-bernat@-delete-primeranks.net. Of course, delete the -delete- parts of that e-mail address.
Once you are done please make a GitHub pull request with the tutorial. Now, to see
your work **live** you may need to wait some time. The PDFs are updated usually at
the launch of a new OpenCV version. The web pages are a little more diverse. They are
automatically rebuilt nightly. Currently we use ``2.4`` and ``master`` branches for
daily builds. So, if your pull request was merged to any of these branches, your
material will be published at `docs.opencv.org/2.4 <http:/docs.opencv.org/2.4>`_ or
`docs.opencv.org/master <http:/docs.opencv.org/master>`_ correspondingly. Everything
that was added to ``2.4`` is merged to ``master`` branch every week. Although, we try
to make a build every night, occasionally we might freeze any of the branches to fix
upcoming issues. During this it may take a little longer to see your work online,
however if you submitted it, be sure that eventually it will show up.
If you have any questions or advices relating to this tutorial you can contact us at
-delete-admin@-delete-opencv.org (delete the -delete- parts of that email address).
@@ -37,7 +37,7 @@ Building OpenCV from Source, using CMake and Command Line
.. code-block:: bash
cd ~/<my_working_directory>
python opencv/ios/build_framework.py ios
python opencv/platforms/ios/build_framework.py ios
If everything's fine, a few minutes later you will get ~/<my_working_directory>/ios/opencv2.framework. You can add this framework to your Xcode projects.
@@ -292,7 +292,7 @@ Building the library
This will create an *Install* directory inside the *Build* one collecting all the built binaries into a single place. Use this only after you built both the *Release* and *Debug* versions.
To test your build just go into the :file:`Build/bin/Debug` or :file:`Build/bin/Release` directory and start a couple of applications like the *contours.exe*. If they run, you are done. Otherwise, something definitely went awfully wrong. In this case you should contact us via our :opencv_group:`user group <>`.
To test your build just go into the :file:`Build/bin/Debug` or :file:`Build/bin/Release` directory and start a couple of applications like the *contours.exe*. If they run, you are done. Otherwise, something definitely went awfully wrong. In this case you should contact us at our :opencv_qa:`Q&A forum <>`.
If everything is okay the *contours.exe* output should resemble the following image (if built with Qt support):
.. image:: images/WindowsQtContoursOutput.png
@@ -86,7 +86,7 @@ The names of the libraries are as follow:
opencv_(The Name of the module)(The version Number of the library you use)d.lib
A full list, for the currently latest trunk version would contain:
A full list, for the latest version would contain:
.. code-block:: bash
@@ -129,7 +129,7 @@ Explanation
3. **Train the SVM**
We call the method `CvSVM::train <http://opencv.itseez.com/modules/ml/doc/support_vector_machines.html#cvsvm-train>`_ to build the SVM model.
We call the method `CvSVM::train <http://docs.opencv.org/modules/ml/doc/support_vector_machines.html#cvsvm-train>`_ to build the SVM model.
.. code-block:: cpp
+1 -1
Ver Arquivo
@@ -10,7 +10,7 @@ Welcome to opencv documentation!
:maxdepth: 2
modules/refman.rst
android/refman.rst
platforms/android/refman.rst
doc/user_guide/user_guide.rst
doc/tutorials/tutorials.rst
-1
Ver Arquivo
@@ -1 +0,0 @@
cmake -GXcode -DCMAKE_TOOLCHAIN_FILE=../opencv/ios/cmake/Toolchains/Toolchain-iPhoneOS_Xcode.cmake -DCMAKE_INSTALL_PREFIX=../OpenCV_iPhoneOS ../opencv
-1
Ver Arquivo
@@ -1 +0,0 @@
cmake -GXcode -DCMAKE_TOOLCHAIN_FILE=../opencv/ios/cmake/Toolchains/Toolchain-iPhoneSimulator_Xcode.cmake -DCMAKE_INSTALL_PREFIX=../OpenCV_iPhoneSimulator ../opencv
-15
Ver Arquivo
@@ -1,15 +0,0 @@
Assuming that your build directory is on the same level that opencv source,
From the build directory run
../opencv/ios/configure-device_xcode.sh
or
../opencv/ios/configure-simulator_xcode.sh
Then from the same folder invoke
xcodebuild -sdk iphoneos -configuration Release -target ALL_BUILD
xcodebuild -sdk iphoneos -configuration Release -target install install
or
xcodebuild -sdk iphonesimulator -configuration Release -target ALL_BUILD
xcodebuild -sdk iphonesimulator -configuration Release -target install install
+1 -1
Ver Arquivo
@@ -2,4 +2,4 @@ if(NOT OPENCV_MODULES_PATH)
set(OPENCV_MODULES_PATH "${CMAKE_CURRENT_SOURCE_DIR}")
endif()
ocv_glob_modules(${OPENCV_MODULES_PATH})
ocv_glob_modules(${OPENCV_MODULES_PATH} ${OPENCV_EXTRA_MODULES_PATH})
+1 -1
Ver Arquivo
@@ -6,7 +6,7 @@ set(the_description "Auxiliary module for Android native camera support")
set(OPENCV_MODULE_TYPE STATIC)
ocv_define_module(androidcamera INTERNAL opencv_core log dl)
ocv_include_directories("${CMAKE_CURRENT_SOURCE_DIR}/camera_wrapper" "${OpenCV_SOURCE_DIR}/android/service/engine/jni/include")
ocv_include_directories("${CMAKE_CURRENT_SOURCE_DIR}/camera_wrapper" "${OpenCV_SOURCE_DIR}/platforms/android/service/engine/jni/include")
# Android source tree for native camera
SET (ANDROID_SOURCE_TREE "ANDROID_SOURCE_TREE-NOTFOUND" CACHE PATH
@@ -1,5 +1,8 @@
#if !defined(ANDROID_r2_2_0) && !defined(ANDROID_r2_3_3) && !defined(ANDROID_r3_0_1) && !defined(ANDROID_r4_0_0) && !defined(ANDROID_r4_0_3) && !defined(ANDROID_r4_1_1) && !defined(ANDROID_r4_2_0)
# error Building camera wrapper for your version of Android is not supported by OpenCV. You need to modify OpenCV sources in order to compile camera wrapper for your version of Android.
#if !defined(ANDROID_r2_2_0) && !defined(ANDROID_r2_3_3) && !defined(ANDROID_r3_0_1) && \
!defined(ANDROID_r4_0_0) && !defined(ANDROID_r4_0_3) && !defined(ANDROID_r4_1_1) && \
!defined(ANDROID_r4_2_0) && !defined(ANDROID_r4_3_0)
# error Building camera wrapper for your version of Android is not supported by OpenCV.\
You need to modify OpenCV sources in order to compile camera wrapper for your version of Android.
#endif
#include <camera/Camera.h>
@@ -16,17 +19,18 @@
//Include SurfaceTexture.h file with the SurfaceTexture class
# include <gui/SurfaceTexture.h>
# define MAGIC_OPENCV_TEXTURE_ID (0x10)
#else // defined(ANDROID_r3_0_1) || defined(ANDROID_r4_0_0) || defined(ANDROID_r4_0_3)
//TODO: This is either 2.2 or 2.3. Include the headers for ISurface.h access
#if defined(ANDROID_r4_1_1) || defined(ANDROID_r4_2_0)
#include <gui/ISurface.h>
#include <gui/BufferQueue.h>
#elif defined(ANDROID_r4_1_1) || defined(ANDROID_r4_2_0)
# include <gui/ISurface.h>
# include <gui/BufferQueue.h>
#elif defined(ANDROID_r4_3_0)
# include <gui/IGraphicBufferProducer.h>
# include <gui/BufferQueue.h>
#else
# include <surfaceflinger/ISurface.h>
#endif // defined(ANDROID_r4_1_1)
#endif // defined(ANDROID_r3_0_1) || defined(ANDROID_r4_0_0) || defined(ANDROID_r4_0_3)
#endif
#include <string>
#include <fstream>
//undef logging macro from /system/core/libcutils/loghack.h
#ifdef LOGD
@@ -45,7 +49,6 @@
# undef LOGE
#endif
// LOGGING
#include <android/log.h>
#define CAMERA_LOG_TAG "OpenCV_NativeCamera"
@@ -60,7 +63,7 @@ using namespace android;
void debugShowFPS();
#if defined(ANDROID_r4_1_1) || defined(ANDROID_r4_2_0)
#if defined(ANDROID_r4_1_1) || defined(ANDROID_r4_2_0) || defined(ANDROID_r4_3_0)
class ConsumerListenerStub: public BufferQueue::ConsumerListener
{
public:
@@ -73,6 +76,29 @@ public:
};
#endif
std::string getProcessName()
{
std::string result;
std::ifstream f;
f.open("/proc/self/cmdline");
if (f.is_open())
{
std::string fullPath;
std::getline(f, fullPath, '\0');
if (!fullPath.empty())
{
int i = fullPath.size()-1;
while ((i >= 0) && (fullPath[i] != '/')) i--;
result = fullPath.substr(i+1, std::string::npos);
}
}
f.close();
return result;
}
void debugShowFPS()
{
static int mFrameCount = 0;
@@ -280,7 +306,7 @@ public:
}
virtual void postData(int32_t msgType, const sp<IMemory>& dataPtr
#if defined(ANDROID_r4_0_0) || defined(ANDROID_r4_0_3) || defined(ANDROID_r4_1_1) || defined(ANDROID_r4_2_0)
#if defined(ANDROID_r4_0_0) || defined(ANDROID_r4_0_3) || defined(ANDROID_r4_1_1) || defined(ANDROID_r4_2_0) || defined(ANDROID_r4_3_0)
,camera_frame_metadata_t*
#endif
)
@@ -361,6 +387,11 @@ CameraHandler* CameraHandler::initCameraConnect(const CameraCallback& callback,
typedef sp<Camera> (*Android22ConnectFuncType)();
typedef sp<Camera> (*Android23ConnectFuncType)(int);
typedef sp<Camera> (*Android3DConnectFuncType)(int, int);
typedef sp<Camera> (*Android43ConnectFuncType)(int, const String16&, int);
const int ANY_CAMERA_INDEX = -1;
const int BACK_CAMERA_INDEX = 99;
const int FRONT_CAMERA_INDEX = 98;
enum {
CAMERA_SUPPORT_MODE_2D = 0x01, /* Camera Sensor supports 2D mode. */
@@ -369,11 +400,65 @@ CameraHandler* CameraHandler::initCameraConnect(const CameraCallback& callback,
CAMERA_SUPPORT_MODE_ZSL = 0x08 /* Camera Sensor supports ZSL mode. */
};
// used for Android 4.3
enum {
USE_CALLING_UID = -1
};
const char Android22ConnectName[] = "_ZN7android6Camera7connectEv";
const char Android23ConnectName[] = "_ZN7android6Camera7connectEi";
const char Android3DConnectName[] = "_ZN7android6Camera7connectEii";
const char Android43ConnectName[] = "_ZN7android6Camera7connectEiRKNS_8String16Ei";
LOGD("CameraHandler::initCameraConnect(%p, %d, %p, %p)", callback, cameraId, userData, prevCameraParameters);
int localCameraIndex = cameraId;
if (cameraId == ANY_CAMERA_INDEX)
{
localCameraIndex = 0;
}
#if !defined(ANDROID_r2_2_0)
else if (cameraId == BACK_CAMERA_INDEX)
{
LOGD("Back camera selected");
for (int i = 0; i < Camera::getNumberOfCameras(); i++)
{
CameraInfo info;
Camera::getCameraInfo(i, &info);
if (info.facing == CAMERA_FACING_BACK)
{
localCameraIndex = i;
break;
}
}
}
else if (cameraId == FRONT_CAMERA_INDEX)
{
LOGD("Front camera selected");
for (int i = 0; i < Camera::getNumberOfCameras(); i++)
{
CameraInfo info;
Camera::getCameraInfo(i, &info);
if (info.facing == CAMERA_FACING_FRONT)
{
localCameraIndex = i;
break;
}
}
}
if (localCameraIndex == BACK_CAMERA_INDEX)
{
LOGE("Back camera not found!");
return NULL;
}
else if (localCameraIndex == FRONT_CAMERA_INDEX)
{
LOGE("Front camera not found!");
return NULL;
}
#endif
LOGD("CameraHandler::initCameraConnect(%p, %d, %p, %p)", callback, localCameraIndex, userData, prevCameraParameters);
sp<Camera> camera = 0;
@@ -381,8 +466,8 @@ CameraHandler* CameraHandler::initCameraConnect(const CameraCallback& callback,
if (!CameraHALHandle)
{
LOGE("Cannot link to \"libcamera_client.so\"");
return NULL;
LOGE("Cannot link to \"libcamera_client.so\"");
return NULL;
}
// reset errors
@@ -390,24 +475,30 @@ CameraHandler* CameraHandler::initCameraConnect(const CameraCallback& callback,
if (Android22ConnectFuncType Android22Connect = (Android22ConnectFuncType)dlsym(CameraHALHandle, Android22ConnectName))
{
LOGD("Connecting to CameraService v 2.2");
camera = Android22Connect();
LOGD("Connecting to CameraService v 2.2");
camera = Android22Connect();
}
else if (Android23ConnectFuncType Android23Connect = (Android23ConnectFuncType)dlsym(CameraHALHandle, Android23ConnectName))
{
LOGD("Connecting to CameraService v 2.3");
camera = Android23Connect(cameraId);
LOGD("Connecting to CameraService v 2.3");
camera = Android23Connect(localCameraIndex);
}
else if (Android3DConnectFuncType Android3DConnect = (Android3DConnectFuncType)dlsym(CameraHALHandle, Android3DConnectName))
{
LOGD("Connecting to CameraService v 3D");
camera = Android3DConnect(cameraId, CAMERA_SUPPORT_MODE_2D);
LOGD("Connecting to CameraService v 3D");
camera = Android3DConnect(localCameraIndex, CAMERA_SUPPORT_MODE_2D);
}
else if (Android43ConnectFuncType Android43Connect = (Android43ConnectFuncType)dlsym(CameraHALHandle, Android43ConnectName))
{
std::string currentProcName = getProcessName();
LOGD("Current process name for camera init: %s", currentProcName.c_str());
camera = Android43Connect(localCameraIndex, String16(currentProcName.c_str()), USE_CALLING_UID);
}
else
{
dlclose(CameraHALHandle);
LOGE("Cannot connect to CameraService. Connect method was not found!");
return NULL;
dlclose(CameraHALHandle);
LOGE("Cannot connect to CameraService. Connect method was not found!");
return NULL;
}
dlclose(CameraHALHandle);
@@ -422,9 +513,9 @@ CameraHandler* CameraHandler::initCameraConnect(const CameraCallback& callback,
camera->setListener(handler);
handler->camera = camera;
handler->cameraId = cameraId;
handler->cameraId = localCameraIndex;
if (prevCameraParameters != 0)
if (prevCameraParameters != NULL)
{
LOGI("initCameraConnect: Setting paramers from previous camera handler");
camera->setParameters(prevCameraParameters->flatten());
@@ -456,11 +547,11 @@ CameraHandler* CameraHandler::initCameraConnect(const CameraCallback& callback,
const char* available_focus_modes = handler->params.get(CameraParameters::KEY_SUPPORTED_FOCUS_MODES);
if (available_focus_modes != 0)
{
if (strstr(available_focus_modes, "continuous-video") != NULL)
{
handler->params.set(CameraParameters::KEY_FOCUS_MODE, CameraParameters::FOCUS_MODE_CONTINUOUS_VIDEO);
if (strstr(available_focus_modes, "continuous-video") != NULL)
{
handler->params.set(CameraParameters::KEY_FOCUS_MODE, CameraParameters::FOCUS_MODE_CONTINUOUS_VIDEO);
status_t resParams = handler->camera->setParameters(handler->params.flatten());
status_t resParams = handler->camera->setParameters(handler->params.flatten());
if (resParams != 0)
{
@@ -470,8 +561,8 @@ CameraHandler* CameraHandler::initCameraConnect(const CameraCallback& callback,
{
LOGD("initCameraConnect: autofocus is set to mode \"continuous-video\"");
}
}
}
}
#endif
//check if yuv420sp format available. Set this format as preview format.
@@ -513,26 +604,25 @@ CameraHandler* CameraHandler::initCameraConnect(const CameraCallback& callback,
}
}
status_t pdstatus;
status_t bufferStatus;
#if defined(ANDROID_r2_2_0)
pdstatus = camera->setPreviewDisplay(sp<ISurface>(0 /*new DummySurface*/));
if (pdstatus != 0)
LOGE("initCameraConnect: failed setPreviewDisplay(0) call; camera migth not work correctly on some devices");
bufferStatus = camera->setPreviewDisplay(sp<ISurface>(0 /*new DummySurface*/));
if (bufferStatus != 0)
LOGE("initCameraConnect: failed setPreviewDisplay(0) call (status %d); camera might not work correctly on some devices", bufferStatus);
#elif defined(ANDROID_r2_3_3)
/* Do nothing in case of 2.3 for now */
#elif defined(ANDROID_r3_0_1) || defined(ANDROID_r4_0_0) || defined(ANDROID_r4_0_3)
sp<SurfaceTexture> surfaceTexture = new SurfaceTexture(MAGIC_OPENCV_TEXTURE_ID);
pdstatus = camera->setPreviewTexture(surfaceTexture);
if (pdstatus != 0)
LOGE("initCameraConnect: failed setPreviewTexture call; camera migth not work correctly");
#elif defined(ANDROID_r4_1_1) || defined(ANDROID_r4_2_0)
bufferStatus = camera->setPreviewTexture(surfaceTexture);
if (bufferStatus != 0)
LOGE("initCameraConnect: failed setPreviewTexture call (status %d); camera might not work correctly", bufferStatus);
#elif defined(ANDROID_r4_1_1) || defined(ANDROID_r4_2_0) || defined(ANDROID_r4_3_0)
sp<BufferQueue> bufferQueue = new BufferQueue();
sp<BufferQueue::ConsumerListener> queueListener = new ConsumerListenerStub();
bufferQueue->consumerConnect(queueListener);
pdstatus = camera->setPreviewTexture(bufferQueue);
if (pdstatus != 0)
LOGE("initCameraConnect: failed setPreviewTexture call; camera migth not work correctly");
bufferStatus = camera->setPreviewTexture(bufferQueue);
if (bufferStatus != 0)
LOGE("initCameraConnect: failed setPreviewTexture call; camera might not work correctly");
#endif
#if (defined(ANDROID_r2_2_0) || defined(ANDROID_r2_3_3) || defined(ANDROID_r3_0_1))
@@ -548,9 +638,9 @@ CameraHandler* CameraHandler::initCameraConnect(const CameraCallback& callback,
#endif //!(defined(ANDROID_r4_0_0) || defined(ANDROID_r4_0_3))
LOGD("Starting preview");
status_t resStart = camera->startPreview();
status_t previewStatus = camera->startPreview();
if (resStart != 0)
if (previewStatus != 0)
{
LOGE("initCameraConnect: startPreview() fails. Closing camera connection...");
handler->closeCameraConnect();
@@ -558,7 +648,7 @@ CameraHandler* CameraHandler::initCameraConnect(const CameraCallback& callback,
}
else
{
LOGD("Preview started successfully");
LOGD("Preview started successfully");
}
return handler;
@@ -573,9 +663,11 @@ void CameraHandler::closeCameraConnect()
}
camera->stopPreview();
#if defined(ANDROID_r4_0_0) || defined(ANDROID_r4_0_3) || defined(ANDROID_r4_1_1) || defined(ANDROID_r4_2_0) || defined(ANDROID_r4_3_0)
camera->setPreviewCallbackFlags(CAMERA_FRAME_CALLBACK_FLAG_NOOP);
#endif
camera->disconnect();
camera.clear();
camera=NULL;
// ATTENTION!!!!!!!!!!!!!!!!!!!!!!!!!!
// When we set
@@ -816,14 +908,60 @@ void CameraHandler::applyProperties(CameraHandler** ppcameraHandler)
if (*ppcameraHandler == 0)
{
LOGE("applyProperties: Passed null *ppcameraHandler");
LOGE("applyProperties: Passed NULL *ppcameraHandler");
return;
}
LOGD("CameraHandler::applyProperties()");
CameraHandler* previousCameraHandler=*ppcameraHandler;
CameraParameters curCameraParameters(previousCameraHandler->params.flatten());
CameraParameters curCameraParameters((*ppcameraHandler)->params.flatten());
#if defined(ANDROID_r4_0_0) || defined(ANDROID_r4_0_3) || defined(ANDROID_r4_1_1) || defined(ANDROID_r4_2_0) || defined(ANDROID_r4_3_0)
CameraHandler* handler=*ppcameraHandler;
handler->camera->stopPreview();
handler->camera->setPreviewCallbackFlags(CAMERA_FRAME_CALLBACK_FLAG_NOOP);
status_t reconnectStatus = handler->camera->reconnect();
if (reconnectStatus != 0)
{
LOGE("applyProperties: failed to reconnect camera (status %d)", reconnectStatus);
return;
}
handler->camera->setParameters(curCameraParameters.flatten());
handler->params.unflatten(curCameraParameters.flatten());
status_t bufferStatus;
# if defined(ANDROID_r4_0_0) || defined(ANDROID_r4_0_3)
sp<SurfaceTexture> surfaceTexture = new SurfaceTexture(MAGIC_OPENCV_TEXTURE_ID);
bufferStatus = handler->camera->setPreviewTexture(surfaceTexture);
if (bufferStatus != 0)
LOGE("applyProperties: failed setPreviewTexture call (status %d); camera might not work correctly", bufferStatus);
# elif defined(ANDROID_r4_1_1) || defined(ANDROID_r4_2_0) || defined(ANDROID_r4_3_0)
sp<BufferQueue> bufferQueue = new BufferQueue();
sp<BufferQueue::ConsumerListener> queueListener = new ConsumerListenerStub();
bufferQueue->consumerConnect(queueListener);
bufferStatus = handler->camera->setPreviewTexture(bufferQueue);
if (bufferStatus != 0)
LOGE("applyProperties: failed setPreviewTexture call; camera might not work correctly");
# endif
handler->camera->setPreviewCallbackFlags( CAMERA_FRAME_CALLBACK_FLAG_ENABLE_MASK | CAMERA_FRAME_CALLBACK_FLAG_COPY_OUT_MASK);//with copy
LOGD("Starting preview");
status_t previewStatus = handler->camera->startPreview();
if (previewStatus != 0)
{
LOGE("initCameraConnect: startPreview() fails. Closing camera connection...");
handler->closeCameraConnect();
handler = NULL;
}
else
{
LOGD("Preview started successfully");
}
#else
CameraHandler* previousCameraHandler=*ppcameraHandler;
CameraCallback cameraCallback=previousCameraHandler->cameraCallback;
void* userData=previousCameraHandler->userData;
int cameraId=previousCameraHandler->cameraId;
@@ -832,7 +970,6 @@ void CameraHandler::applyProperties(CameraHandler** ppcameraHandler)
previousCameraHandler->closeCameraConnect();
LOGD("CameraHandler::applyProperties(): after previousCameraHandler->closeCameraConnect");
LOGD("CameraHandler::applyProperties(): before initCameraConnect");
CameraHandler* handler=initCameraConnect(cameraCallback, cameraId, userData, &curCameraParameters);
LOGD("CameraHandler::applyProperties(): after initCameraConnect, handler=0x%x", (int)handler);
@@ -845,6 +982,7 @@ void CameraHandler::applyProperties(CameraHandler** ppcameraHandler)
}
}
(*ppcameraHandler)=handler;
#endif
}
+2 -2
Ver Arquivo
@@ -431,14 +431,14 @@ void CameraActivity::applyProperties()
int CameraActivity::getFrameWidth()
{
if (frameWidth <= 0)
frameWidth = getProperty(ANDROID_CAMERA_PROPERTY_FRAMEWIDTH);
frameWidth = getProperty(ANDROID_CAMERA_PROPERTY_FRAMEWIDTH);
return frameWidth;
}
int CameraActivity::getFrameHeight()
{
if (frameHeight <= 0)
frameHeight = getProperty(ANDROID_CAMERA_PROPERTY_FRAMEHEIGHT);
frameHeight = getProperty(ANDROID_CAMERA_PROPERTY_FRAMEHEIGHT);
return frameHeight;
}
@@ -1477,6 +1477,6 @@ The function reconstructs 3-dimensional points (in homogeneous coordinates) by u
.. [HH08] Hirschmuller, H. Stereo Processing by Semiglobal Matching and Mutual Information, PAMI(30), No. 2, February 2008, pp. 328-341.
.. [Slabaugh] Slabaugh, G.G. Computing Euler angles from a rotation matrix. http://gregslabaugh.name/publications/euler.pdf
.. [Slabaugh] Slabaugh, G.G. Computing Euler angles from a rotation matrix. http://www.soi.city.ac.uk/~sbbh653/publications/euler.pdf (verified: 2013-04-15)
.. [Zhang2000] Z. Zhang. A Flexible New Technique for Camera Calibration. IEEE Transactions on Pattern Analysis and Machine Intelligence, 22(11):1330-1334, 2000.
@@ -639,9 +639,9 @@ CV_EXPORTS Mat findFundamentalMat( InputArray points1, InputArray points2,
double param1=3., double param2=0.99);
//! finds coordinates of epipolar lines corresponding the specified points
CV_EXPORTS void computeCorrespondEpilines( InputArray points,
int whichImage, InputArray F,
OutputArray lines );
CV_EXPORTS_W void computeCorrespondEpilines( InputArray points,
int whichImage, InputArray F,
OutputArray lines );
CV_EXPORTS_W void triangulatePoints( InputArray projMatr1, InputArray projMatr2,
InputArray projPoints1, InputArray projPoints2,
-25
Ver Arquivo
@@ -115,31 +115,6 @@ namespace cv
transform(points, modif_points, transformation);
}
class Mutex
{
public:
Mutex() {
}
void lock()
{
#ifdef HAVE_TBB
resultsMutex.lock();
#endif
}
void unlock()
{
#ifdef HAVE_TBB
resultsMutex.unlock();
#endif
}
private:
#ifdef HAVE_TBB
tbb::mutex resultsMutex;
#endif
};
struct CameraParameters
{
void init(Mat _intrinsics, Mat _distCoeffs)
+8 -12
Ver Arquivo
@@ -699,7 +699,7 @@ struct PrefilterInvoker
};
struct FindStereoCorrespInvoker
struct FindStereoCorrespInvoker : ParallelLoopBody
{
FindStereoCorrespInvoker( const Mat& _left, const Mat& _right,
Mat& _disp, CvStereoBMState* _state,
@@ -713,12 +713,12 @@ struct FindStereoCorrespInvoker
validDisparityRect = _validDisparityRect;
}
void operator()( const BlockedRange& range ) const
void operator()( const Range& range ) const
{
int cols = left->cols, rows = left->rows;
int _row0 = min(cvRound(range.begin() * rows / nstripes), rows);
int _row1 = min(cvRound(range.end() * rows / nstripes), rows);
uchar *ptr = state->slidingSumBuf->data.ptr + range.begin() * stripeBufSize;
int _row0 = min(cvRound(range.start * rows / nstripes), rows);
int _row1 = min(cvRound(range.end * rows / nstripes), rows);
uchar *ptr = state->slidingSumBuf->data.ptr + range.start * stripeBufSize;
int FILTERED = (state->minDisparity - 1)*16;
Rect roi = validDisparityRect & Rect(0, _row0, cols, _row1 - _row0);
@@ -871,14 +871,10 @@ static void findStereoCorrespondenceBM( const Mat& left0, const Mat& right0, Mat
const bool useShorts = false;
#endif
#ifdef HAVE_TBB
const double SAD_overhead_coeff = 10.0;
double N0 = 8000000 / (useShorts ? 1 : 4); // approx tbb's min number instructions reasonable for one thread
double maxStripeSize = min(max(N0 / (width * ndisp), (wsz-1) * SAD_overhead_coeff), (double)height);
int nstripes = cvCeil(height / maxStripeSize);
#else
const int nstripes = 1;
#endif
int bufSize = max(bufSize0 * nstripes, max(bufSize1 * 2, bufSize2));
@@ -898,9 +894,9 @@ static void findStereoCorrespondenceBM( const Mat& left0, const Mat& right0, Mat
state->minDisparity, state->numberOfDisparities,
state->SADWindowSize);
parallel_for(BlockedRange(0, nstripes),
FindStereoCorrespInvoker(left, right, disp, state, nstripes,
bufSize0, useShorts, validDisparityRect));
parallel_for_(Range(0, nstripes),
FindStereoCorrespInvoker(left, right, disp, state, nstripes,
bufSize0, useShorts, validDisparityRect));
if( state->speckleRange >= 0 && state->speckleWindowSize > 0 )
{
+1 -1
Ver Arquivo
@@ -1,4 +1,4 @@
#/usr/bin/env python
#!/usr/bin/env python
import sys
import os.path
+1 -1
Ver Arquivo
@@ -1,7 +1,7 @@
#include "opencv2/contrib/contrib.hpp"
#ifdef WIN32
#if defined(WIN32) || defined(_WIN32)
#include <windows.h>
#include <tchar.h>
#else
+10 -14
Ver Arquivo
@@ -3,25 +3,21 @@ ocv_add_module(core ${ZLIB_LIBRARIES})
ocv_module_include_directories(${ZLIB_INCLUDE_DIR})
if(HAVE_CUDA)
ocv_source_group("Src\\Cuda" GLOB "src/cuda/*.cu")
ocv_include_directories("${OpenCV_SOURCE_DIR}/modules/gpu/include" ${CUDA_INCLUDE_DIRS})
ocv_include_directories("${OpenCV_SOURCE_DIR}/modules/gpu/include")
ocv_warnings_disable(CMAKE_CXX_FLAGS -Wundef)
file(GLOB lib_cuda "src/cuda/*.cu")
ocv_cuda_compile(cuda_objs ${lib_cuda})
set(cuda_link_libs ${CUDA_LIBRARIES} ${CUDA_npp_LIBRARY})
else()
set(lib_cuda "")
set(cuda_objs "")
set(cuda_link_libs "")
endif()
ocv_glob_module_sources(SOURCES ${lib_cuda} ${cuda_objs} "${opencv_core_BINARY_DIR}/version_string.inc")
file(GLOB lib_cuda_hdrs "include/opencv2/${name}/cuda/*.hpp" "include/opencv2/${name}/cuda/*.h")
file(GLOB lib_cuda_hdrs_detail "include/opencv2/${name}/cuda/detail/*.hpp" "include/opencv2/${name}/cuda/detail/*.h")
ocv_create_module(${cuda_link_libs})
source_group("Cuda Headers" FILES ${lib_cuda_hdrs})
source_group("Cuda Headers\\Detail" FILES ${lib_cuda_hdrs_detail})
ocv_glob_module_sources(SOURCES "${opencv_core_BINARY_DIR}/version_string.inc"
HEADERS ${lib_cuda_hdrs} ${lib_cuda_hdrs_detail})
ocv_create_module()
ocv_add_precompiled_headers(${the_module})
ocv_add_accuracy_tests()
ocv_add_perf_tests()
+30 -3
Ver Arquivo
@@ -489,6 +489,9 @@ Various Ptr constructors.
.. ocv:function:: Ptr::Ptr(_Tp* _obj)
.. ocv:function:: Ptr::Ptr(const Ptr& ptr)
:param _obj: Object for copy.
:param ptr: Object for copy.
Ptr::~Ptr
---------
The Ptr destructor.
@@ -501,6 +504,8 @@ Assignment operator.
.. ocv:function:: Ptr& Ptr::operator = (const Ptr& ptr)
:param ptr: Object for assignment.
Decrements own reference counter (with ``release()``) and increments ptr's reference counter.
Ptr::addref
@@ -1465,6 +1470,7 @@ Adds elements to the bottom of the matrix.
.. ocv:function:: void Mat::push_back( const Mat& m )
:param elem: Added element(s).
:param m: Added line(s).
The methods add one or more elements to the bottom of the matrix. They emulate the corresponding method of the STL vector class. When ``elem`` is ``Mat`` , its type and the number of columns must be the same as in the container matrix.
@@ -1691,7 +1697,7 @@ Returns the depth of a matrix element.
.. ocv:function:: int Mat::depth() const
The method returns the identifier of the matrix element depth (the type of each individual channel). For example, for a 16-bit signed 3-channel array, the method returns ``CV_16S`` . A complete list of matrix types contains the following values:
The method returns the identifier of the matrix element depth (the type of each individual channel). For example, for a 16-bit signed element array, the method returns ``CV_16S`` . A complete list of matrix types contains the following values:
* ``CV_8U`` - 8-bit unsigned integers ( ``0..255`` )
@@ -2160,7 +2166,6 @@ Various SparseMat constructors.
:param dims: Array dimensionality.
:param _sizes: Sparce matrix size on all dementions.
:param _type: Sparse matrix data type.
:param try1d: if try1d is true and matrix is a single-column matrix (Nx1), then the sparse matrix will be 1-dimensional.
SparseMat::~SparseMat
---------------------
@@ -2175,6 +2180,8 @@ Provides sparse matrix assignment operators.
.. ocv:function:: SparseMat& SparseMat::operator = (const SparseMat& m)
.. ocv:function:: SparseMat& SparseMat::operator = (const Mat& m)
:param m: Matrix for assignment.
The last variant is equivalent to the corresponding constructor with try1d=false.
@@ -2202,6 +2209,10 @@ Convert sparse matrix with possible type change and scaling.
.. ocv:function:: void SparseMat::convertTo( SparseMat& m, int rtype, double alpha=1 ) const
.. ocv:function:: void SparseMat::convertTo( Mat& m, int rtype, double alpha=1, double beta=0 ) const
:param m: Destination matrix.
:param rtype: Destination matrix type.
:param alpha: Conversion multiplier.
The first version converts arbitrary sparse matrix to dense matrix and multiplies all the matrix elements by the specified scalar.
The second versiob converts sparse matrix to dense matrix with optional type conversion and scaling.
When rtype=-1, the destination element type will be the same as the sparse matrix element type.
@@ -2294,7 +2305,7 @@ The method returns the number of matrix channels.
SparseMat::size
---------------
Returns the array of sizes or matrix size by i dimention and 0 if the matrix is not allocated.
Returns the array of sizes or matrix size by i dimension and 0 if the matrix is not allocated.
.. ocv:function:: const int* SparseMat::size() const
.. ocv:function:: int SparseMat::size(int i) const
@@ -2322,6 +2333,11 @@ Compute element hash value from the element indices.
.. ocv:function:: size_t SparseMat::hash(int i0, int i1, int i2) const
.. ocv:function:: size_t SparseMat::hash(const int* idx) const
:param i0: The first dimension index.
:param i1: The second dimension index.
:param i2: The third dimension index.
:param idx: Array of element indices for multidimensional matices.
SparseMat::ptr
--------------
Low-level element-access functions, special variants for 1D, 2D, 3D cases, and the generic one for n-D case.
@@ -2331,6 +2347,12 @@ Low-level element-access functions, special variants for 1D, 2D, 3D cases, and t
.. ocv:function:: uchar* SparseMat::ptr(int i0, int i1, int i2, bool createMissing, size_t* hashval=0)
.. ocv:function:: uchar* SparseMat::ptr(const int* idx, bool createMissing, size_t* hashval=0)
:param i0: The first dimension index.
:param i1: The second dimension index.
:param i2: The third dimension index.
:param idx: Array of element indices for multidimensional matices.
:param createMissing: Create new element with 0 value if it does not exist in SparseMat.
Return pointer to the matrix element. If the element is there (it is non-zero), the pointer to it is returned.
If it is not there and ``createMissing=false``, NULL pointer is returned. If it is not there and ``createMissing=true``,
the new elementis created and initialized with 0. Pointer to it is returned. If the optional hashval pointer is not ``NULL``,
@@ -2344,6 +2366,11 @@ Erase the specified matrix element. When there is no such an element, the method
.. ocv:function:: void SparseMat::erase(int i0, int i1, int i2, size_t* hashval=0)
.. ocv:function:: void SparseMat::erase(const int* idx, size_t* hashval=0)
:param i0: The first dimension index.
:param i1: The second dimension index.
:param i2: The third dimension index.
:param idx: Array of element indices for multidimensional matices.
SparseMat\_
-----------
.. ocv:class:: SparseMat_
+8
Ver Arquivo
@@ -17,12 +17,18 @@ Finds centers of clusters and groups input samples around the clusters.
:param samples: Floating-point matrix of input samples, one row per sample.
:param data: Data for clustering.
:param cluster_count: Number of clusters to split the set by.
:param K: Number of clusters to split the set by.
:param labels: Input/output integer array that stores the cluster indices for every sample.
:param criteria: The algorithm termination criteria, that is, the maximum number of iterations and/or the desired accuracy. The accuracy is specified as ``criteria.epsilon``. As soon as each of the cluster centers moves by less than ``criteria.epsilon`` on some iteration, the algorithm stops.
:param termcrit: The algorithm termination criteria, that is, the maximum number of iterations and/or the desired accuracy.
:param attempts: Flag to specify the number of times the algorithm is executed using different initial labellings. The algorithm returns the labels that yield the best compactness (see the last function parameter).
:param rng: CvRNG state initialized by RNG().
@@ -37,6 +43,8 @@ Finds centers of clusters and groups input samples around the clusters.
:param centers: Output matrix of the cluster centers, one row per each cluster center.
:param _centers: Output matrix of the cluster centers, one row per each cluster center.
:param compactness: The returned value that is described below.
The function ``kmeans`` implements a k-means algorithm that finds the
+8
Ver Arquivo
@@ -234,6 +234,8 @@ Calculates the width and height of a text string.
:param text: Input text string.
:param text_string: Input text string in C format.
:param fontFace: Font to use. See the :ocv:func:`putText` for details.
:param fontScale: Font scale. See the :ocv:func:`putText` for details.
@@ -242,6 +244,12 @@ Calculates the width and height of a text string.
:param baseLine: Output parameter - y-coordinate of the baseline relative to the bottom-most text point.
:param baseline: Output parameter - y-coordinate of the baseline relative to the bottom-most text point.
:param font: Font description in terms of old C API.
:param text_size: Output parameter - The size of a box that contains the specified text.
The function ``getTextSize`` calculates and returns the size of a box that contains the specified text.
That is, the following code renders some text, the tight box surrounding it, and the baseline: ::
+2
Ver Arquivo
@@ -1062,6 +1062,8 @@ Returns the determinant of a square floating-point matrix.
:param mtx: input matrix that must have ``CV_32FC1`` or ``CV_64FC1`` type and square size.
:param mat: input matrix that must have ``CV_32FC1`` or ``CV_64FC1`` type and square size.
The function ``determinant`` calculates and returns the determinant of the specified matrix. For small matrices ( ``mtx.cols=mtx.rows<=3`` ),
the direct method is used. For larger matrices, the function uses LU factorization with partial pivoting.
@@ -173,6 +173,8 @@ Checks a condition at runtime and throws exception if it fails
.. ocv:function:: CV_Assert(expr)
:param expr: Expression for check.
The macros ``CV_Assert`` (and ``CV_DbgAssert``) evaluate the specified expression. If it is 0, the macros raise an error (see :ocv:func:`error` ). The macro ``CV_Assert`` checks the condition in both Debug and Release configurations while ``CV_DbgAssert`` is only retained in the Debug configuration.
@@ -188,8 +190,14 @@ Signals an error and raises an exception.
:param status: Error code. Normally, it is a negative value. The list of pre-defined error codes can be found in ``cxerror.h`` .
:param func_name: The function name where error occurs.
:param err_msg: Text of the error message.
:param file_name: The file name where error occurs.
:param line: The line number where error occurs.
:param args: ``printf`` -like formatted error message in parentheses.
The function and the helper macros ``CV_Error`` and ``CV_Error_``: ::
@@ -249,6 +257,7 @@ Allocates an aligned memory buffer.
.. ocv:cfunction:: void* cvAlloc( size_t size )
:param size: Allocated buffer size.
:param bufSize: Allocated buffer size.
The function allocates the buffer of the specified size and returns it. When the buffer size is 16 bytes or more, the returned buffer is aligned to 16 bytes.
+11
Ver Arquivo
@@ -181,6 +181,17 @@ Opens a file.
.. ocv:function:: bool FileStorage::open(const string& filename, int flags, const string& encoding=string())
:param filename: Name of the file to open or the text string to read the data from.
Extension of the file (``.xml`` or ``.yml``/``.yaml``) determines its format (XML or YAML respectively).
Also you can append ``.gz`` to work with compressed files, for example ``myHugeMatrix.xml.gz``.
If both ``FileStorage::WRITE`` and ``FileStorage::MEMORY`` flags are specified, ``source``
is used just to specify the output file format (e.g. ``mydata.xml``, ``.yml`` etc.).
:param flags: Mode of operation. See FileStorage constructor for more details.
:param encoding: Encoding of the file. Note that UTF-16 XML encoding is not supported currently and you should use 8-bit encoding instead of it.
See description of parameters in :ocv:func:`FileStorage::FileStorage`. The method calls :ocv:func:`FileStorage::release` before opening the file.

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