Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
46fa7b49
O
Opencv
项目概览
Greenplum
/
Opencv
11 个月 前同步成功
通知
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,发现更多精彩内容 >>
提交
46fa7b49
编写于
2月 06, 2012
作者:
A
Alexander Reshetnikov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
updated positioning test for videos
上级
aa9735f9
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
44 addition
and
31 deletion
+44
-31
modules/highgui/test/test_positioning.cpp
modules/highgui/test/test_positioning.cpp
+44
-31
未找到文件。
modules/highgui/test/test_positioning.cpp
浏览文件 @
46fa7b49
...
...
@@ -45,7 +45,8 @@ CV_VideoRandomPositioningTest::~CV_VideoRandomPositioningTest() {}
void
CV_VideoPositioningTest
::
generate_idx_seq
(
CvCapture
*
cap
,
int
method
)
{
idx
.
clear
();
int
N
=
(
int
)
cvGetCaptureProperty
(
cap
,
CV_CAP_PROP_FRAME_COUNT
);
int
N
=
(
int
)
cvGetCaptureProperty
(
cap
,
CV_CAP_PROP_FRAME_COUNT
);
// cout << endl; cout << "Frame count: " << N << endl; cout << endl;
switch
(
method
)
{
case
PROGRESSIVE
:
...
...
@@ -65,7 +66,7 @@ void CV_VideoPositioningTest::generate_idx_seq(CvCapture* cap, int method)
idx
.
clear
();
for
(
int
i
=
0
;
i
<
N
-
1
;
i
++
)
idx
.
push_back
(
rng
.
uniform
(
0
,
N
));
idx
.
push_back
(
N
-
1
);
idx
.
push_back
(
N
-
1
);
std
::
swap
(
idx
.
at
(
rng
.
uniform
(
0
,
N
-
1
)),
idx
.
at
(
N
-
1
));
break
;
}
...
...
@@ -79,13 +80,11 @@ void CV_VideoPositioningTest::run_test(int method)
ts
->
printf
(
cvtest
::
TS
::
LOG
,
"
\n\n
Source files directory: %s
\n
"
,
(
src_dir
+
"../perf/video/"
).
c_str
());
const
string
ext
[]
=
{
"mov"
,
"avi"
,
"mp4"
,
"mpg"
,
"wmv"
};
const
string
ext
[]
=
{
/* "mov", */
"avi"
/*, "mp4", "mpg", "wmv"*/
};
const
int
time_sec
=
5
,
fps
=
25
;
size_t
n
=
sizeof
(
ext
)
/
sizeof
(
ext
[
0
])
;
size_t
n
=
sizeof
(
ext
)
/
sizeof
(
ext
[
0
]);
int
failed
=
0
;
int
failed_videos
=
0
;
for
(
size_t
i
=
0
;
i
<
n
;
++
i
)
{
...
...
@@ -96,49 +95,63 @@ void CV_VideoPositioningTest::run_test(int method)
if
(
!
cap
)
{
ts
->
printf
(
cvtest
::
TS
::
LOG
,
"
\n
File information (video %d):
\n\n
Name: big_buck_bunny.%s
\n
FAILED
\n\n
"
,
i
+
1
,
ext
[
i
].
c_str
());
ts
->
printf
(
cvtest
::
TS
::
LOG
,
"Error: cannot read source video file.
\n
"
);
ts
->
printf
(
cvtest
::
TS
::
LOG
,
"Error: cannot read source video file.
\n
"
);
ts
->
set_failed_test_info
(
cvtest
::
TS
::
FAIL_INVALID_TEST_DATA
);
failed
++
;
continue
;
failed_videos
++
;
continue
;
}
cvSetCaptureProperty
(
cap
,
CV_CAP_PROP_POS_FRAMES
,
0
);
generate_idx_seq
(
cap
,
method
);
int
N
=
idx
.
size
(),
failed_frames
=
0
;
bool
flag
=
false
;
int
N
=
idx
.
size
(),
failed_frames
=
0
,
failed_positions
=
0
;
for
(
int
j
=
0
;
j
<
N
;
++
j
)
for
(
int
j
=
0
;
j
<
N
;
++
j
)
{
bool
res
=
cvSetCaptureProperty
(
cap
,
CV_CAP_PROP_POS_FRAMES
,
(
double
)
idx
.
at
(
j
));
IplImage
*
frame
=
cvRetrieveFrame
(
cap
);
cvSetCaptureProperty
(
cap
,
CV_CAP_PROP_POS_FRAMES
,
idx
.
at
(
j
));
if
(
!
frame
)
{
if
(
!
flag
)
failed
++
;
flag
=
true
;
if
(
!
failed_frames
)
ts
->
printf
(
cvtest
::
TS
::
LOG
,
"
\n
File information (video %d):
\n\n
Name: big_buck_bunny.%s
\n
FAILED
\n\n
"
,
i
+
1
,
ext
[
i
].
c_str
());
ts
->
printf
(
cvtest
::
TS
::
LOG
,
"Error: cannot read a frame with index %d.
\n
"
,
idx
.
at
(
j
));
ts
->
set_failed_test_info
(
cvtest
::
TS
::
FAIL_EXCEPTION
);
failed_frames
++
;
}
IplImage
*
frame
=
cvRetrieveFrame
(
cap
);
if
(
idx
.
at
(
j
)
!=
cvGetCaptureProperty
(
cap
,
CV_CAP_PROP_POS_FRAMES
)
)
if
(
!
frame
)
{
ts
->
printf
(
cvtest
::
TS
::
LOG
,
"Iteration: %d
\n
"
\
"Actual pos: %d Returned pos: %d"
,
idx
.
at
(
j
),
cvGetCaptureProperty
(
cap
,
CV_CAP_PROP_POS_FRAMES
));
ts
->
printf
(
cvtest
::
TS
::
LOG
,
"Error: required and returned position are not matched.
\n
"
);
if
(
!
failed_frames
)
{
ts
->
printf
(
cvtest
::
TS
::
LOG
,
"
\n
File information (video %d):
\n\n
Name: big_buck_bunny.%s
\n
"
,
i
+
1
,
ext
[
i
].
c_str
());
}
failed_frames
++
;
ts
->
printf
(
cvtest
::
TS
::
LOG
,
"
\n
Iteration: %d
\n\n
Error: cannot read a frame with index %d.
\n
"
,
j
,
idx
.
at
(
j
));
ts
->
set_failed_test_info
(
cvtest
::
TS
::
FAIL_EXCEPTION
);
}
int
val
=
(
int
)
cvGetCaptureProperty
(
cap
,
CV_CAP_PROP_POS_FRAMES
);
if
(
idx
.
at
(
j
)
!=
val
)
{
if
(
!
(
failed_frames
||
failed_positions
))
{
ts
->
printf
(
cvtest
::
TS
::
LOG
,
"
\n
File information (video %d):
\n\n
Name: big_buck_bunny.%s
\n
"
,
i
+
1
,
ext
[
i
].
c_str
());
}
failed_positions
++
;
if
(
!
failed_frames
)
{
ts
->
printf
(
cvtest
::
TS
::
LOG
,
"
\n
Iteration: %d
\n
"
,
j
);
}
ts
->
printf
(
cvtest
::
TS
::
LOG
,
"Required pos: %d
\n
Returned pos: %d
\n
"
,
idx
.
at
(
j
),
val
);
ts
->
printf
(
cvtest
::
TS
::
LOG
,
"Error: required and returned positions are not matched.
\n
"
);
ts
->
set_failed_test_info
(
cvtest
::
TS
::
FAIL_INVALID_OUTPUT
);
}
cvReleaseImage
(
&
frame
);
}
if
(
failed_frames
||
failed_positions
)
{
ts
->
printf
(
cvtest
::
TS
::
LOG
,
"
\n
FAILED
\n
----------
\n
"
);
failed_videos
++
;
}
cvReleaseCapture
(
&
cap
);
}
ts
->
printf
(
cvtest
::
TS
::
LOG
,
"
\n
Successfull experiments: %d (%d%%)
\n
"
,
n
-
failed
,
100
*
(
n
-
failed
)
/
n
);
ts
->
printf
(
cvtest
::
TS
::
LOG
,
"Failed experiments: %d (%d%%)
\n
"
,
failed
,
100
*
failed
/
n
);
ts
->
printf
(
cvtest
::
TS
::
LOG
,
"
\n
Successfull experiments: %d (%d%%)
\n
"
,
n
-
failed_videos
,
100
*
(
n
-
failed_videos
)
/
n
);
ts
->
printf
(
cvtest
::
TS
::
LOG
,
"Failed experiments: %d (%d%%)
\n
"
,
failed_videos
,
100
*
failed_videos
/
n
);
}
void
CV_VideoProgressivePositioningTest
::
run
(
int
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录