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
e9aa6fa0
Commit
e9aa6fa0
authored
Apr 22, 2011
by
Alexey Kazakov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added ROC-curve calculating to the cascade detection algorithm
parent
06070dfc
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
98 additions
and
136 deletions
+98
-136
grfmt_tiff.cpp
modules/highgui/src/grfmt_tiff.cpp
+9
-27
grfmt_tiff.hpp
modules/highgui/src/grfmt_tiff.hpp
+0
-2
utils.cpp
modules/highgui/src/utils.cpp
+0
-19
utils.hpp
modules/highgui/src/utils.hpp
+0
-4
objdetect.hpp
modules/objdetect/include/opencv2/objdetect/objdetect.hpp
+20
-39
cascadedetect.cpp
modules/objdetect/src/cascadedetect.cpp
+0
-0
datamatrix.cpp
modules/objdetect/src/datamatrix.cpp
+0
-0
followblk.h
modules/objdetect/src/followblk.h
+0
-5
haar.cpp
modules/objdetect/src/haar.cpp
+69
-17
cv.cpp
modules/python/src/cv.cpp
+0
-23
JCB.png
samples/c/JCB.png
+0
-0
No files found.
modules/highgui/src/grfmt_tiff.cpp
View file @
e9aa6fa0
...
...
@@ -301,11 +301,6 @@ TiffEncoder::~TiffEncoder()
{
}
bool
TiffEncoder
::
isFormatSupported
(
int
depth
)
const
{
return
depth
==
CV_8U
||
depth
==
CV_16U
;
}
ImageEncoder
TiffEncoder
::
newEncoder
()
const
{
return
new
TiffEncoder
;
...
...
@@ -326,13 +321,7 @@ bool TiffEncoder::write( const Mat& img, const vector<int>& )
{
int
channels
=
img
.
channels
();
int
width
=
img
.
cols
,
height
=
img
.
rows
;
int
depth
=
img
.
depth
();
if
(
depth
!=
CV_8U
&&
depth
!=
CV_16U
)
return
false
;
int
bytesPerChannel
=
depth
==
CV_8U
?
1
:
2
;
int
fileStep
=
width
*
channels
*
bytesPerChannel
;
int
fileStep
=
width
*
channels
;
WLByteStream
strm
;
if
(
m_buf
)
...
...
@@ -367,7 +356,7 @@ bool TiffEncoder::write( const Mat& img, const vector<int>& )
uchar
*
buffer
=
_buffer
;
int
stripOffsetsOffset
=
0
;
int
stripCountsOffset
=
0
;
int
bitsPerSample
=
8
*
bytesPerChannel
;
int
bitsPerSample
=
8
;
// TODO support 16 bit
int
y
=
0
;
strm
.
putBytes
(
fmtSignTiffII
,
4
);
...
...
@@ -387,15 +376,9 @@ bool TiffEncoder::write( const Mat& img, const vector<int>& )
for
(
;
y
<
limit
;
y
++
)
{
if
(
channels
==
3
)
if
(
depth
==
CV_8U
)
icvCvt_BGR2RGB_8u_C3R
(
img
.
data
+
img
.
step
*
y
,
0
,
buffer
,
0
,
cvSize
(
width
,
1
)
);
else
icvCvt_BGR2RGB_16u_C3R
(
(
const
ushort
*
)(
img
.
data
+
img
.
step
*
y
),
0
,
(
ushort
*
)
buffer
,
0
,
cvSize
(
width
,
1
)
);
icvCvt_BGR2RGB_8u_C3R
(
img
.
data
+
img
.
step
*
y
,
0
,
buffer
,
0
,
cvSize
(
width
,
1
)
);
else
if
(
channels
==
4
)
if
(
depth
==
CV_8U
)
icvCvt_BGRA2RGBA_8u_C4R
(
img
.
data
+
img
.
step
*
y
,
0
,
buffer
,
0
,
cvSize
(
width
,
1
)
);
else
icvCvt_BGRA2RGBA_16u_C4R
(
(
const
ushort
*
)(
img
.
data
+
img
.
step
*
y
),
0
,
(
ushort
*
)
buffer
,
0
,
cvSize
(
width
,
1
)
);
icvCvt_BGRA2RGBA_8u_C4R
(
img
.
data
+
img
.
step
*
y
,
0
,
buffer
,
0
,
cvSize
(
width
,
1
)
);
strm
.
putBytes
(
channels
>
1
?
buffer
:
img
.
data
+
img
.
step
*
y
,
fileStep
);
}
...
...
@@ -433,13 +416,12 @@ bool TiffEncoder::write( const Mat& img, const vector<int>& )
if
(
channels
>
1
)
{
int
bitsPerSamplePos
=
strm
.
getPos
();
strm
.
putWord
(
bitsPerSample
);
strm
.
putWord
(
bitsPerSample
);
strm
.
putWord
(
bitsPerSample
);
bitsPerSample
=
strm
.
getPos
();
strm
.
putWord
(
8
);
strm
.
putWord
(
8
);
strm
.
putWord
(
8
);
if
(
channels
==
4
)
strm
.
putWord
(
bitsPerSample
);
bitsPerSample
=
bitsPerSamplePos
;
strm
.
putWord
(
8
);
}
directoryOffset
=
strm
.
getPos
();
...
...
modules/highgui/src/grfmt_tiff.hpp
View file @
e9aa6fa0
...
...
@@ -118,8 +118,6 @@ public:
TiffEncoder
();
virtual
~
TiffEncoder
();
bool
isFormatSupported
(
int
depth
)
const
;
bool
write
(
const
Mat
&
img
,
const
vector
<
int
>&
params
);
ImageEncoder
newEncoder
()
const
;
...
...
modules/highgui/src/utils.cpp
View file @
e9aa6fa0
...
...
@@ -192,25 +192,6 @@ void icvCvt_BGRA2RGBA_8u_C4R( const uchar* bgra, int bgra_step,
}
}
void
icvCvt_BGRA2RGBA_16u_C4R
(
const
ushort
*
bgra
,
int
bgra_step
,
ushort
*
rgba
,
int
rgba_step
,
CvSize
size
)
{
int
i
;
for
(
;
size
.
height
--
;
)
{
for
(
i
=
0
;
i
<
size
.
width
;
i
++
,
bgra
+=
4
,
rgba
+=
4
)
{
ushort
t0
=
bgra
[
0
],
t1
=
bgra
[
1
];
ushort
t2
=
bgra
[
2
],
t3
=
bgra
[
3
];
rgba
[
0
]
=
t2
;
rgba
[
1
]
=
t1
;
rgba
[
2
]
=
t0
;
rgba
[
3
]
=
t3
;
}
bgra
+=
bgra_step
/
sizeof
(
bgra
[
0
])
-
size
.
width
*
4
;
rgba
+=
rgba_step
/
sizeof
(
rgba
[
0
])
-
size
.
width
*
4
;
}
}
void
icvCvt_BGR2RGB_8u_C3R
(
const
uchar
*
bgr
,
int
bgr_step
,
uchar
*
rgb
,
int
rgb_step
,
CvSize
size
)
...
...
modules/highgui/src/utils.hpp
View file @
e9aa6fa0
...
...
@@ -88,10 +88,6 @@ void icvCvt_BGRA2RGBA_8u_C4R( const uchar* bgra, int bgra_step,
uchar
*
rgba
,
int
rgba_step
,
CvSize
size
);
#define icvCvt_RGBA2BGRA_8u_C4R icvCvt_BGRA2RGBA_8u_C4R
void
icvCvt_BGRA2RGBA_16u_C4R
(
const
ushort
*
bgra
,
int
bgra_step
,
ushort
*
rgba
,
int
rgba_step
,
CvSize
size
);
#define icvCvt_RGBA2BGRA_16u_C4R icvCvt_BGRA2RGBA_16u_C4R
void
icvCvt_BGR5552Gray_8u_C2C1R
(
const
uchar
*
bgr555
,
int
bgr555_step
,
uchar
*
gray
,
int
gray_step
,
CvSize
size
);
void
icvCvt_BGR5652Gray_8u_C2C1R
(
const
uchar
*
bgr565
,
int
bgr565_step
,
...
...
modules/objdetect/include/opencv2/objdetect/objdetect.hpp
View file @
e9aa6fa0
...
...
@@ -125,9 +125,17 @@ CVAPI(void) cvReleaseHaarClassifierCascade( CvHaarClassifierCascade** cascade );
#define CV_HAAR_FIND_BIGGEST_OBJECT 4
#define CV_HAAR_DO_ROUGH_SEARCH 8
CVAPI
(
CvSeq
*
)
cvHaarDetectObjectsForROC
(
const
CvArr
*
image
,
CvHaarClassifierCascade
*
cascade
,
CvMemStorage
*
storage
,
std
::
vector
<
int
>&
rejectLevels
,
std
::
vector
<
double
>&
levelWeightds
,
double
scale_factor
CV_DEFAULT
(
1.1
),
int
min_neighbors
CV_DEFAULT
(
3
),
int
flags
CV_DEFAULT
(
0
),
CvSize
min_size
CV_DEFAULT
(
cvSize
(
0
,
0
)),
CvSize
max_size
CV_DEFAULT
(
cvSize
(
0
,
0
)),
bool
outputRejectLevels
=
false
);
CVAPI
(
CvSeq
*
)
cvHaarDetectObjects
(
const
CvArr
*
image
,
CvHaarClassifierCascade
*
cascade
,
CvMemStorage
*
storage
,
double
scale_factor
CV_DEFAULT
(
1.1
),
CvHaarClassifierCascade
*
cascade
,
CvMemStorage
*
storage
,
double
scale_factor
CV_DEFAULT
(
1.1
),
int
min_neighbors
CV_DEFAULT
(
3
),
int
flags
CV_DEFAULT
(
0
),
CvSize
min_size
CV_DEFAULT
(
cvSize
(
0
,
0
)),
CvSize
max_size
CV_DEFAULT
(
cvSize
(
0
,
0
)));
...
...
@@ -275,7 +283,8 @@ namespace cv
CV_EXPORTS_W
void
groupRectangles
(
vector
<
Rect
>&
rectList
,
int
groupThreshold
,
double
eps
=
0.2
);
CV_EXPORTS_W
void
groupRectangles
(
vector
<
Rect
>&
rectList
,
CV_OUT
vector
<
int
>&
weights
,
int
groupThreshold
,
double
eps
=
0.2
);
CV_EXPORTS
void
groupRectangles
(
vector
<
Rect
>&
rectList
,
vector
<
double
>&
resultWeights
,
int
groupThreshold
=
2
,
double
eps
=
0.2
);
CV_EXPORTS
void
groupRectangles
(
vector
<
Rect
>&
rectList
,
vector
<
int
>&
rejectLevels
,
vector
<
double
>&
levelWeights
,
int
groupThreshold
,
double
eps
=
0.2
);
CV_EXPORTS
void
groupRectangles_meanshift
(
vector
<
Rect
>&
rectList
,
vector
<
double
>&
foundWeights
,
vector
<
double
>&
foundScales
,
double
detectThreshold
=
0.0
,
Size
winDetSize
=
Size
(
64
,
128
));
...
...
@@ -352,11 +361,12 @@ public:
CV_WRAP
virtual
void
detectMultiScale
(
const
Mat
&
image
,
CV_OUT
vector
<
Rect
>&
objects
,
vector
<
int
>&
rejectLevels
,
vector
<
double
>&
levelWeights
,
double
scaleFactor
=
1.1
,
int
minNeighbors
=
3
,
int
flags
=
0
,
Size
minSize
=
Size
(),
Size
maxSize
=
Size
(),
bool
outputRejectLevels
=
false
);
bool
outputRejectLevels
=
false
);
bool
isOldFormatCascade
()
const
;
...
...
@@ -370,7 +380,7 @@ protected:
virtual
bool
detectSingleScale
(
const
Mat
&
image
,
int
stripCount
,
Size
processingRectSize
,
int
stripSize
,
int
yStep
,
double
factor
,
vector
<
Rect
>&
candidates
,
vector
<
int
>&
rejectLevels
,
bool
outputRejectLevels
=
false
);
vector
<
int
>&
rejectLevels
,
vector
<
double
>&
levelWeights
,
bool
outputRejectLevels
=
false
);
protected
:
enum
{
BOOST
=
0
};
...
...
@@ -380,19 +390,19 @@ protected:
friend
struct
CascadeClassifierInvoker
;
template
<
class
FEval
>
friend
int
predictOrdered
(
CascadeClassifier
&
cascade
,
Ptr
<
FeatureEvaluator
>
&
featureEvaluator
);
friend
int
predictOrdered
(
CascadeClassifier
&
cascade
,
Ptr
<
FeatureEvaluator
>
&
featureEvaluator
,
double
&
weight
);
template
<
class
FEval
>
friend
int
predictCategorical
(
CascadeClassifier
&
cascade
,
Ptr
<
FeatureEvaluator
>
&
featureEvaluator
);
friend
int
predictCategorical
(
CascadeClassifier
&
cascade
,
Ptr
<
FeatureEvaluator
>
&
featureEvaluator
,
double
&
weight
);
template
<
class
FEval
>
friend
int
predictOrderedStump
(
CascadeClassifier
&
cascade
,
Ptr
<
FeatureEvaluator
>
&
featureEvaluator
);
friend
int
predictOrderedStump
(
CascadeClassifier
&
cascade
,
Ptr
<
FeatureEvaluator
>
&
featureEvaluator
,
double
&
weight
);
template
<
class
FEval
>
friend
int
predictCategoricalStump
(
CascadeClassifier
&
cascade
,
Ptr
<
FeatureEvaluator
>
&
featureEvaluator
);
friend
int
predictCategoricalStump
(
CascadeClassifier
&
cascade
,
Ptr
<
FeatureEvaluator
>
&
featureEvaluator
,
double
&
weight
);
bool
setImage
(
Ptr
<
FeatureEvaluator
>&
,
const
Mat
&
);
virtual
int
runAt
(
Ptr
<
FeatureEvaluator
>&
,
Point
);
virtual
int
runAt
(
Ptr
<
FeatureEvaluator
>&
,
Point
,
double
&
weight
);
class
Data
{
...
...
@@ -436,35 +446,6 @@ protected:
Data
data
;
Ptr
<
FeatureEvaluator
>
featureEvaluator
;
Ptr
<
CvHaarClassifierCascade
>
oldCascade
;
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
public
:
int
getNumStages
()
{
int
numStages
;
if
(
!
isOldFormatCascade
()
)
{
numStages
=
data
.
stages
.
size
();
}
else
{
numStages
=
this
->
oldCascade
->
count
;
}
return
numStages
;
}
void
setNumStages
(
int
stageCount
)
{
if
(
!
isOldFormatCascade
()
)
{
if
(
stageCount
)
data
.
stages
.
resize
(
stageCount
);
}
else
if
(
stageCount
)
this
->
oldCascade
->
count
=
stageCount
;
}
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
};
//////////////// HOG (Histogram-of-Oriented-Gradients) Descriptor and Object Detector //////////////
...
...
modules/objdetect/src/cascadedetect.cpp
View file @
e9aa6fa0
This diff is collapsed.
Click to expand it.
modules/objdetect/src/datamatrix.cpp
deleted
100644 → 0
View file @
06070dfc
This diff is collapsed.
Click to expand it.
modules/objdetect/src/followblk.h
deleted
100644 → 0
View file @
06070dfc
unsigned
char
cblk
[
256
]
=
{
34
,
19
,
36
,
36
,
51
,
19
,
51
,
51
,
66
,
19
,
36
,
36
,
66
,
19
,
66
,
66
,
49
,
19
,
36
,
36
,
51
,
19
,
51
,
51
,
49
,
19
,
36
,
36
,
49
,
19
,
49
,
49
,
32
,
19
,
36
,
36
,
51
,
19
,
51
,
51
,
66
,
19
,
36
,
36
,
66
,
19
,
66
,
66
,
32
,
19
,
36
,
36
,
51
,
19
,
51
,
51
,
32
,
19
,
36
,
36
,
32
,
19
,
32
,
32
,
17
,
19
,
36
,
36
,
51
,
19
,
51
,
51
,
66
,
19
,
36
,
36
,
66
,
19
,
66
,
66
,
49
,
19
,
36
,
36
,
51
,
19
,
51
,
51
,
49
,
19
,
36
,
36
,
49
,
19
,
49
,
49
,
17
,
19
,
36
,
36
,
51
,
19
,
51
,
51
,
66
,
19
,
36
,
36
,
66
,
19
,
66
,
66
,
17
,
19
,
36
,
36
,
51
,
19
,
51
,
51
,
17
,
19
,
36
,
36
,
17
,
19
,
17
,
17
,
2
,
19
,
2
,
36
,
2
,
19
,
2
,
51
,
2
,
19
,
2
,
36
,
2
,
19
,
2
,
66
,
2
,
19
,
2
,
36
,
2
,
19
,
2
,
51
,
2
,
19
,
2
,
36
,
2
,
19
,
2
,
49
,
2
,
19
,
2
,
36
,
2
,
19
,
2
,
51
,
2
,
19
,
2
,
36
,
2
,
19
,
2
,
66
,
2
,
19
,
2
,
36
,
2
,
19
,
2
,
51
,
2
,
19
,
2
,
36
,
2
,
19
,
2
,
32
,
2
,
19
,
2
,
36
,
2
,
19
,
2
,
51
,
2
,
19
,
2
,
36
,
2
,
19
,
2
,
66
,
2
,
19
,
2
,
36
,
2
,
19
,
2
,
51
,
2
,
19
,
2
,
36
,
2
,
19
,
2
,
49
,
2
,
19
,
2
,
36
,
2
,
19
,
2
,
51
,
2
,
19
,
2
,
36
,
2
,
19
,
2
,
66
,
2
,
19
,
2
,
36
,
2
,
19
,
2
,
51
,
2
,
19
,
2
,
36
,
2
,
19
,
2
,
34
};
unsigned
char
ccblk
[
256
]
=
{
34
,
17
,
2
,
17
,
19
,
19
,
2
,
17
,
36
,
36
,
2
,
36
,
19
,
19
,
2
,
17
,
51
,
51
,
2
,
51
,
19
,
19
,
2
,
51
,
36
,
36
,
2
,
36
,
19
,
19
,
2
,
17
,
66
,
66
,
2
,
66
,
19
,
19
,
2
,
66
,
36
,
36
,
2
,
36
,
19
,
19
,
2
,
66
,
51
,
51
,
2
,
51
,
19
,
19
,
2
,
51
,
36
,
36
,
2
,
36
,
19
,
19
,
2
,
17
,
49
,
49
,
2
,
49
,
19
,
19
,
2
,
49
,
36
,
36
,
2
,
36
,
19
,
19
,
2
,
49
,
51
,
51
,
2
,
51
,
19
,
19
,
2
,
51
,
36
,
36
,
2
,
36
,
19
,
19
,
2
,
49
,
66
,
66
,
2
,
66
,
19
,
19
,
2
,
66
,
36
,
36
,
2
,
36
,
19
,
19
,
2
,
66
,
51
,
51
,
2
,
51
,
19
,
19
,
2
,
51
,
36
,
36
,
2
,
36
,
19
,
19
,
2
,
17
,
32
,
32
,
2
,
32
,
19
,
19
,
2
,
32
,
36
,
36
,
2
,
36
,
19
,
19
,
2
,
32
,
51
,
51
,
2
,
51
,
19
,
19
,
2
,
51
,
36
,
36
,
2
,
36
,
19
,
19
,
2
,
32
,
66
,
66
,
2
,
66
,
19
,
19
,
2
,
66
,
36
,
36
,
2
,
36
,
19
,
19
,
2
,
66
,
51
,
51
,
2
,
51
,
19
,
19
,
2
,
51
,
36
,
36
,
2
,
36
,
19
,
19
,
2
,
32
,
49
,
49
,
2
,
49
,
19
,
19
,
2
,
49
,
36
,
36
,
2
,
36
,
19
,
19
,
2
,
49
,
51
,
51
,
2
,
51
,
19
,
19
,
2
,
51
,
36
,
36
,
2
,
36
,
19
,
19
,
2
,
49
,
66
,
66
,
2
,
66
,
19
,
19
,
2
,
66
,
36
,
36
,
2
,
36
,
19
,
19
,
2
,
66
,
51
,
51
,
2
,
51
,
19
,
19
,
2
,
51
,
36
,
36
,
2
,
36
,
19
,
19
,
2
,
34
};
static
const
CvPoint
pickup
[
64
]
=
{
{
7
,
6
},{
8
,
6
},{
7
,
5
},{
8
,
5
},{
1
,
5
},{
7
,
4
},{
8
,
4
},{
1
,
4
},{
1
,
8
},{
2
,
8
},{
1
,
7
},{
2
,
7
},{
3
,
7
},{
1
,
6
},{
2
,
6
},{
3
,
6
},{
3
,
2
},{
4
,
2
},{
3
,
1
},{
4
,
1
},{
5
,
1
},{
3
,
8
},{
4
,
8
},{
5
,
8
},{
6
,
1
},{
7
,
1
},{
6
,
8
},{
7
,
8
},{
8
,
8
},{
6
,
7
},{
7
,
7
},{
8
,
7
},{
4
,
7
},{
5
,
7
},{
4
,
6
},{
5
,
6
},{
6
,
6
},{
4
,
5
},{
5
,
5
},{
6
,
5
},{
2
,
5
},{
3
,
5
},{
2
,
4
},{
3
,
4
},{
4
,
4
},{
2
,
3
},{
3
,
3
},{
4
,
3
},{
8
,
3
},{
1
,
3
},{
8
,
2
},{
1
,
2
},{
2
,
2
},{
8
,
1
},{
1
,
1
},{
2
,
1
},{
5
,
4
},{
6
,
4
},{
5
,
3
},{
6
,
3
},{
7
,
3
},{
5
,
2
},{
6
,
2
},{
7
,
2
}
};
static
const
uint8
Alog
[
256
]
=
{
1
,
2
,
4
,
8
,
16
,
32
,
64
,
128
,
45
,
90
,
180
,
69
,
138
,
57
,
114
,
228
,
229
,
231
,
227
,
235
,
251
,
219
,
155
,
27
,
54
,
108
,
216
,
157
,
23
,
46
,
92
,
184
,
93
,
186
,
89
,
178
,
73
,
146
,
9
,
18
,
36
,
72
,
144
,
13
,
26
,
52
,
104
,
208
,
141
,
55
,
110
,
220
,
149
,
7
,
14
,
28
,
56
,
112
,
224
,
237
,
247
,
195
,
171
,
123
,
246
,
193
,
175
,
115
,
230
,
225
,
239
,
243
,
203
,
187
,
91
,
182
,
65
,
130
,
41
,
82
,
164
,
101
,
202
,
185
,
95
,
190
,
81
,
162
,
105
,
210
,
137
,
63
,
126
,
252
,
213
,
135
,
35
,
70
,
140
,
53
,
106
,
212
,
133
,
39
,
78
,
156
,
21
,
42
,
84
,
168
,
125
,
250
,
217
,
159
,
19
,
38
,
76
,
152
,
29
,
58
,
116
,
232
,
253
,
215
,
131
,
43
,
86
,
172
,
117
,
234
,
249
,
223
,
147
,
11
,
22
,
44
,
88
,
176
,
77
,
154
,
25
,
50
,
100
,
200
,
189
,
87
,
174
,
113
,
226
,
233
,
255
,
211
,
139
,
59
,
118
,
236
,
245
,
199
,
163
,
107
,
214
,
129
,
47
,
94
,
188
,
85
,
170
,
121
,
242
,
201
,
191
,
83
,
166
,
97
,
194
,
169
,
127
,
254
,
209
,
143
,
51
,
102
,
204
,
181
,
71
,
142
,
49
,
98
,
196
,
165
,
103
,
206
,
177
,
79
,
158
,
17
,
34
,
68
,
136
,
61
,
122
,
244
,
197
,
167
,
99
,
198
,
161
,
111
,
222
,
145
,
15
,
30
,
60
,
120
,
240
,
205
,
183
,
67
,
134
,
33
,
66
,
132
,
37
,
74
,
148
,
5
,
10
,
20
,
40
,
80
,
160
,
109
,
218
,
153
,
31
,
62
,
124
,
248
,
221
,
151
,
3
,
6
,
12
,
24
,
48
,
96
,
192
,
173
,
119
,
238
,
241
,
207
,
179
,
75
,
150
,
1
};
static
const
uint8
Log
[
256
]
=
{
-
255
,
255
,
1
,
240
,
2
,
225
,
241
,
53
,
3
,
38
,
226
,
133
,
242
,
43
,
54
,
210
,
4
,
195
,
39
,
114
,
227
,
106
,
134
,
28
,
243
,
140
,
44
,
23
,
55
,
118
,
211
,
234
,
5
,
219
,
196
,
96
,
40
,
222
,
115
,
103
,
228
,
78
,
107
,
125
,
135
,
8
,
29
,
162
,
244
,
186
,
141
,
180
,
45
,
99
,
24
,
49
,
56
,
13
,
119
,
153
,
212
,
199
,
235
,
91
,
6
,
76
,
220
,
217
,
197
,
11
,
97
,
184
,
41
,
36
,
223
,
253
,
116
,
138
,
104
,
193
,
229
,
86
,
79
,
171
,
108
,
165
,
126
,
145
,
136
,
34
,
9
,
74
,
30
,
32
,
163
,
84
,
245
,
173
,
187
,
204
,
142
,
81
,
181
,
190
,
46
,
88
,
100
,
159
,
25
,
231
,
50
,
207
,
57
,
147
,
14
,
67
,
120
,
128
,
154
,
248
,
213
,
167
,
200
,
63
,
236
,
110
,
92
,
176
,
7
,
161
,
77
,
124
,
221
,
102
,
218
,
95
,
198
,
90
,
12
,
152
,
98
,
48
,
185
,
179
,
42
,
209
,
37
,
132
,
224
,
52
,
254
,
239
,
117
,
233
,
139
,
22
,
105
,
27
,
194
,
113
,
230
,
206
,
87
,
158
,
80
,
189
,
172
,
203
,
109
,
175
,
166
,
62
,
127
,
247
,
146
,
66
,
137
,
192
,
35
,
252
,
10
,
183
,
75
,
216
,
31
,
83
,
33
,
73
,
164
,
144
,
85
,
170
,
246
,
65
,
174
,
61
,
188
,
202
,
205
,
157
,
143
,
169
,
82
,
72
,
182
,
215
,
191
,
251
,
47
,
178
,
89
,
151
,
101
,
94
,
160
,
123
,
26
,
112
,
232
,
21
,
51
,
238
,
208
,
131
,
58
,
69
,
148
,
18
,
15
,
16
,
68
,
17
,
121
,
149
,
129
,
19
,
155
,
59
,
249
,
70
,
214
,
250
,
168
,
71
,
201
,
156
,
64
,
60
,
237
,
130
,
111
,
20
,
93
,
122
,
177
,
150
};
modules/objdetect/src/haar.cpp
View file @
e9aa6fa0
...
...
@@ -654,8 +654,8 @@ double icvEvalHidHaarClassifier( CvHidHaarClassifier* classifier,
CV_IMPL
int
cvRunHaarClassifierCascade
(
const
CvHaarClassifierCascade
*
_cascade
,
CvPoint
pt
,
int
start_stage
)
cvRunHaarClassifierCascade
Sum
(
const
CvHaarClassifierCascade
*
_cascade
,
CvPoint
pt
,
double
&
stage_sum
,
int
start_stage
)
{
int
result
=
-
1
;
...
...
@@ -698,7 +698,7 @@ cvRunHaarClassifierCascade( const CvHaarClassifierCascade* _cascade,
while
(
ptr
)
{
double
stage_sum
=
0
;
stage_sum
=
0.
0
;
for
(
j
=
0
;
j
<
ptr
->
count
;
j
++
)
{
...
...
@@ -724,7 +724,7 @@ cvRunHaarClassifierCascade( const CvHaarClassifierCascade* _cascade,
for
(
i
=
start_stage
;
i
<
cascade
->
count
;
i
++
)
{
#ifndef CV_HAAR_USE_SSE
double
stage_sum
=
0
;
stage_sum
=
0.
0
;
#else
__m128d
stage_sum
=
_mm_setzero_pd
();
#endif
...
...
@@ -796,7 +796,7 @@ cvRunHaarClassifierCascade( const CvHaarClassifierCascade* _cascade,
{
for
(
i
=
start_stage
;
i
<
cascade
->
count
;
i
++
)
{
double
stage_sum
=
0
;
stage_sum
=
0.
0
;
for
(
j
=
0
;
j
<
cascade
->
stage_classifier
[
i
].
count
;
j
++
)
{
...
...
@@ -809,10 +809,16 @@ cvRunHaarClassifierCascade( const CvHaarClassifierCascade* _cascade,
return
-
i
;
}
}
return
1
;
}
CV_IMPL
int
cvRunHaarClassifierCascade
(
const
CvHaarClassifierCascade
*
_cascade
,
CvPoint
pt
,
int
start_stage
)
{
double
stage_sum
;
return
cvRunHaarClassifierCascadeSum
(
_cascade
,
pt
,
stage_sum
,
start_stage
);
}
namespace
cv
{
...
...
@@ -822,7 +828,9 @@ struct HaarDetectObjects_ScaleImage_Invoker
HaarDetectObjects_ScaleImage_Invoker
(
const
CvHaarClassifierCascade
*
_cascade
,
int
_stripSize
,
double
_factor
,
const
Mat
&
_sum1
,
const
Mat
&
_sqsum1
,
Mat
*
_norm1
,
Mat
*
_mask1
,
Rect
_equRect
,
ConcurrentRectVector
&
_vec
)
Mat
*
_mask1
,
Rect
_equRect
,
ConcurrentRectVector
&
_vec
,
std
::
vector
<
int
>&
_levels
,
std
::
vector
<
double
>&
_weights
,
bool
_outputLevels
)
{
cascade
=
_cascade
;
stripSize
=
_stripSize
;
...
...
@@ -833,6 +841,8 @@ struct HaarDetectObjects_ScaleImage_Invoker
mask1
=
_mask1
;
equRect
=
_equRect
;
vec
=
&
_vec
;
rejectLevels
=
_outputLevels
?
&
_levels
:
0
;
levelWeights
=
_outputLevels
?
&
_weights
:
0
;
}
void
operator
()(
const
BlockedRange
&
range
)
const
...
...
@@ -902,9 +912,26 @@ struct HaarDetectObjects_ScaleImage_Invoker
for
(
y
=
y1
;
y
<
y2
;
y
+=
ystep
)
for
(
x
=
0
;
x
<
ssz
.
width
;
x
+=
ystep
)
{
if
(
cvRunHaarClassifierCascade
(
cascade
,
cvPoint
(
x
,
y
),
0
)
>
0
)
vec
->
push_back
(
Rect
(
cvRound
(
x
*
factor
),
cvRound
(
y
*
factor
),
winSize
.
width
,
winSize
.
height
));
double
gypWeight
;
int
result
=
cvRunHaarClassifierCascadeSum
(
cascade
,
cvPoint
(
x
,
y
),
gypWeight
,
0
);
if
(
rejectLevels
)
{
if
(
result
==
1
)
result
=
-
1
*
cascade
->
count
;
if
(
cascade
->
count
+
result
<
4
)
{
vec
->
push_back
(
Rect
(
cvRound
(
x
*
factor
),
cvRound
(
y
*
factor
),
winSize
.
width
,
winSize
.
height
));
rejectLevels
->
push_back
(
-
result
);
levelWeights
->
push_back
(
gypWeight
);
}
}
else
{
if
(
result
>
0
)
vec
->
push_back
(
Rect
(
cvRound
(
x
*
factor
),
cvRound
(
y
*
factor
),
winSize
.
width
,
winSize
.
height
));
}
}
}
...
...
@@ -914,6 +941,8 @@ struct HaarDetectObjects_ScaleImage_Invoker
Mat
sum1
,
sqsum1
,
*
norm1
,
*
mask1
;
Rect
equRect
;
ConcurrentRectVector
*
vec
;
std
::
vector
<
int
>*
rejectLevels
;
std
::
vector
<
double
>*
levelWeights
;
};
...
...
@@ -983,10 +1012,11 @@ struct HaarDetectObjects_ScaleCascade_Invoker
CV_IMPL
CvSeq
*
cvHaarDetectObjects
(
const
CvArr
*
_img
,
CvHaarClassifierCascade
*
cascade
,
CvMemStorage
*
storage
,
double
scaleFactor
,
int
minNeighbors
,
int
flags
,
CvSize
minSize
,
CvSize
maxSize
)
cvHaarDetectObjectsForROC
(
const
CvArr
*
_img
,
CvHaarClassifierCascade
*
cascade
,
CvMemStorage
*
storage
,
std
::
vector
<
int
>&
rejectLevels
,
std
::
vector
<
double
>&
levelWeights
,
double
scaleFactor
,
int
minNeighbors
,
int
flags
,
CvSize
minSize
,
CvSize
maxSize
,
bool
outputRejectLevels
)
{
const
double
GROUP_EPS
=
0.2
;
CvMat
stub
,
*
img
=
(
CvMat
*
)
_img
;
...
...
@@ -1119,7 +1149,7 @@ cvHaarDetectObjects( const CvArr* _img,
cv
::
HaarDetectObjects_ScaleImage_Invoker
(
cascade
,
(((
sz1
.
height
+
stripCount
-
1
)
/
stripCount
+
ystep
-
1
)
/
ystep
)
*
ystep
,
factor
,
cv
::
Mat
(
&
sum1
),
cv
::
Mat
(
&
sqsum1
),
&
_norm1
,
&
_mask1
,
cv
::
Rect
(
equRect
),
allCandidates
));
cv
::
Rect
(
equRect
),
allCandidates
,
rejectLevels
,
levelWeights
,
outputRejectLevels
));
}
}
else
...
...
@@ -1250,7 +1280,16 @@ cvHaarDetectObjects( const CvArr* _img,
std
::
copy
(
allCandidates
.
begin
(),
allCandidates
.
end
(),
rectList
.
begin
());
if
(
minNeighbors
!=
0
||
findBiggestObject
)
groupRectangles
(
rectList
,
rweights
,
std
::
max
(
minNeighbors
,
1
),
GROUP_EPS
);
{
if
(
outputRejectLevels
)
{
groupRectangles
(
rectList
,
rejectLevels
,
levelWeights
,
minNeighbors
,
GROUP_EPS
);
}
else
{
groupRectangles
(
rectList
,
rweights
,
std
::
max
(
minNeighbors
,
1
),
GROUP_EPS
);
}
}
else
rweights
.
resize
(
rectList
.
size
(),
0
);
...
...
@@ -1275,7 +1314,7 @@ cvHaarDetectObjects( const CvArr* _img,
{
CvAvgComp
c
;
c
.
rect
=
rectList
[
i
];
c
.
neighbors
=
rweights
[
i
]
;
c
.
neighbors
=
!
rweights
.
empty
()
?
rweights
[
i
]
:
0
;
cvSeqPush
(
result_seq
,
&
c
);
}
}
...
...
@@ -1283,6 +1322,19 @@ cvHaarDetectObjects( const CvArr* _img,
return
result_seq
;
}
CV_IMPL
CvSeq
*
cvHaarDetectObjects
(
const
CvArr
*
_img
,
CvHaarClassifierCascade
*
cascade
,
CvMemStorage
*
storage
,
double
scaleFactor
,
int
minNeighbors
,
int
flags
,
CvSize
minSize
,
CvSize
maxSize
)
{
std
::
vector
<
int
>
fakeLevels
;
std
::
vector
<
double
>
fakeWeights
;
return
cvHaarDetectObjectsForROC
(
_img
,
cascade
,
storage
,
fakeLevels
,
fakeWeights
,
scaleFactor
,
minNeighbors
,
flags
,
minSize
,
maxSize
,
false
);
}
static
CvHaarClassifierCascade
*
icvLoadCascadeCART
(
const
char
**
input_cascade
,
int
n
,
CvSize
orig_window_size
)
...
...
modules/python/src/cv.cpp
View file @
e9aa6fa0
...
...
@@ -3677,28 +3677,6 @@ static PyObject *pycvClipLine(PyObject *self, PyObject *args)
}
}
static
PyObject
*
pyfinddatamatrix
(
PyObject
*
self
,
PyObject
*
args
)
{
PyObject
*
pyim
;
if
(
!
PyArg_ParseTuple
(
args
,
"O"
,
&
pyim
))
return
NULL
;
CvMat
*
image
;
if
(
!
convert_to_CvMat
(
pyim
,
&
image
,
"image"
))
return
NULL
;
std
::
deque
<
DataMatrixCode
>
codes
;
ERRWRAP
(
codes
=
cvFindDataMatrix
(
image
));
PyObject
*
pycodes
=
PyList_New
(
codes
.
size
());
int
i
;
for
(
i
=
0
;
i
<
codes
.
size
();
i
++
)
{
DataMatrixCode
*
pc
=
&
codes
[
i
];
PyList_SetItem
(
pycodes
,
i
,
Py_BuildValue
(
"(sOO)"
,
pc
->
msg
,
FROM_CvMat
(
pc
->
corners
),
FROM_CvMat
(
pc
->
original
)));
}
return
pycodes
;
}
static
PyObject
*
temp_test
(
PyObject
*
self
,
PyObject
*
args
)
{
#if 0
...
...
@@ -3993,7 +3971,6 @@ static PyMethodDef methods[] = {
//{"_HOGDetect", (PyCFunction)pycvHOGDetect, METH_KEYWORDS, "_HOGDetect(image, svm_classifier, win_stride=block_stride, locations=None, padding=(0,0), win_size=(64,128), block_size=(16,16), block_stride=(8,8), cell_size=(8,8), nbins=9, gammaCorrection=true) -> list_of_points"},
//{"_HOGDetectMultiScale", (PyCFunction)pycvHOGDetectMultiScale, METH_KEYWORDS, "_HOGDetectMultiScale(image, svm_classifier, win_stride=block_stride, scale=1.05, group_threshold=2, padding=(0,0), win_size=(64,128), block_size=(16,16), block_stride=(8,8), cell_size=(8,8), nbins=9, gammaCorrection=true) -> list_of_points"},
{
"FindDataMatrix"
,
pyfinddatamatrix
,
METH_VARARGS
},
{
"temp_test"
,
temp_test
,
METH_VARARGS
},
#include "generated1.i"
...
...
samples/c/JCB.png
deleted
100644 → 0
View file @
06070dfc
372 Bytes
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