Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
O
opencv
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
opencv
Commits
9c0a5523
Commit
9c0a5523
authored
Dec 08, 2015
by
Vadim Pisarevsky
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #5757 from alalek:merge-2.4
parents
6c4232dc
d86d8ed9
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
99 additions
and
55 deletions
+99
-55
CMakeLists.txt
3rdparty/tbb/CMakeLists.txt
+22
-16
CMakeLists.txt
CMakeLists.txt
+3
-0
cascadeclassifier.cpp
apps/traincascade/cascadeclassifier.cpp
+8
-5
cascadeclassifier.h
apps/traincascade/cascadeclassifier.h
+2
-2
OpenCVFindLibsVideo.cmake
cmake/OpenCVFindLibsVideo.cmake
+2
-2
OpenCVUtils.cmake
cmake/OpenCVUtils.cmake
+7
-9
test_homography.cpp
modules/calib3d/test/test_homography.cpp
+4
-0
blobdetector.cpp
modules/features2d/src/blobdetector.cpp
+4
-0
matchers.cpp
modules/stitching/src/matchers.cpp
+5
-1
cap.cpp
modules/videoio/src/cap.cpp
+4
-2
cap_gstreamer.cpp
modules/videoio/src/cap_gstreamer.cpp
+0
-0
cap_images.cpp
modules/videoio/src/cap_images.cpp
+27
-7
test_ffmpeg.cpp
modules/videoio/test/test_ffmpeg.cpp
+4
-0
CMakeLists.txt
samples/gpu/CMakeLists.txt
+7
-0
opengl.cpp
samples/gpu/opengl.cpp
+0
-11
No files found.
3rdparty/tbb/CMakeLists.txt
View file @
9c0a5523
...
...
@@ -5,21 +5,26 @@ if (WIN32 AND NOT ARM)
message
(
FATAL_ERROR
"BUILD_TBB option supports Windows on ARM only!
\n
Use 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 /wd4702
)
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
()
set
(
tbb_ver
"tbb43_20141204oss"
)
set
(
tbb_url
"http://www.threadingbuildingblocks.org/sites/default/files/software_releases/source/tbb43_20141204oss_src.tgz"
)
set
(
tbb_md5
"e903dd92d9433701f097fa7ca29a3c1f"
)
set
(
tbb_version_file
"version_string.ver"
)
ocv_warnings_disable
(
CMAKE_CXX_FLAGS /wd4702
)
ocv_warnings_disable
(
CMAKE_CXX_FLAGS -Wshadow
)
# 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 /wd4702)
# 4.1 update 2 - works fine
#set(tbb_ver "tbb41_20130116oss")
#set(tbb_url "http://threadingbuildingblocks.org/sites/default/files/software_releases/source/tbb41_20130116oss_src.tgz")
#set(tbb_md5 "3809790e1001a1b32d59c9fee590ee85")
#set(tbb_version_file "version_string.ver")
#ocv_warnings_disable(CMAKE_CXX_FLAGS -Wshadow)
# 4.1 update 3 dev - Hangs on some Android devices
#set(tbb_ver "tbb41_20130401oss")
...
...
@@ -97,7 +102,7 @@ if(NOT EXISTS "${tbb_tarball}")
message
(
STATUS
"Downloading
${
tbb_ver
}
_src.tgz"
)
file
(
DOWNLOAD
"
${
tbb_url
}
"
"
${
tbb_tarball
}
"
TIMEOUT 600 STATUS __statvar
)
if
(
NOT __statvar EQUAL 0
)
message
(
FATAL_ERROR
"Failed to download TBB sources:
${
tbb_url
}
"
)
message
(
FATAL_ERROR
"Failed to download TBB sources
(
${
__statvar
}
)
:
${
tbb_url
}
"
)
endif
()
file
(
MD5
"
${
tbb_tarball
}
"
tbb_local_md5
)
if
(
NOT tbb_local_md5 STREQUAL tbb_md5
)
...
...
@@ -153,6 +158,7 @@ if (WIN32)
set
(
CMAKE_LINKER_FLAGS
"
${
CMAKE_LINKER_FLAGS
}
/APPCONTAINER"
)
else
()
add_definitions
(
-D__TBB_DYNAMIC_LOAD_ENABLED=0
#required
-D__TBB_WEAK_SYMBOLS_PRESENT=0
#required for 4.3
-D__TBB_BUILD=1
#required
-D__TBB_SURVIVE_THREAD_SWITCH=0
#no cilk support
-DTBB_USE_DEBUG=0
#just to be sure
...
...
CMakeLists.txt
View file @
9c0a5523
...
...
@@ -603,6 +603,9 @@ if(HAVE_CUDA)
if
(
HAVE_CUFFT
)
set
(
OPENCV_LINKER_LIBS
${
OPENCV_LINKER_LIBS
}
${
CUDA_cufft_LIBRARY
}
)
endif
()
foreach
(
p
${
CUDA_LIBS_PATH
}
)
set
(
OPENCV_LINKER_LIBS
${
OPENCV_LINKER_LIBS
}
-L
${
p
}
)
endforeach
()
endif
()
# ----------------------------------------------------------------------------
# Solution folders:
...
...
apps/traincascade/cascadeclassifier.cpp
View file @
9c0a5523
...
...
@@ -206,7 +206,7 @@ bool CvCascadeClassifier::train( const string _cascadeDirName,
cout
<<
endl
<<
"===== TRAINING "
<<
i
<<
"-stage ====="
<<
endl
;
cout
<<
"<BEGIN"
<<
endl
;
if
(
!
updateTrainingSet
(
tempLeafFARate
)
)
if
(
!
updateTrainingSet
(
requiredLeafFARate
,
tempLeafFARate
)
)
{
cout
<<
"Train dataset for temp stage can not be filled. "
"Branch training terminated."
<<
endl
;
...
...
@@ -297,17 +297,17 @@ int CvCascadeClassifier::predict( int sampleIdx )
return
1
;
}
bool
CvCascadeClassifier
::
updateTrainingSet
(
double
&
acceptanceRatio
)
bool
CvCascadeClassifier
::
updateTrainingSet
(
double
minimumAcceptanceRatio
,
double
&
acceptanceRatio
)
{
int64
posConsumed
=
0
,
negConsumed
=
0
;
imgReader
.
restart
();
int
posCount
=
fillPassedSamples
(
0
,
numPos
,
true
,
posConsumed
);
int
posCount
=
fillPassedSamples
(
0
,
numPos
,
true
,
0
,
posConsumed
);
if
(
!
posCount
)
return
false
;
cout
<<
"POS count : consumed "
<<
posCount
<<
" : "
<<
(
int
)
posConsumed
<<
endl
;
int
proNumNeg
=
cvRound
(
(
((
double
)
numNeg
)
*
((
double
)
posCount
)
)
/
numPos
);
// apply only a fraction of negative samples. double is required since overflow is possible
int
negCount
=
fillPassedSamples
(
posCount
,
proNumNeg
,
false
,
negConsumed
);
int
negCount
=
fillPassedSamples
(
posCount
,
proNumNeg
,
false
,
minimumAcceptanceRatio
,
negConsumed
);
if
(
!
negCount
)
return
false
;
...
...
@@ -317,7 +317,7 @@ bool CvCascadeClassifier::updateTrainingSet( double& acceptanceRatio)
return
true
;
}
int
CvCascadeClassifier
::
fillPassedSamples
(
int
first
,
int
count
,
bool
isPositive
,
int64
&
consumed
)
int
CvCascadeClassifier
::
fillPassedSamples
(
int
first
,
int
count
,
bool
isPositive
,
double
minimumAcceptanceRatio
,
int64
&
consumed
)
{
int
getcount
=
0
;
Mat
img
(
cascadeParams
.
winSize
,
CV_8UC1
);
...
...
@@ -325,6 +325,9 @@ int CvCascadeClassifier::fillPassedSamples( int first, int count, bool isPositiv
{
for
(
;
;
)
{
if
(
consumed
!=
0
&&
((
double
)
getcount
+
1
)
/
(
double
)(
int64
)
consumed
<=
minimumAcceptanceRatio
)
return
getcount
;
bool
isGetImg
=
isPositive
?
imgReader
.
getPos
(
img
)
:
imgReader
.
getNeg
(
img
);
if
(
!
isGetImg
)
...
...
apps/traincascade/cascadeclassifier.h
View file @
9c0a5523
...
...
@@ -100,8 +100,8 @@ private:
int
predict
(
int
sampleIdx
);
void
save
(
const
std
::
string
cascadeDirName
,
bool
baseFormat
=
false
);
bool
load
(
const
std
::
string
cascadeDirName
);
bool
updateTrainingSet
(
double
&
acceptanceRatio
);
int
fillPassedSamples
(
int
first
,
int
count
,
bool
isPositive
,
int64
&
consumed
);
bool
updateTrainingSet
(
double
minimumAcceptanceRatio
,
double
&
acceptanceRatio
);
int
fillPassedSamples
(
int
first
,
int
count
,
bool
isPositive
,
double
requiredAcceptanceRatio
,
int64
&
consumed
);
void
writeParams
(
cv
::
FileStorage
&
fs
)
const
;
void
writeStages
(
cv
::
FileStorage
&
fs
,
const
cv
::
Mat
&
featureMap
)
const
;
...
...
cmake/OpenCVFindLibsVideo.cmake
View file @
9c0a5523
...
...
@@ -12,7 +12,7 @@ endif(WITH_VFW)
# --- 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 AND NOT WITH_GSTREAMER_0_10
)
CHECK_MODULE
(
gstreamer-base-1.0 HAVE_GSTREAMER_BASE
)
CHECK_MODULE
(
gstreamer-video-1.0 HAVE_GSTREAMER_VIDEO
)
...
...
@@ -29,7 +29,7 @@ if(WITH_GSTREAMER AND NOT WITH_GSTREAMER_0_10)
set
(
GSTREAMER_PBUTILS_VERSION
${
ALIASOF_gstreamer-pbutils-1.0_VERSION
}
)
endif
()
endif
(
WITH_GSTREAMER AND NOT WITH_GSTREAMER_0_10
)
endif
()
# if gstreamer 1.x was not found, or we specified we wanted 0.10, try to find it
if
(
WITH_GSTREAMER AND NOT HAVE_GSTREAMER OR WITH_GSTREAMER_0_10
)
...
...
cmake/OpenCVUtils.cmake
View file @
9c0a5523
...
...
@@ -503,17 +503,15 @@ endmacro()
# convert list of paths to libraries names without lib prefix
macro
(
ocv_convert_to_lib_name var
)
set
(
__
tmp
""
)
function
(
ocv_convert_to_lib_name var
)
set
(
tmp
""
)
foreach
(
path
${
ARGN
}
)
get_filename_component
(
__
tmp_name
"
${
path
}
"
NAME_WE
)
string
(
REGEX REPLACE
"^lib"
""
__tmp_name
${
__tmp_name
}
)
list
(
APPEND
__tmp
"
${
__
tmp_name
}
"
)
get_filename_component
(
tmp_name
"
${
path
}
"
NAME_WE
)
string
(
REGEX REPLACE
"^lib"
""
tmp_name
"
${
tmp_name
}
"
)
list
(
APPEND
tmp
"
${
tmp_name
}
"
)
endforeach
()
set
(
${
var
}
${
__tmp
}
)
unset
(
__tmp
)
unset
(
__tmp_name
)
endmacro
()
set
(
${
var
}
${
tmp
}
PARENT_SCOPE
)
endfunction
()
# add install command
...
...
modules/calib3d/test/test_homography.cpp
View file @
9c0a5523
...
...
@@ -12,6 +12,7 @@
//
// Copyright (C) 2000-2008, Intel Corporation, 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.
//
// Redistribution and use in source and binary forms, with or without modification,
...
...
@@ -564,6 +565,9 @@ void CV_HomographyTest::run(int)
default
:
continue
;
}
}
delete
[]
src_data
;
src_data
=
NULL
;
}
}
...
...
modules/features2d/src/blobdetector.cpp
View file @
9c0a5523
...
...
@@ -311,6 +311,10 @@ void SimpleBlobDetectorImpl::detect(InputArray image, std::vector<cv::KeyPoint>&
else
grayscaleImage
=
image
.
getMat
();
if
(
grayscaleImage
.
type
()
!=
CV_8UC1
)
{
CV_Error
(
Error
::
StsUnsupportedFormat
,
"Blob detector only supports 8-bit images!"
);
}
std
::
vector
<
std
::
vector
<
Center
>
>
centers
;
for
(
double
thresh
=
params
.
minThreshold
;
thresh
<
params
.
maxThreshold
;
thresh
+=
params
.
thresholdStep
)
{
...
...
modules/stitching/src/matchers.cpp
View file @
9c0a5523
...
...
@@ -220,7 +220,11 @@ void GpuMatcher::match(const ImageFeatures &features1, const ImageFeatures &feat
descriptors1_
.
upload
(
features1
.
descriptors
);
descriptors2_
.
upload
(
features2
.
descriptors
);
Ptr
<
cuda
::
DescriptorMatcher
>
matcher
=
cuda
::
DescriptorMatcher
::
createBFMatcher
(
NORM_L2
);
//TODO: NORM_L1 allows to avoid matcher crashes for ORB features, but is not absolutely correct for them.
// The best choice for ORB features is NORM_HAMMING, but it is incorrect for SURF features.
// More accurate fix in this place should be done in the future -- the type of the norm
// should be either a parameter of this method, or a field of the class.
Ptr
<
cuda
::
DescriptorMatcher
>
matcher
=
cuda
::
DescriptorMatcher
::
createBFMatcher
(
NORM_L1
);
MatchesSet
matches
;
...
...
modules/videoio/src/cap.cpp
View file @
9c0a5523
...
...
@@ -166,10 +166,12 @@ CV_IMPL CvCapture * cvCreateCameraCapture (int index)
#ifdef HAVE_GSTREAMER
if
(
!
capture
)
capture
=
cvCreateCapture_GStreamer
(
CV_CAP_GSTREAMER_V4L2
,
0
);
capture
=
cvCreateCapture_GStreamer
(
CV_CAP_GSTREAMER_V4L2
,
reinterpret_cast
<
char
*>
(
index
));
if
(
!
capture
)
capture
=
cvCreateCapture_GStreamer
(
CV_CAP_GSTREAMER_V4L
,
0
);
capture
=
cvCreateCapture_GStreamer
(
CV_CAP_GSTREAMER_V4L
,
reinterpret_cast
<
char
*>
(
index
));
#endif
if
(
pref
)
break
;
// CV_CAP_VFW
...
...
modules/videoio/src/cap_gstreamer.cpp
View file @
9c0a5523
This diff is collapsed.
Click to expand it.
modules/videoio/src/cap_images.cpp
View file @
9c0a5523
...
...
@@ -67,10 +67,11 @@ class CvCapture_Images : public CvCapture
public
:
CvCapture_Images
()
{
filename
=
0
;
filename
=
NULL
;
currentframe
=
firstframe
=
0
;
length
=
0
;
frame
=
0
;
frame
=
NULL
;
grabbedInOpen
=
false
;
}
virtual
~
CvCapture_Images
()
...
...
@@ -92,6 +93,7 @@ protected:
unsigned
length
;
// length of sequence
IplImage
*
frame
;
bool
grabbedInOpen
;
};
...
...
@@ -100,7 +102,7 @@ void CvCapture_Images::close()
if
(
filename
)
{
free
(
filename
);
filename
=
0
;
filename
=
NULL
;
}
currentframe
=
firstframe
=
0
;
length
=
0
;
...
...
@@ -113,17 +115,25 @@ bool CvCapture_Images::grabFrame()
char
str
[
_MAX_PATH
];
sprintf
(
str
,
filename
,
firstframe
+
currentframe
);
if
(
grabbedInOpen
)
{
grabbedInOpen
=
false
;
++
currentframe
;
return
frame
!=
NULL
;
}
cvReleaseImage
(
&
frame
);
frame
=
cvLoadImage
(
str
,
CV_LOAD_IMAGE_ANYDEPTH
|
CV_LOAD_IMAGE_ANYCOLOR
);
if
(
frame
)
currentframe
++
;
return
frame
!=
0
;
return
frame
!=
NULL
;
}
IplImage
*
CvCapture_Images
::
retrieveFrame
(
int
)
{
return
frame
;
return
grabbedInOpen
?
NULL
:
frame
;
}
double
CvCapture_Images
::
getProperty
(
int
id
)
const
...
...
@@ -168,6 +178,8 @@ bool CvCapture_Images::setProperty(int id, double value)
value
=
length
-
1
;
}
currentframe
=
cvRound
(
value
);
if
(
currentframe
!=
0
)
grabbedInOpen
=
false
;
// grabbed frame is not valid anymore
return
true
;
case
CV_CAP_PROP_POS_AVI_RATIO
:
if
(
value
>
1
)
{
...
...
@@ -178,6 +190,8 @@ bool CvCapture_Images::setProperty(int id, double value)
value
=
0
;
}
currentframe
=
cvRound
((
length
-
1
)
*
value
);
if
(
currentframe
!=
0
)
grabbedInOpen
=
false
;
// grabbed frame is not valid anymore
return
true
;
}
CV_WARN
(
"unknown/unhandled property
\n
"
);
...
...
@@ -280,7 +294,13 @@ bool CvCapture_Images::open(const char * _filename)
}
firstframe
=
offset
;
return
true
;
// grab frame to enable properties retrieval
bool
grabRes
=
grabFrame
();
grabbedInOpen
=
true
;
currentframe
=
0
;
return
grabRes
;
}
...
...
@@ -292,7 +312,7 @@ CvCapture* cvCreateFileCapture_Images(const char * filename)
return
capture
;
delete
capture
;
return
0
;
return
NULL
;
}
//
...
...
modules/videoio/test/test_ffmpeg.cpp
View file @
9c0a5523
...
...
@@ -431,6 +431,10 @@ TEST(Videoio_Video_parallel_writers_and_readers, accuracy)
if
(
code
==
1
)
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
samples/gpu/CMakeLists.txt
View file @
9c0a5523
...
...
@@ -81,6 +81,10 @@ if(BUILD_EXAMPLES AND OCV_DEPENDENCIES_FOUND)
file
(
GLOB all_samples RELATIVE
${
CMAKE_CURRENT_SOURCE_DIR
}
*.cpp
)
if
(
NOT WITH_OPENGL
)
list
(
REMOVE_ITEM all_samples
"opengl.cpp"
)
endif
(
NOT WITH_OPENGL
)
foreach
(
sample_filename
${
all_samples
}
)
get_filename_component
(
sample
${
sample_filename
}
NAME_WE
)
file
(
GLOB sample_srcs RELATIVE
${
CMAKE_CURRENT_SOURCE_DIR
}
${
sample
}
.*
)
...
...
@@ -92,6 +96,9 @@ endif()
if
(
INSTALL_C_EXAMPLES AND NOT WIN32
)
file
(
GLOB install_list *.c *.cpp *.jpg *.png *.data makefile.* build_all.sh *.dsp *.cmd
)
if
(
NOT WITH_OPENGL
)
list
(
REMOVE_ITEM all_samples
"opengl.cpp"
)
endif
(
NOT WITH_OPENGL
)
install
(
FILES
${
install_list
}
DESTINATION
${
OPENCV_SAMPLES_SRC_INSTALL_PATH
}
/gpu
PERMISSIONS OWNER_READ GROUP_READ WORLD_READ COMPONENT samples
)
...
...
samples/gpu/opengl.cpp
View file @
9c0a5523
#include <iostream>
#include "cvconfig.h"
#ifndef HAVE_OPENGL
int
main
()
{
std
::
cerr
<<
"Library was built without OpenGL support"
<<
std
::
endl
;
return
-
1
;
}
#else
#ifdef WIN32
#define WIN32_LEAN_AND_MEAN 1
...
...
@@ -124,5 +115,3 @@ int main(int argc, char* argv[])
return
0
;
}
#endif
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment