1
0
mirror of https://github.com/opencv/opencv.git synced 2026-07-31 00:03:03 +04:00

Compare commits

..

19 Commits

Author SHA1 Message Date
Alexander Smorkalov 8e40becab1 Debian packages with legacy C headers added to list of conflicts, relpaces, etc.
(cherry picked from commit e245aed6bb)
2015-10-26 10:56:34 +03:00
Alexander Alekhin 60eda6f25c export simple libs from OPENCV_LINKER_LIBS (fix #5541)
(cherry picked from commit 937a096bf1)
2015-10-26 10:55:38 +03:00
Alexander Smorkalov 2e78a3e5e9 Fixed samples build with nonfree.
(cherry picked from commit 341e7b3be2)
2015-10-26 10:55:24 +03:00
Alexander Smorkalov 966d35a9fb Made samples build independent from nonfree module.
(cherry picked from commit bba8c0beac)
2015-10-26 10:55:14 +03:00
Alexander Smorkalov 42447a7610 Set of lintain warning fixes for -samples debian package.
(cherry picked from commit ff00220302)
2015-10-26 10:55:00 +03:00
Aaron Simmons ca50969c2b brining over fix in master (#4140) for libz import on 64-bit android
(cherry picked from commit 55a9fdf051)
2015-10-26 10:54:44 +03:00
a-andre 2d3e170370 install opencv2/highgui.hpp header
(cherry picked from commit d16fb30512)
2015-10-26 10:54:29 +03:00
Alexander Smorkalov 8a37fc8223 Added missing copyright headers.
(cherry picked from commit 408107ce6d)
2015-10-26 10:53:52 +03:00
Alexander Smorkalov a5c20f8592 Debian formatted copyright file added to all debian packages.
(cherry picked from commit 9d24b3c3b0)
2015-10-26 10:53:38 +03:00
Ilya Lavrenov 96a2edb375 delete video readers
(cherry picked from commit 0d5b739d35)
2015-10-26 10:53:23 +03:00
Ilya Lavrenov 15b313ce4b fixed memory leak in findHomography tests
(cherry picked from commit ec5244a73a)
2015-10-26 10:52:57 +03:00
Alexander Smorkalov 1ea6568951 Fixed wrong-name-for-changelog-of-native-package warning for deb packages.
(cherry picked from commit cb1dc7cb6e)
2015-10-26 10:51:22 +03:00
Ilya Lavrenov 56654ae360 added some property setting and getting
(cherry picked from commit 75fcedf0ed)
2015-10-26 10:50:00 +03:00
Ilya Lavrenov 9a3e53e738 repaired GStreamer 0.10 version
(cherry picked from commit c19ed39a78)
2015-10-26 10:49:43 +03:00
Ilya Lavrenov 2243bfa181 repaired gstreamer camera capture:
1. Enabled property retrieval: height, width, FPS
2. Fixed issue when isOpened returns always true even for non-existing devices
3. Ability to work with non-0 device. Camera capture index is taken into account

(cherry picked from commit dbd7912b88)
2015-10-26 10:49:32 +03:00
robertxwu 33cd7f38a8 re-submit
(cherry picked from commit 4a68cc1675)
2015-10-26 10:49:02 +03:00
Hajo Nils Krabbenhöft 2fc0ce5c24 buffer_size should be in bytes, not bits
(cherry picked from commit 7825cbeb7d)
2015-10-26 10:46:33 +03:00
Hajo Nils Krabbenhöft c5d009d6c4 fix crash for large BW tif images
(cherry picked from commit d38fee7599)
2015-10-26 10:46:23 +03:00
Roman Donchenko 7d28541bbe test2.py: fail if a downloaded image can't be decoded
(cherry picked from commit 56f17e4921)
2015-10-26 10:45:22 +03:00
37 changed files with 659 additions and 218 deletions
+2 -1
View File
@@ -8,7 +8,8 @@ if(BUILD_ZLIB)
else() else()
include(FindZLIB) include(FindZLIB)
if(ZLIB_FOUND AND ANDROID) if(ZLIB_FOUND AND ANDROID)
if(ZLIB_LIBRARY STREQUAL "${ANDROID_SYSROOT}/usr/lib/libz.so") if(ZLIB_LIBRARIES STREQUAL "${ANDROID_SYSROOT}/usr/lib/libz.so" OR
ZLIB_LIBRARIES STREQUAL "${ANDROID_SYSROOT}/usr/lib64/libz.so")
set(ZLIB_LIBRARY z) set(ZLIB_LIBRARY z)
set(ZLIB_LIBRARIES z) set(ZLIB_LIBRARIES z)
endif() endif()
+3 -3
View File
@@ -12,8 +12,8 @@ endif(WITH_VFW)
# --- GStreamer --- # --- GStreamer ---
ocv_clear_vars(HAVE_GSTREAMER) ocv_clear_vars(HAVE_GSTREAMER)
# try to find gstreamer 1.x first # try to find gstreamer 1.x first if 0.10 was not requested
if(WITH_GSTREAMER) if(WITH_GSTREAMER AND NOT WITH_GSTREAMER_0_10)
CHECK_MODULE(gstreamer-base-1.0 HAVE_GSTREAMER_BASE) CHECK_MODULE(gstreamer-base-1.0 HAVE_GSTREAMER_BASE)
CHECK_MODULE(gstreamer-video-1.0 HAVE_GSTREAMER_VIDEO) CHECK_MODULE(gstreamer-video-1.0 HAVE_GSTREAMER_VIDEO)
CHECK_MODULE(gstreamer-app-1.0 HAVE_GSTREAMER_APP) CHECK_MODULE(gstreamer-app-1.0 HAVE_GSTREAMER_APP)
@@ -29,7 +29,7 @@ if(WITH_GSTREAMER)
set(GSTREAMER_PBUTILS_VERSION ${ALIASOF_gstreamer-pbutils-1.0_VERSION}) set(GSTREAMER_PBUTILS_VERSION ${ALIASOF_gstreamer-pbutils-1.0_VERSION})
endif() endif()
endif(WITH_GSTREAMER) endif()
# gstreamer support was requested but could not find gstreamer 1.x, # gstreamer support was requested but could not find gstreamer 1.x,
# so fallback/try to find gstreamer 0.10 # so fallback/try to find gstreamer 0.10
+4 -1
View File
@@ -576,7 +576,10 @@ macro(ocv_create_module)
if(NOT "${ARGN}" STREQUAL "SKIP_LINK") if(NOT "${ARGN}" STREQUAL "SKIP_LINK")
target_link_libraries(${the_module} ${OPENCV_MODULE_${the_module}_DEPS}) target_link_libraries(${the_module} ${OPENCV_MODULE_${the_module}_DEPS})
target_link_libraries(${the_module} LINK_INTERFACE_LIBRARIES ${OPENCV_MODULE_${the_module}_DEPS}) target_link_libraries(${the_module} LINK_INTERFACE_LIBRARIES ${OPENCV_MODULE_${the_module}_DEPS})
target_link_libraries(${the_module} ${OPENCV_MODULE_${the_module}_DEPS_EXT} ${OPENCV_LINKER_LIBS} ${IPP_LIBS} ${ARGN}) set(extra_deps ${OPENCV_MODULE_${the_module}_DEPS_EXT} ${OPENCV_LINKER_LIBS} ${IPP_LIBS} ${ARGN})
ocv_extract_simple_libs(extra_deps _simple_deps _other_deps)
target_link_libraries(${the_module} LINK_INTERFACE_LIBRARIES ${_simple_deps}) # this list goes to "export"
target_link_libraries(${the_module} ${extra_deps})
endif() endif()
add_dependencies(opencv_modules ${the_module}) add_dependencies(opencv_modules ${the_module})
+23 -1
View File
@@ -19,6 +19,7 @@ OpenCV makes it easy for businesses to utilize and modify the code.")
set(CPACK_PACKAGE_VERSION_MINOR "${OPENCV_VERSION_MINOR}") set(CPACK_PACKAGE_VERSION_MINOR "${OPENCV_VERSION_MINOR}")
set(CPACK_PACKAGE_VERSION_PATCH "${OPENCV_VERSION_PATCH}") set(CPACK_PACKAGE_VERSION_PATCH "${OPENCV_VERSION_PATCH}")
set(CPACK_PACKAGE_VERSION "${OPENCV_VCSVERSION}") set(CPACK_PACKAGE_VERSION "${OPENCV_VCSVERSION}")
set(OPENCV_DEBIAN_COPYRIGHT_FILE "")
endif(NOT OPENCV_CUSTOM_PACKAGE_INFO) endif(NOT OPENCV_CUSTOM_PACKAGE_INFO)
set(CPACK_STRIP_FILES 1) set(CPACK_STRIP_FILES 1)
@@ -126,6 +127,8 @@ foreach(module calib3d contrib core features2d flann gpu highgui imgproc legacy
endif() endif()
endforeach() endforeach()
list(APPEND STD_OPENCV_DEV "libhighgui-dev" "libcv-dev" "libcvaux-dev")
string(REPLACE ";" ", " CPACK_COMPONENT_LIBS_CONFLICTS "${STD_OPENCV_LIBS}") string(REPLACE ";" ", " CPACK_COMPONENT_LIBS_CONFLICTS "${STD_OPENCV_LIBS}")
string(REPLACE ";" ", " CPACK_COMPONENT_LIBS_PROVIDES "${STD_OPENCV_LIBS}") string(REPLACE ";" ", " CPACK_COMPONENT_LIBS_PROVIDES "${STD_OPENCV_LIBS}")
string(REPLACE ";" ", " CPACK_COMPONENT_LIBS_REPLACES "${STD_OPENCV_LIBS}") string(REPLACE ";" ", " CPACK_COMPONENT_LIBS_REPLACES "${STD_OPENCV_LIBS}")
@@ -192,7 +195,7 @@ if(CPACK_GENERATOR STREQUAL "DEB")
set(DEBIAN_CHANGELOG_OUT_FILE "${CMAKE_BINARY_DIR}/deb-packages-gen/${comp}/changelog.Debian") set(DEBIAN_CHANGELOG_OUT_FILE "${CMAKE_BINARY_DIR}/deb-packages-gen/${comp}/changelog.Debian")
set(DEBIAN_CHANGELOG_OUT_FILE_GZ "${CMAKE_BINARY_DIR}/deb-packages-gen/${comp}/changelog.Debian.gz") set(DEBIAN_CHANGELOG_OUT_FILE_GZ "${CMAKE_BINARY_DIR}/deb-packages-gen/${comp}/changelog.Debian.gz")
set(CHANGELOG_PACKAGE_NAME "${CPACK_DEBIAN_COMPONENT_${comp_upcase}_NAME}") set(CHANGELOG_PACKAGE_NAME "${CPACK_DEBIAN_COMPONENT_${comp_upcase}_NAME}")
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/templates/changelog.Debian.in" "${DEBIAN_CHANGELOG_OUT_FILE}" @ONLY) configure_file("${CMAKE_SOURCE_DIR}/cmake/templates/changelog.Debian.in" "${DEBIAN_CHANGELOG_OUT_FILE}" @ONLY)
execute_process(COMMAND "${GZIP_TOOL}" "-cf9" "${DEBIAN_CHANGELOG_OUT_FILE}" execute_process(COMMAND "${GZIP_TOOL}" "-cf9" "${DEBIAN_CHANGELOG_OUT_FILE}"
OUTPUT_FILE "${DEBIAN_CHANGELOG_OUT_FILE_GZ}" OUTPUT_FILE "${DEBIAN_CHANGELOG_OUT_FILE_GZ}"
@@ -201,6 +204,25 @@ if(CPACK_GENERATOR STREQUAL "DEB")
install(FILES "${DEBIAN_CHANGELOG_OUT_FILE_GZ}" install(FILES "${DEBIAN_CHANGELOG_OUT_FILE_GZ}"
DESTINATION "share/doc/${CPACK_DEBIAN_COMPONENT_${comp_upcase}_NAME}" DESTINATION "share/doc/${CPACK_DEBIAN_COMPONENT_${comp_upcase}_NAME}"
COMPONENT "${comp}") COMPONENT "${comp}")
set(CHANGELOG_OUT_FILE "${CMAKE_BINARY_DIR}/deb-packages-gen/${comp}/changelog")
set(CHANGELOG_OUT_FILE_GZ "${CMAKE_BINARY_DIR}/deb-packages-gen/${comp}/changelog.gz")
file(WRITE ${CHANGELOG_OUT_FILE} "Upstream changelog stub. See https://github.com/Itseez/opencv/wiki/ChangeLog")
execute_process(COMMAND "${GZIP_TOOL}" "-cf9" "${CHANGELOG_OUT_FILE}"
OUTPUT_FILE "${CHANGELOG_OUT_FILE_GZ}"
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}")
install(FILES "${CHANGELOG_OUT_FILE_GZ}"
DESTINATION "share/doc/${CPACK_DEBIAN_COMPONENT_${comp_upcase}_NAME}"
COMPONENT "${comp}")
if(OPENCV_DEBIAN_COPYRIGHT_FILE)
install(FILES "${OPENCV_DEBIAN_COPYRIGHT_FILE}"
DESTINATION "share/doc/${CPACK_DEBIAN_COMPONENT_${comp_upcase}_NAME}"
COMPONENT "${comp}")
endif()
endforeach() endforeach()
endif() endif()
+18
View File
@@ -630,3 +630,21 @@ function(ocv_source_group group)
file(GLOB srcs ${OCV_SOURCE_GROUP_GLOB}) file(GLOB srcs ${OCV_SOURCE_GROUP_GLOB})
source_group(${group} FILES ${srcs}) source_group(${group} FILES ${srcs})
endfunction() endfunction()
# build the list of simple dependencies, that links via "-l"
# _all_libs - name of variable with input list
# _simple - name of variable with output list of simple libs
# _other - name of variable with _all_libs - _simple
macro(ocv_extract_simple_libs _all_libs _simple _other)
set(${_simple} "")
set(${_other} "")
foreach(_l ${${_all_libs}})
if(TARGET ${_l})
list(APPEND ${_other} ${_l})
elseif(EXISTS "${_l}")
list(APPEND ${_other} ${_l})
else()
list(APPEND ${_simple} ${_l})
endif()
endforeach()
endmacro()
+2 -1
View File
@@ -1,4 +1,5 @@
@CHANGELOG_PACKAGE_NAME@ (@CPACK_PACKAGE_VERSION@) unstable; urgency=low @CHANGELOG_PACKAGE_NAME@ (@CPACK_PACKAGE_VERSION@) unstable; urgency=low
* Debian changelog stub. See upstream changelog or release notes in user * Debian changelog stub. See https://github.com/Itseez/opencv/wiki/ChangeLog
or release notes in user
documentation for more details. documentation for more details.
-- @CPACK_PACKAGE_CONTACT@ @CHANGELOG_PACKAGE_DATE@ -- @CPACK_PACKAGE_CONTACT@ @CHANGELOG_PACKAGE_DATE@
+43
View File
@@ -0,0 +1,43 @@
Format: http://dep.debian.net/deps/dep5
Files: *
Copyright: 2000-2015, Intel Corporation
2009-2011, Willow Garage Inc.
2009-2015, NVIDIA Corporation
2010-2013, Advanced Micro Devices, Inc.
2015, OpenCV Foundation
2015, Itseez Inc.
License: BSD-3-clause
By downloading, copying, installing or using the software you agree to this
license. If you do not agree to this license, do not download, install, copy
or use the software.
.
.
License Agreement
For Open Source Computer Vision Library
(3-clause BSD License)
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
.
\* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
.
\* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
.
\* Neither the names of the copyright holders nor the names of the
contributors may be used to endorse or promote products derived from this
software without specific prior written permission.
This software is provided by the copyright holders and contributors "as is"
and any express or implied warranties, including, but not limited to, the
implied warranties of merchantability and fitness for a particular purpose are
disclaimed. In no event shall copyright holders or contributors be liable for
any direct, indirect, incidental, special, exemplary, or consequential damages
(including, but not limited to, procurement of substitute goods or services;
loss of use, data, or profits; or business interruption) however caused
and on any theory of liability, whether in contract, strict liability,
or tort (including negligence or otherwise) arising in any way out of
the use of this software, even if advised of the possibility of such damage.
+42
View File
@@ -1,3 +1,45 @@
/*M///////////////////////////////////////////////////////////////////////////////////////
* //
* // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
* //
* // By downloading, copying, installing or using the software you agree to this license.
* // If you do not agree to this license, do not download, install,
* // copy or use the software.
* //
* //
* // License Agreement
* // For Open Source Computer Vision Library
* //
* // Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
* // Copyright (C) 2009, Willow Garage Inc., all rights reserved.
* // Third party copyrights are property of their respective owners.
* //
* // Redistribution and use in source and binary forms, with or without modification,
* // are permitted provided that the following conditions are met:
* //
* // * Redistribution's of source code must retain the above copyright notice,
* // this list of conditions and the following disclaimer.
* //
* // * Redistribution's in binary form must reproduce the above copyright notice,
* // this list of conditions and the following disclaimer in the documentation
* // and/or other materials provided with the distribution.
* //
* // * The name of the copyright holders may not be used to endorse or promote products
* // derived from this software without specific prior written permission.
* //
* // This software is provided by the copyright holders and contributors "as is" and
* // any express or implied warranties, including, but not limited to, the implied
* // warranties of merchantability and fitness for a particular purpose are disclaimed.
* // In no event shall the Intel Corporation or contributors be liable for any direct,
* // indirect, incidental, special, exemplary, or consequential damages
* // (including, but not limited to, procurement of substitute goods or services;
* // loss of use, data, or profits; or business interruption) however caused
* // and on any theory of liability, whether in contract, strict liability,
* // or tort (including negligence or otherwise) arising in any way out of
* // the use of this software, even if advised of the possibility of such damage.
* //
* //M*/
#ifndef __OPENCV_OLD_CXMISC_H__ #ifndef __OPENCV_OLD_CXMISC_H__
#define __OPENCV_OLD_CXMISC_H__ #define __OPENCV_OLD_CXMISC_H__
+20 -15
View File
@@ -152,7 +152,7 @@ struct CvCBQuad
//static CvMat* debug_img = 0; //static CvMat* debug_img = 0;
static int icvGenerateQuads( CvCBQuad **quads, CvCBCorner **corners, static int icvGenerateQuads( CvCBQuad **quads, CvCBCorner **corners,
CvMemStorage *storage, CvMat *image, int flags ); CvMemStorage *storage, CvMat *image, int flags, int *max_quad_buf_size);
/*static int /*static int
icvGenerateQuadsEx( CvCBQuad **out_quads, CvCBCorner **out_corners, icvGenerateQuadsEx( CvCBQuad **out_quads, CvCBCorner **out_corners,
@@ -172,7 +172,7 @@ static int icvCleanFoundConnectedQuads( int quad_count,
static int icvOrderFoundConnectedQuads( int quad_count, CvCBQuad **quads, static int icvOrderFoundConnectedQuads( int quad_count, CvCBQuad **quads,
int *all_count, CvCBQuad **all_quads, CvCBCorner **corners, int *all_count, CvCBQuad **all_quads, CvCBCorner **corners,
CvSize pattern_size, CvMemStorage* storage ); CvSize pattern_size, int max_quad_buf_size, CvMemStorage* storage );
static void icvOrderQuad(CvCBQuad *quad, CvCBCorner *corner, int common); static void icvOrderQuad(CvCBQuad *quad, CvCBCorner *corner, int common);
@@ -183,7 +183,7 @@ static int icvTrimRow(CvCBQuad **quads, int count, int row, int dir);
#endif #endif
static int icvAddOuterQuad(CvCBQuad *quad, CvCBQuad **quads, int quad_count, static int icvAddOuterQuad(CvCBQuad *quad, CvCBQuad **quads, int quad_count,
CvCBQuad **all_quads, int all_count, CvCBCorner **corners); CvCBQuad **all_quads, int all_count, CvCBCorner **corners, int max_quad_buf_size);
static void icvRemoveQuadFromGroup(CvCBQuad **quads, int count, CvCBQuad *q0); static void icvRemoveQuadFromGroup(CvCBQuad **quads, int count, CvCBQuad *q0);
@@ -313,6 +313,7 @@ int cvFindChessboardCorners( const void* arr, CvSize pattern_size,
// making it difficult to detect smaller squares. // making it difficult to detect smaller squares.
for( k = 0; k < 6; k++ ) for( k = 0; k < 6; k++ )
{ {
int max_quad_buf_size = 0;
for( dilations = min_dilations; dilations <= max_dilations; dilations++ ) for( dilations = min_dilations; dilations <= max_dilations; dilations++ )
{ {
if (found) if (found)
@@ -368,7 +369,7 @@ int cvFindChessboardCorners( const void* arr, CvSize pattern_size,
cvRectangle( thresh_img, cvPoint(0,0), cvPoint(thresh_img->cols-1, cvRectangle( thresh_img, cvPoint(0,0), cvPoint(thresh_img->cols-1,
thresh_img->rows-1), CV_RGB(255,255,255), 3, 8); thresh_img->rows-1), CV_RGB(255,255,255), 3, 8);
quad_count = icvGenerateQuads( &quads, &corners, storage, thresh_img, flags ); quad_count = icvGenerateQuads( &quads, &corners, storage, thresh_img, flags, &max_quad_buf_size);
PRINTF("Quad count: %d/%d\n", quad_count, expected_corners_num); PRINTF("Quad count: %d/%d\n", quad_count, expected_corners_num);
} }
@@ -408,8 +409,8 @@ int cvFindChessboardCorners( const void* arr, CvSize pattern_size,
// allocate extra for adding in icvOrderFoundQuads // allocate extra for adding in icvOrderFoundQuads
cvFree(&quad_group); cvFree(&quad_group);
cvFree(&corner_group); cvFree(&corner_group);
quad_group = (CvCBQuad**)cvAlloc( sizeof(quad_group[0]) * (quad_count+quad_count / 2)); quad_group = (CvCBQuad**)cvAlloc( sizeof(quad_group[0]) * max_quad_buf_size);
corner_group = (CvCBCorner**)cvAlloc( sizeof(corner_group[0]) * (quad_count+quad_count / 2)*4 ); corner_group = (CvCBCorner**)cvAlloc( sizeof(corner_group[0]) * max_quad_buf_size * 4 );
for( group_idx = 0; ; group_idx++ ) for( group_idx = 0; ; group_idx++ )
{ {
@@ -424,7 +425,7 @@ int cvFindChessboardCorners( const void* arr, CvSize pattern_size,
// maybe delete or add some // maybe delete or add some
PRINTF("Starting ordering of inner quads\n"); PRINTF("Starting ordering of inner quads\n");
count = icvOrderFoundConnectedQuads(count, quad_group, &quad_count, &quads, &corners, count = icvOrderFoundConnectedQuads(count, quad_group, &quad_count, &quads, &corners,
pattern_size, storage ); pattern_size, max_quad_buf_size, storage );
PRINTF("Orig count: %d After ordering: %d\n", icount, count); PRINTF("Orig count: %d After ordering: %d\n", icount, count);
@@ -623,7 +624,7 @@ icvCheckBoardMonotony( CvPoint2D32f* corners, CvSize pattern_size )
static int static int
icvOrderFoundConnectedQuads( int quad_count, CvCBQuad **quads, icvOrderFoundConnectedQuads( int quad_count, CvCBQuad **quads,
int *all_count, CvCBQuad **all_quads, CvCBCorner **corners, int *all_count, CvCBQuad **all_quads, CvCBCorner **corners,
CvSize pattern_size, CvMemStorage* storage ) CvSize pattern_size, int max_quad_buf_size, CvMemStorage* storage )
{ {
cv::Ptr<CvMemStorage> temp_storage = cvCreateChildMemStorage( storage ); cv::Ptr<CvMemStorage> temp_storage = cvCreateChildMemStorage( storage );
CvSeq* stack = cvCreateSeq( 0, sizeof(*stack), sizeof(void*), temp_storage ); CvSeq* stack = cvCreateSeq( 0, sizeof(*stack), sizeof(void*), temp_storage );
@@ -803,15 +804,18 @@ icvOrderFoundConnectedQuads( int quad_count, CvCBQuad **quads,
if (found > 0) if (found > 0)
{ {
PRINTF("Found %d inner quads not connected to outer quads, repairing\n", found); PRINTF("Found %d inner quads not connected to outer quads, repairing\n", found);
for (int i=0; i<quad_count; i++) for (int i=0; i<quad_count && *all_count < max_quad_buf_size; i++)
{ {
if (quads[i]->count < 4 && quads[i]->ordered) if (quads[i]->count < 4 && quads[i]->ordered)
{ {
int added = icvAddOuterQuad(quads[i],quads,quad_count,all_quads,*all_count,corners); int added = icvAddOuterQuad(quads[i],quads,quad_count,all_quads,*all_count,corners, max_quad_buf_size);
*all_count += added; *all_count += added;
quad_count += added; quad_count += added;
} }
} }
if (*all_count >= max_quad_buf_size)
return 0;
} }
@@ -854,11 +858,11 @@ icvOrderFoundConnectedQuads( int quad_count, CvCBQuad **quads,
static int static int
icvAddOuterQuad( CvCBQuad *quad, CvCBQuad **quads, int quad_count, icvAddOuterQuad( CvCBQuad *quad, CvCBQuad **quads, int quad_count,
CvCBQuad **all_quads, int all_count, CvCBCorner **corners ) CvCBQuad **all_quads, int all_count, CvCBCorner **corners, int max_quad_buf_size )
{ {
int added = 0; int added = 0;
for (int i=0; i<4; i++) // find no-neighbor corners for (int i=0; i<4 && all_count < max_quad_buf_size; i++) // find no-neighbor corners
{ {
if (!quad->neighbors[i]) // ok, create and add neighbor if (!quad->neighbors[i]) // ok, create and add neighbor
{ {
@@ -1649,7 +1653,7 @@ static void icvFindQuadNeighbors( CvCBQuad *quads, int quad_count )
static int static int
icvGenerateQuads( CvCBQuad **out_quads, CvCBCorner **out_corners, icvGenerateQuads( CvCBQuad **out_quads, CvCBCorner **out_corners,
CvMemStorage *storage, CvMat *image, int flags ) CvMemStorage *storage, CvMat *image, int flags, int *max_quad_buf_size )
{ {
int quad_count = 0; int quad_count = 0;
cv::Ptr<CvMemStorage> temp_storage; cv::Ptr<CvMemStorage> temp_storage;
@@ -1754,8 +1758,9 @@ icvGenerateQuads( CvCBQuad **out_quads, CvCBCorner **out_corners,
cvEndFindContours( &scanner ); cvEndFindContours( &scanner );
// allocate quad & corner buffers // allocate quad & corner buffers
*out_quads = (CvCBQuad*)cvAlloc((root->total+root->total / 2) * sizeof((*out_quads)[0])); *max_quad_buf_size = MAX(1, (root->total+root->total / 2)) * 2;
*out_corners = (CvCBCorner*)cvAlloc((root->total+root->total / 2) * 4 * sizeof((*out_corners)[0])); *out_quads = (CvCBQuad*)cvAlloc(*max_quad_buf_size * sizeof((*out_quads)[0]));
*out_corners = (CvCBCorner*)cvAlloc(*max_quad_buf_size * 4 * sizeof((*out_corners)[0]));
// Create array of quads structures // Create array of quads structures
for( idx = 0; idx < root->total; idx++ ) for( idx = 0; idx < root->total; idx++ )
+4
View File
@@ -12,6 +12,7 @@
// //
// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. // Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
// Copyright (C) 2009, Willow Garage Inc., all rights reserved. // Copyright (C) 2009, Willow Garage Inc., all rights reserved.
// Copyright (C) 2015, Itseez Inc., all rights reserved.
// Third party copyrights are property of their respective owners. // Third party copyrights are property of their respective owners.
// //
// Redistribution and use in source and binary forms, with or without modification, // Redistribution and use in source and binary forms, with or without modification,
@@ -562,6 +563,9 @@ void CV_HomographyTest::run(int)
default: continue; default: continue;
} }
} }
delete[]src_data;
src_data = NULL;
} }
} }
@@ -1,3 +1,32 @@
/***********************************************************************
* Software License Agreement (BSD License)
*
* Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved.
* Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved.
*
* THE BSD LICENSE
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*************************************************************************/
#ifndef OPENCV_FLANN_DUMMY_H_ #ifndef OPENCV_FLANN_DUMMY_H_
#define OPENCV_FLANN_DUMMY_H_ #define OPENCV_FLANN_DUMMY_H_
+1 -1
View File
@@ -64,7 +64,7 @@ set(highgui_srcs
src/window.cpp src/window.cpp
) )
file(GLOB highgui_ext_hdrs "include/opencv2/${name}/*.hpp" "include/opencv2/${name}/*.h") file(GLOB highgui_ext_hdrs "include/opencv2/*.hpp" "include/opencv2/${name}/*.hpp" "include/opencv2/${name}/*.h")
if(HAVE_QT5) if(HAVE_QT5)
set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOMOC ON)
+4 -2
View File
@@ -238,10 +238,12 @@ CV_IMPL CvCapture * cvCreateCameraCapture (int index)
#endif #endif
#ifdef HAVE_GSTREAMER #ifdef HAVE_GSTREAMER
capture = cvCreateCapture_GStreamer(CV_CAP_GSTREAMER_V4L2, 0); capture = cvCreateCapture_GStreamer(CV_CAP_GSTREAMER_V4L2,
reinterpret_cast<char *>(index));
if (capture) if (capture)
return capture; return capture;
capture = cvCreateCapture_GStreamer(CV_CAP_GSTREAMER_V4L, 0); capture = cvCreateCapture_GStreamer(CV_CAP_GSTREAMER_V4L,
reinterpret_cast<char *>(index));
if (capture) if (capture)
return capture; return capture;
#endif #endif
+133 -65
View File
@@ -75,10 +75,13 @@
#if GST_VERSION_MAJOR == 0 #if GST_VERSION_MAJOR == 0
#define COLOR_ELEM "ffmpegcolorspace" #define COLOR_ELEM "ffmpegcolorspace"
#define COLOR_ELEM_NAME "ffmpegcsp"
#elif FULL_GST_VERSION < VERSION_NUM(1,5,0) #elif FULL_GST_VERSION < VERSION_NUM(1,5,0)
#define COLOR_ELEM "videoconvert" #define COLOR_ELEM "videoconvert"
#define COLOR_ELEM_NAME COLOR_ELEM
#else #else
#define COLOR_ELEM "autovideoconvert" #define COLOR_ELEM "autovideoconvert"
#define COLOR_ELEM_NAME COLOR_ELEM
#endif #endif
void toFraction(double decimal, double &numerator, double &denominator); void toFraction(double decimal, double &numerator, double &denominator);
@@ -142,6 +145,7 @@ protected:
gpointer data); gpointer data);
GstElement* pipeline; GstElement* pipeline;
GstElement* uridecodebin; GstElement* uridecodebin;
GstElement* v4l2src;
GstElement* color; GstElement* color;
GstElement* sink; GstElement* sink;
#if GST_VERSION_MAJOR > 0 #if GST_VERSION_MAJOR > 0
@@ -165,6 +169,7 @@ void CvCapture_GStreamer::init()
{ {
pipeline = NULL; pipeline = NULL;
uridecodebin = NULL; uridecodebin = NULL;
v4l2src = NULL;
color = NULL; color = NULL;
sink = NULL; sink = NULL;
#if GST_VERSION_MAJOR > 0 #if GST_VERSION_MAJOR > 0
@@ -371,9 +376,7 @@ void CvCapture_GStreamer::startPipeline()
if (status == GST_STATE_CHANGE_ASYNC) if (status == GST_STATE_CHANGE_ASYNC)
{ {
// wait for status update // wait for status update
GstState st1; status = gst_element_get_state(pipeline, NULL, NULL, GST_CLOCK_TIME_NONE);
GstState st2;
status = gst_element_get_state(pipeline, &st1, &st2, GST_CLOCK_TIME_NONE);
} }
if (status == GST_STATE_CHANGE_FAILURE) if (status == GST_STATE_CHANGE_FAILURE)
{ {
@@ -568,21 +571,39 @@ bool CvCapture_GStreamer::open( int type, const char* filename )
GstElementFactory * testfac; GstElementFactory * testfac;
GstStateChangeReturn status; GstStateChangeReturn status;
if (type == CV_CAP_GSTREAMER_V4L){ int cameraID = -1;
if (type == CV_CAP_GSTREAMER_V4L ||
type == CV_CAP_GSTREAMER_V4L2)
{
cameraID = static_cast<int>(reinterpret_cast<intptr_t>(filename));
}
std::stringstream stdstream;
std::string stdfilename;
if (type == CV_CAP_GSTREAMER_V4L)
{
testfac = gst_element_factory_find("v4lsrc"); testfac = gst_element_factory_find("v4lsrc");
if (!testfac){ if (!testfac){
return false; return false;
} }
g_object_unref(G_OBJECT(testfac)); g_object_unref(G_OBJECT(testfac));
filename = "v4lsrc ! "COLOR_ELEM" ! appsink";
stdstream << "v4lsrc device=/dev/video" << cameraID << " ! " << COLOR_ELEM << " ! appsink";
stdfilename = stdstream.str();
filename = stdfilename.c_str();
} }
if (type == CV_CAP_GSTREAMER_V4L2){ else if (type == CV_CAP_GSTREAMER_V4L2)
{
testfac = gst_element_factory_find("v4l2src"); testfac = gst_element_factory_find("v4l2src");
if (!testfac){ if (!testfac){
return false; return false;
} }
g_object_unref(G_OBJECT(testfac)); g_object_unref(G_OBJECT(testfac));
filename = "v4l2src ! "COLOR_ELEM" ! appsink";
stdstream << "v4l2src device=/dev/video" << cameraID << " ! " << COLOR_ELEM << " ! appsink";
stdfilename = stdstream.str();
filename = stdfilename.c_str();
} }
@@ -620,7 +641,9 @@ bool CvCapture_GStreamer::open( int type, const char* filename )
stream = true; stream = true;
manualpipeline = true; manualpipeline = true;
} }
} else { }
else
{
stream = true; stream = true;
uri = g_strdup(filename); uri = g_strdup(filename);
} }
@@ -641,68 +664,86 @@ bool CvCapture_GStreamer::open( int type, const char* filename )
uridecodebin = gst_element_make_from_uri(GST_URI_SRC, uri, "src", NULL); uridecodebin = gst_element_make_from_uri(GST_URI_SRC, uri, "src", NULL);
#endif #endif
element_from_uri = true; element_from_uri = true;
}else{ }
else
{
uridecodebin = gst_element_factory_make("uridecodebin", NULL); uridecodebin = gst_element_factory_make("uridecodebin", NULL);
g_object_set(G_OBJECT(uridecodebin), "uri", uri, NULL); g_object_set(G_OBJECT(uridecodebin), "uri", uri, NULL);
} }
g_free(protocol); g_free(protocol);
if(!uridecodebin) { if(!uridecodebin)
{
//fprintf(stderr, "GStreamer: Error opening bin: %s\n", err->message); //fprintf(stderr, "GStreamer: Error opening bin: %s\n", err->message);
close(); close();
return false; return false;
} }
} }
if(manualpipeline) if (manualpipeline)
{ {
GstIterator *it = NULL; GstIterator *it = gst_bin_iterate_elements(GST_BIN(uridecodebin));
#if GST_VERSION_MAJOR == 0
it = gst_bin_iterate_sinks(GST_BIN(uridecodebin));
if(gst_iterator_next(it, (gpointer *)&sink) != GST_ITERATOR_OK) {
CV_ERROR(CV_StsError, "GStreamer: cannot find appsink in manual pipeline\n");
return false;
}
#else
it = gst_bin_iterate_sinks (GST_BIN(uridecodebin));
gboolean done = FALSE;
GstElement *element = NULL; GstElement *element = NULL;
gboolean done = false;
gchar* name = NULL; gchar* name = NULL;
#if GST_VERSION_MAJOR > 0
GValue value = G_VALUE_INIT; GValue value = G_VALUE_INIT;
#endif
while (!done) { while (!done)
switch (gst_iterator_next (it, &value)) { {
#if GST_VERSION_MAJOR > 0
switch (gst_iterator_next (it, &value))
{
case GST_ITERATOR_OK: case GST_ITERATOR_OK:
element = GST_ELEMENT (g_value_get_object (&value)); element = GST_ELEMENT (g_value_get_object (&value));
name = gst_element_get_name(element); #else
if (name){ switch (gst_iterator_next (it, (gpointer *)&element))
if(strstr(name, "opencvsink") != NULL || strstr(name, "appsink") != NULL) { {
sink = GST_ELEMENT ( gst_object_ref (element) ); case GST_ITERATOR_OK:
done = TRUE; #endif
} name = gst_element_get_name(element);
g_free(name); if (name)
} {
g_value_unset (&value); if (strstr(name, "opencvsink") != NULL || strstr(name, "appsink") != NULL)
{
sink = GST_ELEMENT ( gst_object_ref (element) );
}
else if (strstr(name, COLOR_ELEM_NAME) != NULL)
{
color = GST_ELEMENT ( gst_object_ref (element) );
}
else if (strstr(name, "v4l") != NULL)
{
v4l2src = GST_ELEMENT ( gst_object_ref (element) );
}
g_free(name);
break; done = sink && color && v4l2src;
}
#if GST_VERSION_MAJOR > 0
g_value_unset (&value);
#endif
break;
case GST_ITERATOR_RESYNC: case GST_ITERATOR_RESYNC:
gst_iterator_resync (it); gst_iterator_resync (it);
break; break;
case GST_ITERATOR_ERROR: case GST_ITERATOR_ERROR:
case GST_ITERATOR_DONE: case GST_ITERATOR_DONE:
done = TRUE; done = TRUE;
break; break;
} }
} }
gst_iterator_free (it); gst_iterator_free (it);
if (!sink)
if (!sink){ {
CV_ERROR(CV_StsError, "GStreamer: cannot find appsink in manual pipeline\n"); CV_ERROR(CV_StsError, "GStreamer: cannot find appsink in manual pipeline\n");
return false; return false;
} }
#endif
pipeline = uridecodebin; pipeline = uridecodebin;
} }
else else
@@ -715,18 +756,23 @@ bool CvCapture_GStreamer::open( int type, const char* filename )
gst_bin_add_many(GST_BIN(pipeline), uridecodebin, color, sink, NULL); gst_bin_add_many(GST_BIN(pipeline), uridecodebin, color, sink, NULL);
if(element_from_uri) { if(element_from_uri)
if(!gst_element_link(uridecodebin, color)) { {
if(!gst_element_link(uridecodebin, color))
{
CV_ERROR(CV_StsError, "GStreamer: cannot link color -> sink\n"); CV_ERROR(CV_StsError, "GStreamer: cannot link color -> sink\n");
gst_object_unref(pipeline); gst_object_unref(pipeline);
pipeline = NULL; pipeline = NULL;
return false; return false;
} }
}else{ }
else
{
g_signal_connect(uridecodebin, "pad-added", G_CALLBACK(newPad), color); g_signal_connect(uridecodebin, "pad-added", G_CALLBACK(newPad), color);
} }
if(!gst_element_link(color, sink)) { if(!gst_element_link(color, sink))
{
CV_ERROR(CV_StsError, "GStreamer: cannot link color -> sink\n"); CV_ERROR(CV_StsError, "GStreamer: cannot link color -> sink\n");
gst_object_unref(pipeline); gst_object_unref(pipeline);
pipeline = NULL; pipeline = NULL;
@@ -754,16 +800,13 @@ bool CvCapture_GStreamer::open( int type, const char* filename )
gst_app_sink_set_caps(GST_APP_SINK(sink), caps); gst_app_sink_set_caps(GST_APP_SINK(sink), caps);
gst_caps_unref(caps); gst_caps_unref(caps);
// For video files only: set pipeline to PAUSED state to get its duration
if (file)
{ {
status = gst_element_set_state(GST_ELEMENT(pipeline), GST_STATE_PAUSED); status = gst_element_set_state(GST_ELEMENT(pipeline),
file ? GST_STATE_PAUSED : GST_STATE_PLAYING);
if (status == GST_STATE_CHANGE_ASYNC) if (status == GST_STATE_CHANGE_ASYNC)
{ {
// wait for status update // wait for status update
GstState st1; status = gst_element_get_state(pipeline, NULL, NULL, GST_CLOCK_TIME_NONE);
GstState st2;
status = gst_element_get_state(pipeline, &st1, &st2, GST_CLOCK_TIME_NONE);
} }
if (status == GST_STATE_CHANGE_FAILURE) if (status == GST_STATE_CHANGE_FAILURE)
{ {
@@ -814,14 +857,9 @@ bool CvCapture_GStreamer::open( int type, const char* filename )
fps = (double)num/(double)denom; fps = (double)num/(double)denom;
// GST_DEBUG_BIN_TO_DOT_FILE(GST_BIN(pipeline), GST_DEBUG_GRAPH_SHOW_ALL, "pipeline"); // GST_DEBUG_BIN_TO_DOT_FILE(GST_BIN(pipeline), GST_DEBUG_GRAPH_SHOW_ALL, "pipeline")
}
else stopPipeline();
{
duration = -1;
width = -1;
height = -1;
fps = -1;
} }
__END__; __END__;
@@ -852,7 +890,7 @@ double CvCapture_GStreamer::getProperty( int propId )
if(!pipeline) { if(!pipeline) {
CV_WARN("GStreamer: no pipeline"); CV_WARN("GStreamer: no pipeline");
return false; return 0;
} }
switch(propId) { switch(propId) {
@@ -861,7 +899,7 @@ double CvCapture_GStreamer::getProperty( int propId )
status = gst_element_query_position(sink, FORMAT, &value); status = gst_element_query_position(sink, FORMAT, &value);
if(!status) { if(!status) {
CV_WARN("GStreamer: unable to query position of stream"); CV_WARN("GStreamer: unable to query position of stream");
return false; return 0;
} }
return value * 1e-6; // nano seconds to milli seconds return value * 1e-6; // nano seconds to milli seconds
case CV_CAP_PROP_POS_FRAMES: case CV_CAP_PROP_POS_FRAMES:
@@ -869,7 +907,7 @@ double CvCapture_GStreamer::getProperty( int propId )
status = gst_element_query_position(sink, FORMAT, &value); status = gst_element_query_position(sink, FORMAT, &value);
if(!status) { if(!status) {
CV_WARN("GStreamer: unable to query position of stream"); CV_WARN("GStreamer: unable to query position of stream");
return false; return 0;
} }
return value; return value;
case CV_CAP_PROP_POS_AVI_RATIO: case CV_CAP_PROP_POS_AVI_RATIO:
@@ -877,7 +915,7 @@ double CvCapture_GStreamer::getProperty( int propId )
status = gst_element_query_position(sink, FORMAT, &value); status = gst_element_query_position(sink, FORMAT, &value);
if(!status) { if(!status) {
CV_WARN("GStreamer: unable to query position of stream"); CV_WARN("GStreamer: unable to query position of stream");
return false; return 0;
} }
return ((double) value) / GST_FORMAT_PERCENT_MAX; return ((double) value) / GST_FORMAT_PERCENT_MAX;
case CV_CAP_PROP_FRAME_WIDTH: case CV_CAP_PROP_FRAME_WIDTH:
@@ -896,6 +934,21 @@ double CvCapture_GStreamer::getProperty( int propId )
case CV_CAP_PROP_CONTRAST: case CV_CAP_PROP_CONTRAST:
case CV_CAP_PROP_SATURATION: case CV_CAP_PROP_SATURATION:
case CV_CAP_PROP_HUE: case CV_CAP_PROP_HUE:
if (v4l2src)
{
const gchar * propName =
propId == CV_CAP_PROP_BRIGHTNESS ? "brightness" :
propId == CV_CAP_PROP_CONTRAST ? "contrast" :
propId == CV_CAP_PROP_SATURATION ? "saturation" :
propId == CV_CAP_PROP_HUE ? "hue" : NULL;
if (propName)
{
gint32 value32 = 0;
g_object_get(G_OBJECT(v4l2src), propName, &value32, NULL);
return value32;
}
}
case CV_CAP_PROP_GAIN: case CV_CAP_PROP_GAIN:
case CV_CAP_PROP_CONVERT_RGB: case CV_CAP_PROP_CONVERT_RGB:
break; break;
@@ -912,7 +965,7 @@ double CvCapture_GStreamer::getProperty( int propId )
#undef FORMAT #undef FORMAT
return false; return 0;
} }
/*! /*!
@@ -991,6 +1044,21 @@ bool CvCapture_GStreamer::setProperty( int propId, double value )
case CV_CAP_PROP_CONTRAST: case CV_CAP_PROP_CONTRAST:
case CV_CAP_PROP_SATURATION: case CV_CAP_PROP_SATURATION:
case CV_CAP_PROP_HUE: case CV_CAP_PROP_HUE:
if (v4l2src)
{
const gchar * propName =
propId == CV_CAP_PROP_BRIGHTNESS ? "brightness" :
propId == CV_CAP_PROP_CONTRAST ? "contrast" :
propId == CV_CAP_PROP_SATURATION ? "saturation" :
propId == CV_CAP_PROP_HUE ? "hue" : NULL;
if (propName)
{
gint32 value32 = cv::saturate_cast<gint32>(value);
g_object_set(G_OBJECT(v4l2src), propName, &value32, NULL);
return true;
}
}
case CV_CAP_PROP_GAIN: case CV_CAP_PROP_GAIN:
case CV_CAP_PROP_CONVERT_RGB: case CV_CAP_PROP_CONVERT_RGB:
break; break;
+6 -1
View File
@@ -221,7 +221,12 @@ bool TiffDecoder::readData( Mat& img )
(!is_tiled && tile_height0 == std::numeric_limits<uint32>::max()) ) (!is_tiled && tile_height0 == std::numeric_limits<uint32>::max()) )
tile_height0 = m_height; tile_height0 = m_height;
const size_t buffer_size = bpp * ncn * tile_height0 * tile_width0; if(dst_bpp == 8) {
// we will use TIFFReadRGBA* functions, so allocate temporary buffer for 32bit RGBA
bpp = 8;
ncn = 4;
}
const size_t buffer_size = (bpp/bitsPerByte) * ncn * tile_height0 * tile_width0;
AutoBuffer<uchar> _buffer( buffer_size ); AutoBuffer<uchar> _buffer( buffer_size );
uchar* buffer = _buffer; uchar* buffer = _buffer;
ushort* buffer16 = (ushort*)buffer; ushort* buffer16 = (ushort*)buffer;
+4
View File
@@ -396,6 +396,10 @@ TEST(Highgui_Video_parallel_writers_and_readers, accuracy)
if (code == 1) if (code == 1)
std::cerr << "Couldn't delete " << *i << std::endl; std::cerr << "Couldn't delete " << *i << std::endl;
} }
// delete the readers
for (std::vector<VideoCapture *>::iterator i = readers.begin(), end = readers.end(); i != end; ++i)
delete *i;
} }
#endif #endif
+3 -1
View File
@@ -22,7 +22,9 @@ class NewOpenCVTests(unittest.TestCase):
def get_sample(self, filename, iscolor = cv.CV_LOAD_IMAGE_COLOR): def get_sample(self, filename, iscolor = cv.CV_LOAD_IMAGE_COLOR):
if not filename in self.image_cache: if not filename in self.image_cache:
filedata = urllib.urlopen("https://raw.github.com/Itseez/opencv/2.4/" + filename).read() filedata = urllib.urlopen("https://raw.github.com/Itseez/opencv/2.4/" + filename).read()
self.image_cache[filename] = cv2.imdecode(np.fromstring(filedata, dtype=np.uint8), iscolor) image = cv2.imdecode(np.fromstring(filedata, dtype=np.uint8), iscolor)
self.assertFalse(image is None)
self.image_cache[filename] = image
return self.image_cache[filename] return self.image_cache[filename]
def setUp(self): def setUp(self):
+9 -3
View File
@@ -22,7 +22,7 @@ endif()
if(INSTALL_C_EXAMPLES) if(INSTALL_C_EXAMPLES)
install(FILES "CMakeLists.txt" install(FILES "CMakeLists.txt"
DESTINATION ${OPENCV_SAMPLES_SRC_INSTALL_PATH} DESTINATION ${OPENCV_SAMPLES_SRC_INSTALL_PATH}
PERMISSIONS OWNER_READ GROUP_READ WORLD_READ COMPONENT samples) PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ COMPONENT samples)
endif() endif()
if(INSTALL_PYTHON_EXAMPLES) if(INSTALL_PYTHON_EXAMPLES)
@@ -68,8 +68,14 @@ endif()
add_subdirectory(c) add_subdirectory(c)
add_subdirectory(cpp) add_subdirectory(cpp)
add_subdirectory(ocl) ocv_check_dependencies(opencv_ocl)
add_subdirectory(gpu) if (OCV_DEPENDENCIES_FOUND)
add_subdirectory(ocl)
endif()
ocv_check_dependencies(opencv_gpu)
if (OCV_DEPENDENCIES_FOUND)
add_subdirectory(gpu)
endif()
# #
# END OF BUILD CASE 2: Build samples with library binaries # END OF BUILD CASE 2: Build samples with library binaries
+6 -5
View File
@@ -4,7 +4,7 @@
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
SET(OPENCV_C_SAMPLES_REQUIRED_DEPS opencv_core opencv_flann opencv_imgproc SET(OPENCV_C_SAMPLES_REQUIRED_DEPS opencv_core opencv_flann opencv_imgproc
opencv_highgui opencv_ml opencv_video opencv_objdetect opencv_photo opencv_nonfree opencv_highgui opencv_ml opencv_video opencv_objdetect opencv_photo
opencv_features2d opencv_calib3d opencv_legacy opencv_contrib) opencv_features2d opencv_calib3d opencv_legacy opencv_contrib)
ocv_check_dependencies(${OPENCV_C_SAMPLES_REQUIRED_DEPS}) ocv_check_dependencies(${OPENCV_C_SAMPLES_REQUIRED_DEPS})
@@ -16,7 +16,7 @@ if(BUILD_EXAMPLES AND OCV_DEPENDENCIES_FOUND)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-function") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-function")
endif() endif()
ocv_include_modules(${OPENCV_C_SAMPLES_REQUIRED_DEPS}) ocv_include_modules(${OPENCV_C_SAMPLES_REQUIRED_DEPS} opencv_nonfree)
# --------------------------------------------- # ---------------------------------------------
# Define executable targets # Define executable targets
@@ -52,8 +52,9 @@ if(BUILD_EXAMPLES AND OCV_DEPENDENCIES_FOUND)
endif() endif()
if (OCV_DEPENDENCIES_FOUND AND INSTALL_C_EXAMPLES AND NOT WIN32) if (OCV_DEPENDENCIES_FOUND AND INSTALL_C_EXAMPLES AND NOT WIN32)
file(GLOB C_SAMPLES *.c *.cpp *.jpg *.png *.data makefile.* build_all.sh *.dsp *.cmd *.txt) file(GLOB C_SAMPLES *.c *.cpp *.jpg *.png *.data makefile.* *.cmd *.txt)
install(FILES ${C_SAMPLES} install(FILES ${C_SAMPLES}
DESTINATION ${OPENCV_SAMPLES_SRC_INSTALL_PATH}/c DESTINATION "${OPENCV_SAMPLES_SRC_INSTALL_PATH}/c"
PERMISSIONS OWNER_READ GROUP_READ WORLD_READ COMPONENT samples) PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ COMPONENT samples)
install(PROGRAMS build_all.sh DESTINATION "${OPENCV_SAMPLES_SRC_INSTALL_PATH}/c" COMPONENT samples)
endif () endif ()
+24 -10
View File
@@ -4,19 +4,31 @@
* Author: Liu Liu * Author: Liu Liu
* liuliu.1987+opencv@gmail.com * liuliu.1987+opencv@gmail.com
*/ */
#include "opencv2/objdetect/objdetect.hpp"
#include "opencv2/features2d/features2d.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/calib3d/calib3d.hpp"
#include "opencv2/nonfree/nonfree.hpp"
#include "opencv2/imgproc/imgproc_c.h"
#include "opencv2/legacy/legacy.hpp"
#include "opencv2/legacy/compat.hpp"
#include <iostream> #include "opencv2/opencv_modules.hpp"
#include <vector>
#include <stdio.h> #include <stdio.h>
#ifndef HAVE_OPENCV_NONFREE
int main(int, char**)
{
printf("The sample requires nonfree module that is not available in your OpenCV distribution.\n");
return -1;
}
#else
# include "opencv2/objdetect/objdetect.hpp"
# include "opencv2/features2d/features2d.hpp"
# include "opencv2/highgui/highgui.hpp"
# include "opencv2/calib3d/calib3d.hpp"
# include "opencv2/nonfree/nonfree.hpp"
# include "opencv2/imgproc/imgproc_c.h"
# include "opencv2/legacy/legacy.hpp"
# include "opencv2/legacy/compat.hpp"
# include <vector>
using namespace std; using namespace std;
static void help() static void help()
{ {
@@ -320,3 +332,5 @@ int main(int argc, char** argv)
return 0; return 0;
} }
#endif
+23 -8
View File
@@ -1,12 +1,25 @@
#include "opencv2/highgui/highgui.hpp" #include "opencv2/opencv_modules.hpp"
#include "opencv2/core/core.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/features2d/features2d.hpp"
#include "opencv2/nonfree/nonfree.hpp"
#include "opencv2/legacy/legacy.hpp"
#include <iostream> #include <iostream>
#include <fstream>
#ifndef HAVE_OPENCV_NONFREE
int main(int, char**)
{
std::cout << "The sample requires nonfree module that is not available in your OpenCV distribution." << std::endl;
return -1;
}
#else
# include "opencv2/highgui/highgui.hpp"
# include "opencv2/core/core.hpp"
# include "opencv2/imgproc/imgproc.hpp"
# include "opencv2/features2d/features2d.hpp"
# include "opencv2/nonfree/nonfree.hpp"
# include "opencv2/legacy/legacy.hpp"
# include <iostream>
# include <fstream>
using namespace std; using namespace std;
using namespace cv; using namespace cv;
@@ -164,3 +177,5 @@ int main( int argc, char **argv )
return 0; return 0;
} }
#endif
+22 -8
View File
@@ -7,16 +7,28 @@
* *
*/ */
#include "opencv2/imgproc/imgproc.hpp" #include "opencv2/opencv_modules.hpp"
#include "opencv2/features2d/features2d.hpp" #include <stdio.h>
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc_c.h" #ifndef HAVE_OPENCV_NONFREE
#include "opencv2/nonfree/nonfree.hpp"
#include "opencv2/legacy/legacy.hpp" int main(int, char**)
#include "opencv2/legacy/compat.hpp" {
printf("The sample requires nonfree module that is not available in your OpenCV distribution.\n");
return -1;
}
#else
# include "opencv2/imgproc/imgproc.hpp"
# include "opencv2/features2d/features2d.hpp"
# include "opencv2/highgui/highgui.hpp"
# include "opencv2/imgproc/imgproc_c.h"
# include "opencv2/nonfree/nonfree.hpp"
# include "opencv2/legacy/legacy.hpp"
# include "opencv2/legacy/compat.hpp"
#include <string> #include <string>
#include <stdio.h>
static void help() static void help()
{ {
@@ -116,3 +128,5 @@ Mat DrawCorrespondences(const Mat& img1, const vector<KeyPoint>& features1, cons
return img_corr; return img_corr;
} }
#endif
+6 -5
View File
@@ -4,8 +4,9 @@
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
SET(OPENCV_CPP_SAMPLES_REQUIRED_DEPS opencv_core opencv_flann opencv_imgproc SET(OPENCV_CPP_SAMPLES_REQUIRED_DEPS opencv_core opencv_flann opencv_imgproc
opencv_highgui opencv_ml opencv_video opencv_objdetect opencv_photo opencv_nonfree opencv_highgui opencv_ml opencv_video opencv_objdetect opencv_photo
opencv_features2d opencv_calib3d opencv_legacy opencv_contrib opencv_stitching opencv_videostab) opencv_features2d opencv_calib3d opencv_legacy opencv_contrib
opencv_stitching opencv_videostab)
ocv_check_dependencies(${OPENCV_CPP_SAMPLES_REQUIRED_DEPS}) ocv_check_dependencies(${OPENCV_CPP_SAMPLES_REQUIRED_DEPS})
@@ -14,7 +15,7 @@ if(BUILD_EXAMPLES AND OCV_DEPENDENCIES_FOUND)
project(cpp_samples) project(cpp_samples)
ocv_include_directories("${OpenCV_SOURCE_DIR}/include")#for opencv.hpp ocv_include_directories("${OpenCV_SOURCE_DIR}/include")#for opencv.hpp
ocv_include_modules(${OPENCV_CPP_SAMPLES_REQUIRED_DEPS}) ocv_include_modules(${OPENCV_CPP_SAMPLES_REQUIRED_DEPS} opencv_nonfree)
if(HAVE_opencv_gpu) if(HAVE_opencv_gpu)
ocv_include_directories("${OpenCV_SOURCE_DIR}/modules/gpu/include") ocv_include_directories("${OpenCV_SOURCE_DIR}/modules/gpu/include")
@@ -93,6 +94,6 @@ endif()
if (OCV_DEPENDENCIES_FOUND AND INSTALL_C_EXAMPLES AND NOT WIN32) if (OCV_DEPENDENCIES_FOUND AND INSTALL_C_EXAMPLES AND NOT WIN32)
file(GLOB C_SAMPLES *.c *.cpp *.jpg *.png *.data makefile.* build_all.sh *.dsp *.cmd *.txt) file(GLOB C_SAMPLES *.c *.cpp *.jpg *.png *.data makefile.* build_all.sh *.dsp *.cmd *.txt)
install(FILES ${C_SAMPLES} install(FILES ${C_SAMPLES}
DESTINATION ${OPENCV_SAMPLES_SRC_INSTALL_PATH}/cpp DESTINATION "${OPENCV_SAMPLES_SRC_INSTALL_PATH}/cpp"
PERMISSIONS OWNER_READ GROUP_READ WORLD_READ COMPONENT samples) PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ COMPONENT samples)
endif() endif()
+36 -22
View File
@@ -1,29 +1,41 @@
#include "opencv2/opencv_modules.hpp" #include "opencv2/opencv_modules.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/features2d/features2d.hpp"
#include "opencv2/nonfree/nonfree.hpp"
#include "opencv2/ml/ml.hpp"
#ifdef HAVE_OPENCV_OCL
#define _OCL_SVM_ 1 //select whether using ocl::svm method or not, default is using
#include "opencv2/ocl/ocl.hpp"
#endif
#include <fstream>
#include <iostream> #include <iostream>
#include <memory>
#include <functional>
#if defined WIN32 || defined _WIN32 #ifndef HAVE_OPENCV_NONFREE
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#undef min
#undef max
#include "sys/types.h"
#endif
#include <sys/stat.h>
#define DEBUG_DESC_PROGRESS int main(int, char**)
{
std::cout << "The sample requires nonfree module that is not available in your OpenCV distribution." << std::endl;
return -1;
}
#else
# include "opencv2/highgui/highgui.hpp"
# include "opencv2/imgproc/imgproc.hpp"
# include "opencv2/features2d/features2d.hpp"
# include "opencv2/nonfree/nonfree.hpp"
# include "opencv2/ml/ml.hpp"
# ifdef HAVE_OPENCV_OCL
# define _OCL_SVM_ 1 //select whether using ocl::svm method or not, default is using
# include "opencv2/ocl/ocl.hpp"
# endif
# include <fstream>
# include <memory>
# include <functional>
# if defined WIN32 || defined _WIN32
# define WIN32_LEAN_AND_MEAN
# include <windows.h>
# undef min
# undef max
# include "sys/types.h"
# endif
# include <sys/stat.h>
# define DEBUG_DESC_PROGRESS
using namespace cv; using namespace cv;
using namespace std; using namespace std;
@@ -2623,3 +2635,5 @@ int main(int argc, char** argv)
} }
return 0; return 0;
} }
#endif
+10 -3
View File
@@ -1,8 +1,11 @@
#include "opencv2/opencv_modules.hpp"
#include "opencv2/highgui/highgui.hpp" #include "opencv2/highgui/highgui.hpp"
#include "opencv2/calib3d/calib3d.hpp" #include "opencv2/calib3d/calib3d.hpp"
#include "opencv2/imgproc/imgproc.hpp" #include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/features2d/features2d.hpp" #include "opencv2/features2d/features2d.hpp"
#include "opencv2/nonfree/nonfree.hpp" #ifdef HAVE_OPENCV_NONFREE
# include "opencv2/nonfree/nonfree.hpp"
#endif
#include <iostream> #include <iostream>
@@ -17,14 +20,14 @@ static void help(char** argv)
<< "Case1: second image is obtained from the first (given) image using random generated homography matrix\n" << "Case1: second image is obtained from the first (given) image using random generated homography matrix\n"
<< argv[0] << " [detectorType] [descriptorType] [matcherType] [matcherFilterType] [image] [evaluate(0 or 1)]\n" << argv[0] << " [detectorType] [descriptorType] [matcherType] [matcherFilterType] [image] [evaluate(0 or 1)]\n"
<< "Example of case1:\n" << "Example of case1:\n"
<< "./descriptor_extractor_matcher SURF SURF FlannBased NoneFilter cola.jpg 0\n" << "./descriptor_extractor_matcher ORB ORB FlannBased NoneFilter cola.jpg 0\n"
<< "\n" << "\n"
<< "Case2: both images are given. If ransacReprojThreshold>=0 then homography matrix are calculated\n" << "Case2: both images are given. If ransacReprojThreshold>=0 then homography matrix are calculated\n"
<< argv[0] << " [detectorType] [descriptorType] [matcherType] [matcherFilterType] [image1] [image2] [ransacReprojThreshold]\n" << argv[0] << " [detectorType] [descriptorType] [matcherType] [matcherFilterType] [image1] [image2] [ransacReprojThreshold]\n"
<< "\n" << "\n"
<< "Matches are filtered using homography matrix in case1 and case2 (if ransacReprojThreshold>=0)\n" << "Matches are filtered using homography matrix in case1 and case2 (if ransacReprojThreshold>=0)\n"
<< "Example of case2:\n" << "Example of case2:\n"
<< "./descriptor_extractor_matcher SURF SURF BruteForce CrossCheckFilter cola1.jpg cola2.jpg 3\n" << "./descriptor_extractor_matcher ORB ORB BruteForce CrossCheckFilter cola1.jpg cola2.jpg 3\n"
<< "\n" << "\n"
<< "Possible detectorType values: see in documentation on createFeatureDetector().\n" << "Possible detectorType values: see in documentation on createFeatureDetector().\n"
<< "Possible descriptorType values: see in documentation on createDescriptorExtractor().\n" << "Possible descriptorType values: see in documentation on createDescriptorExtractor().\n"
@@ -239,7 +242,11 @@ int main(int argc, char** argv)
return -1; return -1;
} }
#ifdef HAVE_OPENCV_NONFREE
cv::initModule_nonfree(); cv::initModule_nonfree();
#else
cout << "Warning: OpenCV is built without nonfree support SIFT, SURF and some other algorithms are not available." << endl;
#endif
bool isWarpPerspective = argc == 7; bool isWarpPerspective = argc == 7;
double ransacReprojThreshold = -1; double ransacReprojThreshold = -1;
+16 -2
View File
@@ -49,9 +49,21 @@
// //
//M*/ //M*/
#include "opencv2/opencv_modules.hpp"
#include <iostream>
#include "opencv2/opencv.hpp" #ifndef HAVE_OPENCV_NONFREE
#include "opencv2/nonfree/nonfree.hpp"
int main(int, char**)
{
std::cout << "The sample requires nonfree module that is not available in your OpenCV distribution." << std::endl;
return -1;
}
#else
# include "opencv2/opencv.hpp"
# include "opencv2/nonfree/nonfree.hpp"
using namespace cv; using namespace cv;
using namespace std; using namespace std;
@@ -212,3 +224,5 @@ int main(int argc, char * argv[]) {
return 0; return 0;
} }
#endif
+21 -7
View File
@@ -34,15 +34,27 @@
// or tort (including negligence or otherwise) arising in any way out of // or tort (including negligence or otherwise) arising in any way out of
// the use of this software, even if advised of the possibility of such damage. // the use of this software, even if advised of the possibility of such damage.
#include "opencv2/opencv_modules.hpp"
#include <iostream> #include <iostream>
#include <string>
#include <vector>
#include <opencv2/core/core.hpp> #ifndef HAVE_OPENCV_NONFREE
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/features2d/features2d.hpp> int main(int, char**)
#include <opencv2/nonfree/features2d.hpp> {
#include <opencv2/legacy/legacy.hpp> std::cout << "The sample requires nonfree module that is not available in your OpenCV distribution." << std::endl;
return -1;
}
#else
# include <string>
# include <vector>
# include <opencv2/core/core.hpp>
# include <opencv2/highgui/highgui.hpp>
# include <opencv2/features2d/features2d.hpp>
# include <opencv2/nonfree/features2d.hpp>
# include <opencv2/legacy/legacy.hpp>
using namespace cv; using namespace cv;
@@ -126,3 +138,5 @@ int main( int argc, char** argv ) {
imshow("matches", imgMatch); imshow("matches", imgMatch);
waitKey(0); waitKey(0);
} }
#endif
+20 -6
View File
@@ -1,11 +1,23 @@
#include "opencv2/calib3d/calib3d.hpp" #include "opencv2/opencv_modules.hpp"
#include "opencv2/features2d/features2d.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/nonfree/nonfree.hpp"
#include <cstdio> #include <cstdio>
#ifndef HAVE_OPENCV_NONFREE
int main(int, char**)
{
printf("The sample requires nonfree module that is not available in your OpenCV distribution.\n");
return -1;
}
#else
# include "opencv2/opencv_modules.hpp"
# include "opencv2/calib3d/calib3d.hpp"
# include "opencv2/features2d/features2d.hpp"
# include "opencv2/highgui/highgui.hpp"
# include "opencv2/imgproc/imgproc.hpp"
# include "opencv2/nonfree/nonfree.hpp"
using namespace cv; using namespace cv;
static void help() static void help()
@@ -91,3 +103,5 @@ Mat DrawCorrespondences(const Mat& img1, const vector<KeyPoint>& features1, cons
return img_corr; return img_corr;
} }
#endif
+18 -4
View File
@@ -1,8 +1,20 @@
#include "opencv2/opencv_modules.hpp"
#include <stdio.h> #include <stdio.h>
#include "opencv2/core/core.hpp"
#include "opencv2/features2d/features2d.hpp" #ifndef HAVE_OPENCV_NONFREE
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/nonfree/nonfree.hpp" int main(int, char**)
{
printf("The sample requires nonfree module that is not available in your OpenCV distribution.\n");
return -1;
}
#else
# include "opencv2/core/core.hpp"
# include "opencv2/features2d/features2d.hpp"
# include "opencv2/highgui/highgui.hpp"
# include "opencv2/nonfree/nonfree.hpp"
using namespace cv; using namespace cv;
@@ -56,3 +68,5 @@ int main(int argc, char** argv)
return 0; return 0;
} }
#endif
@@ -4,12 +4,23 @@
* @author A. Huaman * @author A. Huaman
*/ */
#include "opencv2/opencv_modules.hpp"
#include <stdio.h> #include <stdio.h>
#include <iostream>
#include "opencv2/core/core.hpp" #ifndef HAVE_OPENCV_NONFREE
#include "opencv2/features2d/features2d.hpp"
#include "opencv2/highgui/highgui.hpp" int main(int, char**)
#include "opencv2/nonfree/features2d.hpp" {
printf("The sample requires nonfree module that is not available in your OpenCV distribution.\n");
return -1;
}
#else
# include "opencv2/core/core.hpp"
# include "opencv2/features2d/features2d.hpp"
# include "opencv2/highgui/highgui.hpp"
# include "opencv2/nonfree/features2d.hpp"
using namespace cv; using namespace cv;
@@ -28,7 +39,7 @@ int main( int argc, char** argv )
Mat img_2 = imread( argv[2], CV_LOAD_IMAGE_GRAYSCALE ); Mat img_2 = imread( argv[2], CV_LOAD_IMAGE_GRAYSCALE );
if( !img_1.data || !img_2.data ) if( !img_1.data || !img_2.data )
{ std::cout<< " --(!) Error reading images " << std::endl; return -1; } { printf(" --(!) Error reading images \n"); return -1; }
//-- Step 1: Detect the keypoints using SURF Detector //-- Step 1: Detect the keypoints using SURF Detector
int minHessian = 400; int minHessian = 400;
@@ -97,4 +108,6 @@ int main( int argc, char** argv )
* @function readme * @function readme
*/ */
void readme() void readme()
{ std::cout << " Usage: ./SURF_FlannMatcher <img1> <img2>" << std::endl; } { printf(" Usage: ./SURF_FlannMatcher <img1> <img2>\n"); }
#endif
@@ -4,13 +4,24 @@
* @author A. Huaman * @author A. Huaman
*/ */
#include "opencv2/opencv_modules.hpp"
#include <stdio.h> #include <stdio.h>
#include <iostream>
#include "opencv2/core/core.hpp" #ifndef HAVE_OPENCV_NONFREE
#include "opencv2/features2d/features2d.hpp"
#include "opencv2/highgui/highgui.hpp" int main(int, char**)
#include "opencv2/calib3d/calib3d.hpp" {
#include "opencv2/nonfree/features2d.hpp" printf("The sample requires nonfree module that is not available in your OpenCV distribution.\n");
return -1;
}
#else
# include "opencv2/core/core.hpp"
# include "opencv2/features2d/features2d.hpp"
# include "opencv2/highgui/highgui.hpp"
# include "opencv2/calib3d/calib3d.hpp"
# include "opencv2/nonfree/features2d.hpp"
using namespace cv; using namespace cv;
@@ -29,7 +40,7 @@ int main( int argc, char** argv )
Mat img_scene = imread( argv[2], CV_LOAD_IMAGE_GRAYSCALE ); Mat img_scene = imread( argv[2], CV_LOAD_IMAGE_GRAYSCALE );
if( !img_object.data || !img_scene.data ) if( !img_object.data || !img_scene.data )
{ std::cout<< " --(!) Error reading images " << std::endl; return -1; } { printf(" --(!) Error reading images \n"); return -1; }
//-- Step 1: Detect the keypoints using SURF Detector //-- Step 1: Detect the keypoints using SURF Detector
int minHessian = 400; int minHessian = 400;
@@ -121,4 +132,6 @@ int main( int argc, char** argv )
* @function readme * @function readme
*/ */
void readme() void readme()
{ std::cout << " Usage: ./SURF_Homography <img1> <img2>" << std::endl; } { printf(" Usage: ./SURF_Homography <img1> <img2>\n"); }
#endif
@@ -4,12 +4,23 @@
* @author A. Huaman * @author A. Huaman
*/ */
#include "opencv2/opencv_modules.hpp"
#include <stdio.h> #include <stdio.h>
#include <iostream>
#include "opencv2/core/core.hpp" #ifndef HAVE_OPENCV_NONFREE
#include "opencv2/features2d/features2d.hpp"
#include "opencv2/highgui/highgui.hpp" int main(int, char**)
#include "opencv2/nonfree/features2d.hpp" {
printf("The sample requires nonfree module that is not available in your OpenCV distribution.\n");
return -1;
}
#else
# include "opencv2/core/core.hpp"
# include "opencv2/features2d/features2d.hpp"
# include "opencv2/highgui/highgui.hpp"
# include "opencv2/nonfree/features2d.hpp"
using namespace cv; using namespace cv;
@@ -69,4 +80,6 @@ int main( int argc, char** argv )
* @function readme * @function readme
*/ */
void readme() void readme()
{ std::cout << " Usage: ./SURF_descriptor <img1> <img2>" << std::endl; } { printf(" Usage: ./SURF_descriptor <img1> <img2>\n"); }
#endif
@@ -4,12 +4,23 @@
* @author A. Huaman * @author A. Huaman
*/ */
#include <stdio.h> #include "opencv2/opencv_modules.hpp"
#include <iostream> #include <iostream>
#include "opencv2/core/core.hpp"
#include "opencv2/features2d/features2d.hpp" #ifndef HAVE_OPENCV_NONFREE
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/nonfree/features2d.hpp" int main(int, char**)
{
std::cout << "The sample requires nonfree module that is not available in your OpenCV distribution." << std::endl;
return -1;
}
#else
# include "opencv2/core/core.hpp"
# include "opencv2/features2d/features2d.hpp"
# include "opencv2/highgui/highgui.hpp"
# include "opencv2/nonfree/features2d.hpp"
using namespace cv; using namespace cv;
@@ -60,3 +71,5 @@ int main( int argc, char** argv )
*/ */
void readme() void readme()
{ std::cout << " Usage: ./SURF_detector <img1> <img2>" << std::endl; } { std::cout << " Usage: ./SURF_detector <img1> <img2>" << std::endl; }
#endif
+2 -2
View File
@@ -112,6 +112,6 @@ if (OCV_DEPENDENCIES_FOUND AND INSTALL_C_EXAMPLES AND NOT WIN32)
list_filterout(install_list ".*driver_api_stereo_multi.cpp") list_filterout(install_list ".*driver_api_stereo_multi.cpp")
endif() endif()
install(FILES ${install_list} install(FILES ${install_list}
DESTINATION ${OPENCV_SAMPLES_SRC_INSTALL_PATH}/gpu DESTINATION "${OPENCV_SAMPLES_SRC_INSTALL_PATH}/gpu"
PERMISSIONS OWNER_READ GROUP_READ WORLD_READ COMPONENT samples) PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ COMPONENT samples)
endif() endif()
+2 -2
View File
@@ -29,7 +29,7 @@ endif()
if(INSTALL_C_EXAMPLES AND NOT WIN32) if(INSTALL_C_EXAMPLES AND NOT WIN32)
file(GLOB GPU_FILES performance/*.cpp performance/*.h performance/CMakeLists.txt) file(GLOB GPU_FILES performance/*.cpp performance/*.h performance/CMakeLists.txt)
install(FILES ${GPU_FILES} install(FILES ${GPU_FILES}
DESTINATION ${OPENCV_SAMPLES_SRC_INSTALL_PATH}/gpu/performance DESTINATION "${OPENCV_SAMPLES_SRC_INSTALL_PATH}/gpu/performance"
PERMISSIONS OWNER_READ GROUP_READ WORLD_READ PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
COMPONENT samples) COMPONENT samples)
endif() endif()
+5 -6
View File
@@ -1,7 +1,6 @@
SET(OPENCV_OCL_SAMPLES_REQUIRED_DEPS opencv_core opencv_flann opencv_imgproc opencv_highgui SET(OPENCV_OCL_SAMPLES_REQUIRED_DEPS opencv_core opencv_flann opencv_imgproc opencv_highgui
opencv_ml opencv_video opencv_objdetect opencv_features2d opencv_ml opencv_video opencv_objdetect opencv_features2d
opencv_calib3d opencv_legacy opencv_contrib opencv_ocl opencv_calib3d opencv_legacy opencv_contrib opencv_ocl)
opencv_nonfree)
ocv_check_dependencies(${OPENCV_OCL_SAMPLES_REQUIRED_DEPS}) ocv_check_dependencies(${OPENCV_OCL_SAMPLES_REQUIRED_DEPS})
@@ -11,7 +10,7 @@ if(BUILD_EXAMPLES AND OCV_DEPENDENCIES_FOUND)
project("${project}_samples") project("${project}_samples")
ocv_include_modules(${OPENCV_OCL_SAMPLES_REQUIRED_DEPS}) ocv_include_modules(${OPENCV_OCL_SAMPLES_REQUIRED_DEPS} opencv_nonfree)
if(HAVE_OPENCL) if(HAVE_OPENCL)
ocv_include_directories(${OPENCL_INCLUDE_DIR}) ocv_include_directories(${OPENCL_INCLUDE_DIR})
@@ -52,8 +51,8 @@ if(BUILD_EXAMPLES AND OCV_DEPENDENCIES_FOUND)
endif() endif()
if (OCV_DEPENDENCIES_FOUND AND INSTALL_C_EXAMPLES AND NOT WIN32) if (OCV_DEPENDENCIES_FOUND AND INSTALL_C_EXAMPLES AND NOT WIN32)
file(GLOB install_list *.c *.cpp *.jpg *.png *.data makefile.* build_all.sh *.dsp *.cmd *.txt) file(GLOB install_list *.c *.cpp *.jpg *.png *.data makefile.* *.txt)
install(FILES ${install_list} install(FILES ${install_list}
DESTINATION ${OPENCV_SAMPLES_SRC_INSTALL_PATH}/ocl DESTINATION "${OPENCV_SAMPLES_SRC_INSTALL_PATH}/ocl"
PERMISSIONS OWNER_READ GROUP_READ WORLD_READ COMPONENT samples) PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ COMPONENT samples)
endif() endif()
+20 -7
View File
@@ -1,11 +1,22 @@
#include "opencv2/opencv_modules.hpp"
#include <iostream> #include <iostream>
#include <stdio.h>
#include "opencv2/core/core.hpp" #ifndef HAVE_OPENCV_NONFREE
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/ocl/ocl.hpp" int main(int, char**)
#include "opencv2/nonfree/ocl.hpp" {
#include "opencv2/calib3d/calib3d.hpp" std::cout << "The sample requires nonfree module that is not available in your OpenCV distribution." << std::endl;
#include "opencv2/nonfree/nonfree.hpp" return -1;
}
#else
# include "opencv2/core/core.hpp"
# include "opencv2/highgui/highgui.hpp"
# include "opencv2/ocl/ocl.hpp"
# include "opencv2/nonfree/ocl.hpp"
# include "opencv2/calib3d/calib3d.hpp"
# include "opencv2/nonfree/nonfree.hpp"
using namespace cv; using namespace cv;
using namespace cv::ocl; using namespace cv::ocl;
@@ -326,3 +337,5 @@ int main(int argc, char* argv[])
waitKey(0); waitKey(0);
return EXIT_SUCCESS; return EXIT_SUCCESS;
} }
#endif