Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
56b5e6d8
O
Opencv
项目概览
Greenplum
/
Opencv
大约 1 年 前同步成功
通知
7
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
Opencv
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
56b5e6d8
编写于
4月 02, 2012
作者:
A
Alexey Spizhevoy
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Updated videostab module
上级
abbfa848
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
19 addition
and
39 deletion
+19
-39
modules/videostab/include/opencv2/videostab/frame_source.hpp
modules/videostab/include/opencv2/videostab/frame_source.hpp
+3
-1
modules/videostab/include/opencv2/videostab/motion_stabilizing.hpp
...ideostab/include/opencv2/videostab/motion_stabilizing.hpp
+5
-20
modules/videostab/include/opencv2/videostab/stabilizer.hpp
modules/videostab/include/opencv2/videostab/stabilizer.hpp
+1
-3
modules/videostab/src/motion_stabilizing.cpp
modules/videostab/src/motion_stabilizing.cpp
+5
-3
modules/videostab/src/stabilizer.cpp
modules/videostab/src/stabilizer.cpp
+2
-9
samples/cpp/videostab.cpp
samples/cpp/videostab.cpp
+3
-3
未找到文件。
modules/videostab/include/opencv2/videostab/frame_source.hpp
浏览文件 @
56b5e6d8
...
...
@@ -76,7 +76,9 @@ public:
virtual
void
reset
();
virtual
Mat
nextFrame
();
int
frameCount
()
{
return
static_cast
<
int
>
(
reader_
.
get
(
CV_CAP_PROP_FRAME_COUNT
));
}
int
width
()
{
return
static_cast
<
int
>
(
reader_
.
get
(
CV_CAP_PROP_FRAME_WIDTH
));
}
int
height
()
{
return
static_cast
<
int
>
(
reader_
.
get
(
CV_CAP_PROP_FRAME_HEIGHT
));
}
int
count
()
{
return
static_cast
<
int
>
(
reader_
.
get
(
CV_CAP_PROP_FRAME_COUNT
));
}
double
fps
()
{
return
reader_
.
get
(
CV_CAP_PROP_FPS
);
}
private:
...
...
modules/videostab/include/opencv2/videostab/motion_stabilizing.hpp
浏览文件 @
56b5e6d8
...
...
@@ -54,46 +54,31 @@ namespace videostab
class
CV_EXPORTS
IMotionStabilizer
{
public:
virtual
~
IMotionStabilizer
()
{}
virtual
void
stabilize
(
const
Mat
*
motions
,
int
size
,
Mat
*
stabilizationMotions
)
const
=
0
;
};
class
CV_EXPORTS
MotionFilterBase
:
public
IMotionStabilizer
{
public:
MotionFilterBase
()
:
radius_
(
0
)
{}
virtual
~
MotionFilterBase
()
{}
virtual
void
setRadius
(
int
val
)
{
radius_
=
val
;
}
virtual
int
radius
()
const
{
return
radius_
;
}
virtual
void
update
()
{}
virtual
Mat
stabilize
(
int
index
,
const
Mat
*
motions
,
int
size
)
const
=
0
;
virtual
void
stabilize
(
const
Mat
*
motions
,
int
size
,
Mat
*
stabilizationMotions
)
const
;
protected:
int
radius_
;
};
class
CV_EXPORTS
GaussianMotionFilter
:
public
MotionFilterBase
{
public:
GaussianMotionFilter
()
:
stdev_
(
-
1.
f
)
{}
GaussianMotionFilter
(
int
radius
,
float
stdev
=
-
1.
f
)
{
setRadius
(
radius
);
setStdev
(
stdev
);
update
();
}
GaussianMotionFilter
(
int
radius
=
15
,
float
stdev
=
-
1.
f
)
{
setParams
(
radius
,
stdev
);
}
void
setStdev
(
float
val
)
{
stdev_
=
val
;
}
void
setParams
(
int
radius
,
float
stdev
=
-
1.
f
);
int
radius
()
const
{
return
radius_
;
}
float
stdev
()
const
{
return
stdev_
;
}
virtual
void
update
();
virtual
Mat
stabilize
(
int
index
,
const
Mat
*
motions
,
int
size
)
const
;
private:
int
radius_
;
float
stdev_
;
std
::
vector
<
float
>
weight_
;
};
...
...
modules/videostab/include/opencv2/videostab/stabilizer.hpp
浏览文件 @
56b5e6d8
...
...
@@ -136,12 +136,10 @@ public:
void
setMotionFilter
(
Ptr
<
MotionFilterBase
>
val
)
{
motionFilter_
=
val
;
}
Ptr
<
MotionFilterBase
>
motionFilter
()
const
{
return
motionFilter_
;
}
virtual
void
reset
()
{
resetImpl
();
}
virtual
void
reset
()
;
virtual
Mat
nextFrame
()
{
return
nextStabilizedFrame
();
}
private:
void
resetImpl
();
virtual
void
setUp
(
Mat
&
firstFrame
);
virtual
void
estimateMotion
();
virtual
void
stabilizeFrame
();
...
...
modules/videostab/src/motion_stabilizing.cpp
浏览文件 @
56b5e6d8
...
...
@@ -58,13 +58,15 @@ void MotionFilterBase::stabilize(const Mat *motions, int size, Mat *stabilizatio
}
void
GaussianMotionFilter
::
update
(
)
void
GaussianMotionFilter
::
setParams
(
int
radius
,
float
stdev
)
{
float
sigma
=
stdev_
>
0.
f
?
stdev_
:
sqrt
(
static_cast
<
float
>
(
radius_
));
radius_
=
radius
;
stdev_
=
stdev
>
0.
f
?
stdev
:
sqrt
(
static_cast
<
float
>
(
radius_
));
float
sum
=
0
;
weight_
.
resize
(
2
*
radius_
+
1
);
for
(
int
i
=
-
radius_
;
i
<=
radius_
;
++
i
)
sum
+=
weight_
[
radius_
+
i
]
=
std
::
exp
(
-
i
*
i
/
(
s
igma
*
sigma
));
sum
+=
weight_
[
radius_
+
i
]
=
std
::
exp
(
-
i
*
i
/
(
s
tdev_
*
stdev_
));
for
(
int
i
=
-
radius_
;
i
<=
radius_
;
++
i
)
weight_
[
radius_
+
i
]
/=
sum
;
}
...
...
modules/videostab/src/stabilizer.cpp
浏览文件 @
56b5e6d8
...
...
@@ -199,11 +199,11 @@ void StabilizerBase::stabilizeFrame(const Mat &stabilizationMotion)
OnePassStabilizer
::
OnePassStabilizer
()
{
setMotionFilter
(
new
GaussianMotionFilter
());
reset
Impl
();
reset
();
}
void
OnePassStabilizer
::
reset
Impl
()
void
OnePassStabilizer
::
reset
()
{
curPos_
=
-
1
;
curStabilizedPos_
=
-
1
;
...
...
@@ -238,8 +238,6 @@ void OnePassStabilizer::setUp(Mat &firstFrame)
at
(
0
,
frames_
)
=
firstFrame
;
motionFilter_
->
update
();
StabilizerBase
::
setUp
(
cacheSize
,
firstFrame
);
}
...
...
@@ -327,11 +325,6 @@ void TwoPassStabilizer::runPrePassIfNecessary()
motions_
.
push_back
(
Mat
::
eye
(
3
,
3
,
CV_32F
));
log_
->
print
(
"
\n
"
);
IMotionStabilizer
*
motionStabilizer
=
static_cast
<
IMotionStabilizer
*>
(
motionStabilizer_
);
MotionFilterBase
*
motionFilterBase
=
dynamic_cast
<
MotionFilterBase
*>
(
motionStabilizer
);
if
(
motionFilterBase
)
motionFilterBase
->
update
();
stabilizationMotions_
.
resize
(
frameCount_
);
motionStabilizer_
->
stabilize
(
&
motions_
[
0
],
frameCount_
,
&
stabilizationMotions_
[
0
]);
...
...
samples/cpp/videostab.cpp
浏览文件 @
56b5e6d8
...
...
@@ -148,7 +148,7 @@ void printHelp()
" --deblur-sens=<float_number>
\n
"
" Set deblurring sensitivity (from 0 to +inf). The default is 0.1.
\n\n
"
" -t, --trim-ratio=<float_number>
\n
"
" Set trimming ratio (from 0 to 0.5). The default is 0.
0
.
\n
"
" Set trimming ratio (from 0 to 0.5). The default is 0.
1
.
\n
"
" --est-trim=(yes|no)
\n
"
" Estimate trim ratio automatically. The default is yes (that leads to two passes,
\n
"
" you can turn it off if you want to use one pass only).
\n
"
...
...
@@ -197,7 +197,7 @@ int main(int argc, const char **argv)
"{ | deblur | no | }"
"{ | deblur-sens | 0.1 | }"
"{ | est-trim | yes | }"
"{ t | trim-ratio | 0.
0
| }"
"{ t | trim-ratio | 0.
1
| }"
"{ | incl-constr | no | }"
"{ | border-mode | replicate | }"
"{ | mosaic | no | }"
...
...
@@ -248,7 +248,7 @@ int main(int argc, const char **argv)
if
(
inputPath
.
empty
())
throw
runtime_error
(
"specify video file path"
);
VideoFileSource
*
source
=
new
VideoFileSource
(
inputPath
);
cout
<<
"frame count: "
<<
source
->
frameC
ount
()
<<
endl
;
cout
<<
"frame count: "
<<
source
->
c
ount
()
<<
endl
;
if
(
arg
(
"fps"
)
==
"auto"
)
outputFps
=
source
->
fps
();
else
outputFps
=
argd
(
"fps"
);
stabilizer
->
setFrameSource
(
source
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录