Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
edf0b40d
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,发现更多精彩内容 >>
提交
edf0b40d
编写于
7月 07, 2011
作者:
A
Alexander Mordvintsev
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
opt_flow.py demo
上级
136d5b53
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
74 addition
and
27 deletion
+74
-27
samples/python2/opt_flow.py
samples/python2/opt_flow.py
+71
-26
samples/python2/video.py
samples/python2/video.py
+3
-1
未找到文件。
samples/python2/opt_flow.py
浏览文件 @
edf0b40d
import
numpy
as
np
import
cv2
,
cv
import
video
import
sys
try
:
fn
=
sys
.
argv
[
1
]
except
:
fn
=
video
.
presets
[
'chess'
]
help_message
=
'''
USAGE: opt_flow.py [<video_source>
]
cam
=
video
.
create_capture
(
fn
)
ret
,
prev
=
cam
.
read
()
#prev = cv2.pyrDown(prev)
prevgray
=
cv2
.
cvtColor
(
prev
,
cv
.
CV_BGR2GRAY
)
Keys:
1 - toggle HSV flow visualization
2 - toggle glitch
def
draw_flow
(
img
,
flow
,
step
):
'''
def
draw_flow
(
img
,
flow
,
step
=
16
):
h
,
w
=
img
.
shape
[:
2
]
y
,
x
=
map
(
np
.
ravel
,
np
.
mgrid
[
step
/
2
:
h
:
step
,
step
/
2
:
w
:
step
])
f
=
flow
[
y
,
x
]
x1
=
x
+
f
[:,
0
]
y1
=
y
+
f
[:,
1
]
#lines = np.int32( np.vstack([x, y, x1, y1]).T )
y
,
x
=
np
.
mgrid
[
step
/
2
:
h
:
step
,
step
/
2
:
w
:
step
].
reshape
(
2
,
-
1
)
fx
,
fy
=
flow
[
y
,
x
].
T
lines
=
np
.
vstack
([
x
,
y
,
x
+
fx
,
y
+
fy
]).
T
.
reshape
(
-
1
,
2
,
2
)
lines
=
np
.
int32
(
lines
+
0.5
)
vis
=
cv2
.
cvtColor
(
img
,
cv
.
CV_GRAY2BGR
)
#print lines
#cv2.polylines(vis, lines, 0, (0, 255, 0))
for
x_
,
y_
,
x1_
,
y1_
in
np
.
int32
(
zip
(
x
,
y
,
x1
,
y1
)):
cv2
.
line
(
vis
,
(
x_
,
y_
),
(
x1_
,
y1_
),
(
0
,
255
,
0
))
cv2
.
polylines
(
vis
,
lines
,
0
,
(
0
,
255
,
0
))
for
(
x1
,
y1
),
(
x2
,
y2
)
in
lines
:
cv2
.
circle
(
vis
,
(
x1
,
y1
),
1
,
(
0
,
255
,
0
),
-
1
)
return
vis
while
True
:
ret
,
img
=
cam
.
read
()
#img = cv2.pyrDown(img)
gray
=
cv2
.
cvtColor
(
img
,
cv
.
CV_BGR2GRAY
)
flow
=
cv2
.
calcOpticalFlowFarneback
(
prevgray
,
gray
,
0.5
,
3
,
15
,
3
,
5
,
1.2
,
0
)
prevgray
=
gray
def
draw_hsv
(
flow
):
h
,
w
=
flow
.
shape
[:
2
]
fx
,
fy
=
flow
[:,:,
0
],
flow
[:,:,
1
]
ang
=
np
.
arctan2
(
fy
,
fx
)
+
np
.
pi
v
=
np
.
sqrt
(
fx
*
fx
+
fy
*
fy
)
hsv
=
np
.
zeros
((
h
,
w
,
3
),
np
.
uint8
)
hsv
[...,
0
]
=
np
.
rad2deg
(
ang
)
/
2
hsv
[...,
1
]
=
255
hsv
[...,
2
]
=
np
.
minimum
(
v
*
4
,
255
)
bgr
=
cv2
.
cvtColor
(
hsv
,
cv
.
CV_HSV2BGR
)
return
bgr
def
warp_flow
(
img
,
flow
):
h
,
w
=
flow
.
shape
[:
2
]
flow
=
-
flow
flow
[:,:,
0
]
+=
np
.
arange
(
w
)
flow
[:,:,
1
]
+=
np
.
arange
(
h
)[:,
np
.
newaxis
]
res
=
cv2
.
remap
(
img
,
flow
,
None
,
cv2
.
INTER_LINEAR
)
return
res
if
__name__
==
'__main__'
:
import
sys
print
help_message
try
:
fn
=
sys
.
argv
[
1
]
except
:
fn
=
video
.
presets
[
'chess'
]
cam
=
video
.
create_capture
(
fn
)
ret
,
prev
=
cam
.
read
()
prevgray
=
cv2
.
cvtColor
(
prev
,
cv
.
CV_BGR2GRAY
)
show_hsv
=
False
show_glitch
=
False
cur_glitch
=
prev
.
copy
()
while
True
:
ret
,
img
=
cam
.
read
()
gray
=
cv2
.
cvtColor
(
img
,
cv
.
CV_BGR2GRAY
)
flow
=
cv2
.
calcOpticalFlowFarneback
(
prevgray
,
gray
,
0.5
,
3
,
15
,
3
,
5
,
1.2
,
0
)
prevgray
=
gray
cv2
.
imshow
(
'flow'
,
draw_flow
(
gray
,
flow
))
if
show_hsv
:
cv2
.
imshow
(
'flow HSV'
,
draw_hsv
(
flow
))
if
show_glitch
:
cur_glitch
=
warp_flow
(
cur_glitch
,
flow
)
cv2
.
imshow
(
'glitch'
,
cur_glitch
)
cv2
.
imshow
(
'flow'
,
draw_flow
(
gray
,
flow
,
16
))
if
cv2
.
waitKey
(
5
)
==
27
:
break
ch
=
cv2
.
waitKey
(
5
)
if
ch
==
27
:
break
if
ch
==
ord
(
'1'
):
show_hsv
=
not
show_hsv
print
'HSV flow visualization is'
,
[
'off'
,
'on'
][
show_hsv
]
if
ch
==
ord
(
'2'
):
show_glitch
=
not
show_glitch
if
show_glitch
:
cur_glitch
=
img
.
copy
()
print
'glitch is'
,
[
'off'
,
'on'
][
show_glitch
]
samples/python2/video.py
浏览文件 @
edf0b40d
...
...
@@ -60,6 +60,7 @@ class Chess(VideoSynthBase):
[
0.0
,
0.0
,
1.0
]])
self
.
dist_coef
=
np
.
float64
([
-
0.2
,
0.1
,
0
,
0
])
self
.
t
=
0
def
draw_quads
(
self
,
img
,
quads
,
color
=
(
0
,
255
,
0
)):
img_quads
=
cv2
.
projectPoints
(
quads
.
reshape
(
-
1
,
3
),
self
.
rvec
,
self
.
tvec
,
self
.
K
,
self
.
dist_coef
)
[
0
]
...
...
@@ -68,7 +69,8 @@ class Chess(VideoSynthBase):
cv2
.
fillConvexPoly
(
img
,
np
.
int32
(
q
*
4
),
color
,
cv2
.
CV_AA
,
shift
=
2
)
def
render
(
self
,
dst
):
t
=
clock
()
t
=
self
.
t
self
.
t
+=
1.0
/
30.0
sx
,
sy
=
self
.
grid_size
center
=
np
.
array
([
0.5
*
sx
,
0.5
*
sy
,
0.0
])
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录