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
34c71621
Commit
34c71621
authored
Mar 14, 2013
by
peng xiao
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'upstream/2.4' into 2.4
parents
3a565e00
1d321974
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
157 additions
and
22 deletions
+157
-22
spinimages.cpp
modules/contrib/src/spinimages.cpp
+7
-7
perf_imgproc.cpp
modules/gpu/perf/perf_imgproc.cpp
+6
-1
color.cpp
modules/gpu/src/color.cpp
+41
-4
debayer.cu
modules/gpu/src/cuda/debayer.cu
+0
-0
test_color.cpp
modules/gpu/test/test_color.cpp
+64
-0
android+CameraBridgeViewBase.java
...java/generator/src/java/android+CameraBridgeViewBase.java
+18
-1
android+JavaCameraView.java
modules/java/generator/src/java/android+JavaCameraView.java
+6
-0
android+NativeCameraView.java
...les/java/generator/src/java/android+NativeCameraView.java
+6
-0
cv2.cpp
modules/python/src2/cv2.cpp
+5
-5
cv2.cv.hpp
modules/python/src2/cv2.cv.hpp
+2
-2
tutorial3_surface_view.xml
...ial-3-cameracontrol/res/layout/tutorial3_surface_view.xml
+2
-2
No files found.
modules/contrib/src/spinimages.cpp
View file @
34c71621
...
...
@@ -85,10 +85,10 @@ namespace
};
size_t
colors_mum
=
sizeof
(
colors
)
/
sizeof
(
colors
[
0
]);
#if (defined __cplusplus && __cplusplus > 199711L) || defined _STLPORT_MAJOR
#else
template
<
class
FwIt
,
class
T
>
void
iota
(
FwIt
first
,
FwIt
last
,
T
value
)
{
while
(
first
!=
last
)
*
first
++
=
value
++
;
}
#endif
template
<
class
FwIt
,
class
T
>
inline
void
_iota
(
FwIt
first
,
FwIt
last
,
T
value
)
{
while
(
first
!=
last
)
*
first
++
=
value
++
;
}
void
computeNormals
(
const
Octree
&
Octree
,
const
vector
<
Point3f
>&
centers
,
vector
<
Point3f
>&
normals
,
vector
<
uchar
>&
mask
,
float
normalRadius
,
int
minNeighbors
=
20
)
...
...
@@ -799,14 +799,14 @@ void cv::SpinImageModel::selectRandomSubset(float ratio)
else
if
(
setSize
==
vtxSize
)
{
subset
.
resize
(
vtxSize
);
iota
(
subset
.
begin
(),
subset
.
end
(),
0
);
_
iota
(
subset
.
begin
(),
subset
.
end
(),
0
);
}
else
{
RNG
&
rnd
=
theRNG
();
vector
<
size_t
>
left
(
vtxSize
);
iota
(
left
.
begin
(),
left
.
end
(),
(
size_t
)
0
);
_
iota
(
left
.
begin
(),
left
.
end
(),
(
size_t
)
0
);
subset
.
resize
(
setSize
);
for
(
size_t
i
=
0
;
i
<
setSize
;
++
i
)
...
...
@@ -879,7 +879,7 @@ void cv::SpinImageModel::compute()
{
mesh
.
computeNormals
(
normalRadius
,
minNeighbors
);
subset
.
resize
(
mesh
.
vtx
.
size
());
iota
(
subset
.
begin
(),
subset
.
end
(),
0
);
_
iota
(
subset
.
begin
(),
subset
.
end
(),
0
);
}
else
mesh
.
computeNormals
(
subset
,
normalRadius
,
minNeighbors
);
...
...
modules/gpu/perf/perf_imgproc.cpp
View file @
34c71621
...
...
@@ -1341,7 +1341,12 @@ PERF_TEST_P(Sz_Depth_Code, ImgProc_CvtColorBayer,
Values
(
CvtColorInfo
(
1
,
3
,
cv
::
COLOR_BayerBG2BGR
),
CvtColorInfo
(
1
,
3
,
cv
::
COLOR_BayerGB2BGR
),
CvtColorInfo
(
1
,
3
,
cv
::
COLOR_BayerRG2BGR
),
CvtColorInfo
(
1
,
3
,
cv
::
COLOR_BayerGR2BGR
))))
CvtColorInfo
(
1
,
3
,
cv
::
COLOR_BayerGR2BGR
),
CvtColorInfo
(
1
,
1
,
cv
::
COLOR_BayerBG2GRAY
),
CvtColorInfo
(
1
,
1
,
cv
::
COLOR_BayerGB2GRAY
),
CvtColorInfo
(
1
,
1
,
cv
::
COLOR_BayerRG2GRAY
),
CvtColorInfo
(
1
,
1
,
cv
::
COLOR_BayerGR2GRAY
))))
{
const
cv
::
Size
size
=
GET_PARAM
(
0
);
const
int
depth
=
GET_PARAM
(
1
);
...
...
modules/gpu/src/color.cpp
View file @
34c71621
...
...
@@ -1640,6 +1640,43 @@ namespace
{
bayer_to_bgr
(
src
,
dst
,
dcn
,
true
,
true
,
stream
);
}
void
bayer_to_gray
(
const
GpuMat
&
src
,
GpuMat
&
dst
,
bool
blue_last
,
bool
start_with_green
,
Stream
&
stream
)
{
typedef
void
(
*
func_t
)(
PtrStepSzb
src
,
PtrStepSzb
dst
,
bool
blue_last
,
bool
start_with_green
,
cudaStream_t
stream
);
static
const
func_t
funcs
[
3
]
=
{
Bayer2BGR_8u_gpu
<
1
>
,
0
,
Bayer2BGR_16u_gpu
<
1
>
,
};
CV_Assert
(
src
.
type
()
==
CV_8UC1
||
src
.
type
()
==
CV_16UC1
);
CV_Assert
(
src
.
rows
>
2
&&
src
.
cols
>
2
);
dst
.
create
(
src
.
size
(),
CV_MAKETYPE
(
src
.
depth
(),
1
));
funcs
[
src
.
depth
()](
src
,
dst
,
blue_last
,
start_with_green
,
StreamAccessor
::
getStream
(
stream
));
}
void
bayerBG_to_gray
(
const
GpuMat
&
src
,
GpuMat
&
dst
,
int
/*dcn*/
,
Stream
&
stream
)
{
bayer_to_gray
(
src
,
dst
,
false
,
false
,
stream
);
}
void
bayerGB_to_gray
(
const
GpuMat
&
src
,
GpuMat
&
dst
,
int
/*dcn*/
,
Stream
&
stream
)
{
bayer_to_gray
(
src
,
dst
,
false
,
true
,
stream
);
}
void
bayerRG_to_gray
(
const
GpuMat
&
src
,
GpuMat
&
dst
,
int
/*dcn*/
,
Stream
&
stream
)
{
bayer_to_gray
(
src
,
dst
,
true
,
false
,
stream
);
}
void
bayerGR_to_gray
(
const
GpuMat
&
src
,
GpuMat
&
dst
,
int
/*dcn*/
,
Stream
&
stream
)
{
bayer_to_gray
(
src
,
dst
,
true
,
true
,
stream
);
}
}
void
cv
::
gpu
::
cvtColor
(
const
GpuMat
&
src
,
GpuMat
&
dst
,
int
code
,
int
dcn
,
Stream
&
stream
)
...
...
@@ -1756,10 +1793,10 @@ void cv::gpu::cvtColor(const GpuMat& src, GpuMat& dst, int code, int dcn, Stream
yuv_to_bgr
,
// CV_YUV2BGR = 84
yuv_to_rgb
,
// CV_YUV2RGB = 85
0
,
// CV_BayerBG2GRAY = 86
0
,
// CV_BayerGB2GRAY = 87
0
,
// CV_BayerRG2GRAY = 88
0
,
// CV_BayerGR2GRAY = 89
bayerBG_to_gray
,
// CV_BayerBG2GRAY = 86
bayerGB_to_gray
,
// CV_BayerGB2GRAY = 87
bayerRG_to_gray
,
// CV_BayerRG2GRAY = 88
bayerGR_to_gray
,
// CV_BayerGR2GRAY = 89
//YUV 4:2:0 formats family
0
,
// CV_YUV2RGB_NV12 = 90,
...
...
modules/gpu/src/cuda/debayer.cu
View file @
34c71621
This diff is collapsed.
Click to expand it.
modules/gpu/test/test_color.cpp
View file @
34c71621
...
...
@@ -2218,6 +2218,70 @@ GPU_TEST_P(CvtColor, BayerGR2BGR4)
EXPECT_MAT_NEAR
(
dst_gold
(
cv
::
Rect
(
1
,
1
,
dst
.
cols
-
2
,
dst
.
rows
-
2
)),
dst3
(
cv
::
Rect
(
1
,
1
,
dst
.
cols
-
2
,
dst
.
rows
-
2
)),
0
);
}
GPU_TEST_P
(
CvtColor
,
BayerBG2Gray
)
{
if
((
depth
!=
CV_8U
&&
depth
!=
CV_16U
)
||
useRoi
)
return
;
cv
::
Mat
src
=
randomMat
(
size
,
depth
);
cv
::
gpu
::
GpuMat
dst
;
cv
::
gpu
::
cvtColor
(
loadMat
(
src
,
useRoi
),
dst
,
cv
::
COLOR_BayerBG2GRAY
);
cv
::
Mat
dst_gold
;
cv
::
cvtColor
(
src
,
dst_gold
,
cv
::
COLOR_BayerBG2GRAY
);
EXPECT_MAT_NEAR
(
dst_gold
(
cv
::
Rect
(
1
,
1
,
dst
.
cols
-
2
,
dst
.
rows
-
2
)),
dst
(
cv
::
Rect
(
1
,
1
,
dst
.
cols
-
2
,
dst
.
rows
-
2
)),
2
);
}
GPU_TEST_P
(
CvtColor
,
BayerGB2Gray
)
{
if
((
depth
!=
CV_8U
&&
depth
!=
CV_16U
)
||
useRoi
)
return
;
cv
::
Mat
src
=
randomMat
(
size
,
depth
);
cv
::
gpu
::
GpuMat
dst
;
cv
::
gpu
::
cvtColor
(
loadMat
(
src
,
useRoi
),
dst
,
cv
::
COLOR_BayerGB2GRAY
);
cv
::
Mat
dst_gold
;
cv
::
cvtColor
(
src
,
dst_gold
,
cv
::
COLOR_BayerGB2GRAY
);
EXPECT_MAT_NEAR
(
dst_gold
(
cv
::
Rect
(
1
,
1
,
dst
.
cols
-
2
,
dst
.
rows
-
2
)),
dst
(
cv
::
Rect
(
1
,
1
,
dst
.
cols
-
2
,
dst
.
rows
-
2
)),
2
);
}
GPU_TEST_P
(
CvtColor
,
BayerRG2Gray
)
{
if
((
depth
!=
CV_8U
&&
depth
!=
CV_16U
)
||
useRoi
)
return
;
cv
::
Mat
src
=
randomMat
(
size
,
depth
);
cv
::
gpu
::
GpuMat
dst
;
cv
::
gpu
::
cvtColor
(
loadMat
(
src
,
useRoi
),
dst
,
cv
::
COLOR_BayerRG2GRAY
);
cv
::
Mat
dst_gold
;
cv
::
cvtColor
(
src
,
dst_gold
,
cv
::
COLOR_BayerRG2GRAY
);
EXPECT_MAT_NEAR
(
dst_gold
(
cv
::
Rect
(
1
,
1
,
dst
.
cols
-
2
,
dst
.
rows
-
2
)),
dst
(
cv
::
Rect
(
1
,
1
,
dst
.
cols
-
2
,
dst
.
rows
-
2
)),
2
);
}
GPU_TEST_P
(
CvtColor
,
BayerGR2Gray
)
{
if
((
depth
!=
CV_8U
&&
depth
!=
CV_16U
)
||
useRoi
)
return
;
cv
::
Mat
src
=
randomMat
(
size
,
depth
);
cv
::
gpu
::
GpuMat
dst
;
cv
::
gpu
::
cvtColor
(
loadMat
(
src
,
useRoi
),
dst
,
cv
::
COLOR_BayerGR2GRAY
);
cv
::
Mat
dst_gold
;
cv
::
cvtColor
(
src
,
dst_gold
,
cv
::
COLOR_BayerGR2GRAY
);
EXPECT_MAT_NEAR
(
dst_gold
(
cv
::
Rect
(
1
,
1
,
dst
.
cols
-
2
,
dst
.
rows
-
2
)),
dst
(
cv
::
Rect
(
1
,
1
,
dst
.
cols
-
2
,
dst
.
rows
-
2
)),
2
);
}
INSTANTIATE_TEST_CASE_P
(
GPU_ImgProc
,
CvtColor
,
testing
::
Combine
(
ALL_DEVICES
,
DIFFERENT_SIZES
,
...
...
modules/java/generator/src/java/android+CameraBridgeViewBase.java
View file @
34c71621
...
...
@@ -15,6 +15,7 @@ import android.content.DialogInterface;
import
android.content.res.TypedArray
;
import
android.graphics.Bitmap
;
import
android.graphics.Canvas
;
import
android.graphics.Rect
;
import
android.util.AttributeSet
;
import
android.util.Log
;
import
android.view.SurfaceHolder
;
...
...
@@ -44,6 +45,7 @@ public abstract class CameraBridgeViewBase extends SurfaceView implements Surfac
protected
int
mFrameHeight
;
protected
int
mMaxHeight
;
protected
int
mMaxWidth
;
protected
float
mScale
=
0
;
protected
int
mPreviewFormat
=
Highgui
.
CV_CAP_ANDROID_COLOR_FRAME_RGBA
;
protected
int
mCameraIndex
=
-
1
;
protected
boolean
mEnabled
;
...
...
@@ -389,7 +391,22 @@ public abstract class CameraBridgeViewBase extends SurfaceView implements Surfac
Canvas
canvas
=
getHolder
().
lockCanvas
();
if
(
canvas
!=
null
)
{
canvas
.
drawColor
(
0
,
android
.
graphics
.
PorterDuff
.
Mode
.
CLEAR
);
canvas
.
drawBitmap
(
mCacheBitmap
,
(
canvas
.
getWidth
()
-
mCacheBitmap
.
getWidth
())
/
2
,
(
canvas
.
getHeight
()
-
mCacheBitmap
.
getHeight
())
/
2
,
null
);
Log
.
d
(
TAG
,
"mStretch value: "
+
mScale
);
if
(
mScale
!=
0
)
{
canvas
.
drawBitmap
(
mCacheBitmap
,
new
Rect
(
0
,
0
,
mCacheBitmap
.
getWidth
(),
mCacheBitmap
.
getHeight
()),
new
Rect
((
int
)((
canvas
.
getWidth
()
-
mScale
*
mCacheBitmap
.
getWidth
())
/
2
),
(
int
)((
canvas
.
getHeight
()
-
mScale
*
mCacheBitmap
.
getHeight
())
/
2
),
(
int
)((
canvas
.
getWidth
()
-
mScale
*
mCacheBitmap
.
getWidth
())
/
2
+
mScale
*
mCacheBitmap
.
getWidth
()),
(
int
)((
canvas
.
getHeight
()
-
mScale
*
mCacheBitmap
.
getHeight
())
/
2
+
mScale
*
mCacheBitmap
.
getHeight
())),
null
);
}
else
{
canvas
.
drawBitmap
(
mCacheBitmap
,
new
Rect
(
0
,
0
,
mCacheBitmap
.
getWidth
(),
mCacheBitmap
.
getHeight
()),
new
Rect
((
canvas
.
getWidth
()
-
mCacheBitmap
.
getWidth
())
/
2
,
(
canvas
.
getHeight
()
-
mCacheBitmap
.
getHeight
())
/
2
,
(
canvas
.
getWidth
()
-
mCacheBitmap
.
getWidth
())
/
2
+
mCacheBitmap
.
getWidth
(),
(
canvas
.
getHeight
()
-
mCacheBitmap
.
getHeight
())
/
2
+
mCacheBitmap
.
getHeight
()),
null
);
}
if
(
mFpsMeter
!=
null
)
{
mFpsMeter
.
measure
();
mFpsMeter
.
draw
(
canvas
,
20
,
30
);
...
...
modules/java/generator/src/java/android+JavaCameraView.java
View file @
34c71621
...
...
@@ -10,6 +10,7 @@ import android.hardware.Camera.PreviewCallback;
import
android.os.Build
;
import
android.util.AttributeSet
;
import
android.util.Log
;
import
android.view.ViewGroup.LayoutParams
;
import
org.opencv.core.CvType
;
import
org.opencv.core.Mat
;
...
...
@@ -130,6 +131,11 @@ public class JavaCameraView extends CameraBridgeViewBase implements PreviewCallb
mFrameWidth
=
params
.
getPreviewSize
().
width
;
mFrameHeight
=
params
.
getPreviewSize
().
height
;
if
((
getLayoutParams
().
width
==
LayoutParams
.
MATCH_PARENT
)
&&
(
getLayoutParams
().
height
==
LayoutParams
.
MATCH_PARENT
))
mScale
=
Math
.
min
(((
float
)
height
)/
mFrameHeight
,
((
float
)
width
)/
mFrameWidth
);
else
mScale
=
0
;
if
(
mFpsMeter
!=
null
)
{
mFpsMeter
.
setResolution
(
mFrameWidth
,
mFrameHeight
);
}
...
...
modules/java/generator/src/java/android+NativeCameraView.java
View file @
34c71621
...
...
@@ -8,6 +8,7 @@ import org.opencv.highgui.VideoCapture;
import
android.content.Context
;
import
android.util.AttributeSet
;
import
android.util.Log
;
import
android.view.ViewGroup.LayoutParams
;
/**
* This class is an implementation of a bridge between SurfaceView and native OpenCV camera.
...
...
@@ -102,6 +103,11 @@ public class NativeCameraView extends CameraBridgeViewBase {
mFrameWidth
=
(
int
)
frameSize
.
width
;
mFrameHeight
=
(
int
)
frameSize
.
height
;
if
((
getLayoutParams
().
width
==
LayoutParams
.
MATCH_PARENT
)
&&
(
getLayoutParams
().
height
==
LayoutParams
.
MATCH_PARENT
))
mScale
=
Math
.
min
(((
float
)
height
)/
mFrameHeight
,
((
float
)
width
)/
mFrameWidth
);
else
mScale
=
0
;
if
(
mFpsMeter
!=
null
)
{
mFpsMeter
.
setResolution
(
mFrameWidth
,
mFrameHeight
);
}
...
...
modules/python/src2/cv2.cpp
View file @
34c71621
...
...
@@ -510,7 +510,7 @@ static bool pyopencv_to(PyObject* obj, double& value, const char* name = "<unkno
(
void
)
name
;
if
(
!
obj
||
obj
==
Py_None
)
return
true
;
if
(
PyInt_CheckExact
(
obj
))
if
(
!!
PyInt_CheckExact
(
obj
))
value
=
(
double
)
PyInt_AS_LONG
(
obj
);
else
value
=
PyFloat_AsDouble
(
obj
);
...
...
@@ -527,7 +527,7 @@ static bool pyopencv_to(PyObject* obj, float& value, const char* name = "<unknow
(
void
)
name
;
if
(
!
obj
||
obj
==
Py_None
)
return
true
;
if
(
PyInt_CheckExact
(
obj
))
if
(
!!
PyInt_CheckExact
(
obj
))
value
=
(
float
)
PyInt_AS_LONG
(
obj
);
else
value
=
(
float
)
PyFloat_AsDouble
(
obj
);
...
...
@@ -623,7 +623,7 @@ static inline bool pyopencv_to(PyObject* obj, Point& p, const char* name = "<unk
(
void
)
name
;
if
(
!
obj
||
obj
==
Py_None
)
return
true
;
if
(
PyComplex_CheckExact
(
obj
))
if
(
!!
PyComplex_CheckExact
(
obj
))
{
Py_complex
c
=
PyComplex_AsCComplex
(
obj
);
p
.
x
=
saturate_cast
<
int
>
(
c
.
real
);
...
...
@@ -638,7 +638,7 @@ static inline bool pyopencv_to(PyObject* obj, Point2f& p, const char* name = "<u
(
void
)
name
;
if
(
!
obj
||
obj
==
Py_None
)
return
true
;
if
(
PyComplex_CheckExact
(
obj
))
if
(
!!
PyComplex_CheckExact
(
obj
))
{
Py_complex
c
=
PyComplex_AsCComplex
(
obj
);
p
.
x
=
saturate_cast
<
float
>
(
c
.
real
);
...
...
@@ -989,7 +989,7 @@ static bool pyopencv_to(PyObject *o, cv::flann::IndexParams& p, const char *name
const
char
*
value
=
PyString_AsString
(
item
);
p
.
setString
(
k
,
value
);
}
else
if
(
PyBool_Check
(
item
)
)
else
if
(
!!
PyBool_Check
(
item
)
)
p
.
setBool
(
k
,
item
==
Py_True
);
else
if
(
PyInt_Check
(
item
)
)
{
...
...
modules/python/src2/cv2.cv.hpp
View file @
34c71621
...
...
@@ -1158,7 +1158,7 @@ static PyObject* cvseq_map_getitem(PyObject *o, PyObject *item)
if
(
i
<
0
)
i
+=
(
int
)
cvseq_seq_length
(
o
);
return
cvseq_seq_getitem
(
o
,
i
);
}
else
if
(
PySlice_Check
(
item
))
{
}
else
if
(
!!
PySlice_Check
(
item
))
{
Py_ssize_t
start
,
stop
,
step
,
slicelength
,
cur
,
i
;
PyObject
*
result
;
...
...
@@ -1975,7 +1975,7 @@ struct dims
static
int
convert_to_dim
(
PyObject
*
item
,
int
i
,
dims
*
dst
,
CvArr
*
cva
,
const
char
*
name
=
"no_name"
)
{
if
(
PySlice_Check
(
item
))
{
if
(
!!
PySlice_Check
(
item
))
{
Py_ssize_t
start
,
stop
,
step
,
slicelength
;
PySlice_GetIndicesEx
((
PySliceObject
*
)
item
,
cvGetDimSize
(
cva
,
i
),
&
start
,
&
stop
,
&
step
,
&
slicelength
);
dst
->
i
[
i
]
=
(
int
)
start
;
...
...
samples/android/tutorial-3-cameracontrol/res/layout/tutorial3_surface_view.xml
View file @
34c71621
...
...
@@ -4,8 +4,8 @@
android:layout_height=
"match_parent"
>
<org.opencv.samples.tutorial3.Tutorial3View
android:layout_width=
"
fill
_parent"
android:layout_height=
"
fill
_parent"
android:layout_width=
"
match
_parent"
android:layout_height=
"
match
_parent"
android:visibility=
"gone"
android:id=
"@+id/tutorial3_activity_java_surface_view"
/>
...
...
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