用过USB摄像头的都知道,你需要使用鼠标来操作它,比如截个图,录个像什么的,要点N次鼠标,对于我们那些不喜欢多次点击鼠标的人来说,这是一件很boring的事情,所以,本文将教你如何使用Python来操作摄像头。
这里,我们需要三个Python库: VideoCapture, PIL 和 pygame。使用这三个库你可以非常容易的编写一个摄像头程序。之所以使用pygame,其目的就是因为这个库可以处理视频帧(fps)。下面是代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
from
VideoCapture
import
Device
import
ImageDraw, sys, pygame, time
from
pygame.
locals
import
*
from
PIL
import
ImageEnhance
res
=
(
640
,
480
)
pygame.init()
cam
=
Device()
cam.setResolution(res[
0
],res[
1
])
screen
=
pygame.display.set_mode((
640
,
480
))
pygame.display.set_caption(
'Webcam'
)
pygame.font.init()
font
=
pygame.font.SysFont(
"Courier"
,
11
)
def
disp(phrase,loc):
s
=
font.render(phrase,
True
, (
200
,
200
,
200
))
sh
=
font.render(phrase,
True
, (
50
,
50
,
50
))
screen.blit(sh, (loc[
0
]
+
1
,loc[
1
]
+
1
))
screen.blit(s, loc)
brightness
=
1.0
contrast
=
1.0
shots
=
0
while
1
:
camshot
=
ImageEnhance.Brightness(cam.getImage()).enhance(brightness)
camshot
=
ImageEnhance.Contrast(camshot).enhance(contrast)
for
event
in
pygame.event.get():
if
event.
type
=
=
pygame.QUIT: sys.exit()
keyinput
=
pygame.key.get_pressed()
if
keyinput[K_1]: brightness
-
=
.
1
if
keyinput[K_2]: brightness
+
=
.
1
if
keyinput[K_3]: contrast
-
=
.
1
if
keyinput[K_4]: contrast
+
=
.
1
if
keyinput[K_q]: cam.displayCapturePinProperties()
if
keyinput[K_w]: cam.displayCaptureFilterProperties()
if
keyinput[K_s]:
filename
=
str
(time.time())
+
".jpg"
cam.saveSnapshot(filename, quality
=
80
, timestamp
=
0
)
shots
+
=
1
camshot
=
pygame.image.frombuffer(camshot.tostring(), res,
"RGB"
)
screen.blit(camshot, (
0
,
0
))
disp(
"S:"
+
str
(shots), (
10
,
4
))
disp(
"B:"
+
str
(brightness), (
10
,
16
))
disp(
"C:"
+
str
(contrast), (
10
,
28
))
pygame.display.flip()
|
这段代码中的一些要点的解释如下:
希望这个小程序能给你开启一个如何写摄像头的程序。
1.近期整理了20G资源,包含产品/运营/测试/程序员/市场等,互联网从业者【工作必备干货技巧、行业专业书籍、面试真题宝典等】,获取方式:
微信扫码关注公众号“非典型互联网”,转发文章到朋友圈,截图发至公众号后台,即可获取干货资源链接;
2.互联网人交流群:
关注公众号“非典型互联网”,在公众号后台回复“入群”,人脉共享,一起交流;
作者:陈皓,博客地址:https://coolshell.cn/articles/18190.html