【python模块 VideoCapture 使用】

【python模块 VideoCapture 使用】

网址:http://videocapture.sourceforge.net/  需要配合PIL使用

也就是python的摄像头模块,官方介绍如下:

VideoCapture is a Pythonextension for Win32 which makes it possible to access video-capture devices (e.g. a USB webcam). It consists of a low-level native module (vidcap.pyd) and a high-level module written in Python (VideoCapture.py) which should be used solely.

Also included are some tools which can be used to periodically upload a WebCam-image to a WebServer, monitor and save a picture at a given URL to the local disk, and so on. Please refer to the README.txt file in the 'Tools' folder for further details.

从网站上拉下来的是一个集合包,包含了python各版本的支持,安装的时候直接把相应版本的lib,libs目录覆盖到python目录下即可。

最简单的使用方法如下:

from VideoCapture import Device
cam = Device()
cam.SaveSnapshot("xxx.jpg") #使用到图片库

唯一的一个类是Device,包含如下方法:

 

 1 Methods defined here:
2
3 __init__(self, devnum=0, showVideoWindow=0)
4 devnum: VideoCapture enumerates the available video capture devices
5 on your system. If you have more than one device, specify
6 the desired one here. The device number starts from 0.
7
8 showVideoWindow: 0 ... do not display a video window (the default)
9 1 ... display a video window
10
11 Mainly used for debugging, since the video window
12 can not be closed or moved around.
13 displayCaptureFilterProperties(self)
14 Displays a dialog containing the property page of the capture filter.
15
16 For VfW drivers you may find the option to select the resolution most
17 likele here.
18 displayCapturePinProperties(self)
19 Displays a dialog containing the property page of the capture pin.
20
21 For WDM drivers you may find the option to select the resolution most
22 likele here.
23 displayPropertyPage(self)
24 deprecated
25
26 Use the methods displayCaptureFilterProperties() and
27 displayCapturePinProperties() instead.
28 getBuffer(self)
29 Returns a string containing the raw pixel data.
30
31 You probably don't want to use this function, but rather getImage() or
32 saveSnapshot().
33 getImage(self, timestamp=0, boldfont=0, textpos='bl')
34 Returns a PIL Image instance.
35
36 timestamp: 0 ... no timestamp (the default)
37 1 ... simple timestamp
38 2 ... timestamp with shadow
39 3 ... timestamp with outline
40
41 boldfont: 0 ... normal font (the default)
42 1 ... bold font
43
44 textpos: The position of the timestamp can be specified by a string
45 containing a combination of two characters. One character
46 must be either t or b, the other one either l, c or r.
47
48 t ... top
49 b ... bottom
50
51 l ... left
52 c ... center
53 r ... right
54
55 The default value is 'bl'
56 saveSnapshot(self, filename, timestamp=0, boldfont=0, textpos='bl', **keywords)
57 Saves a snapshot to the harddisk.
58
59 The filetype depends on the filename extension. Everything that PIL
60 can handle can be specified (foo.jpg, foo.gif, foo.bmp, ...).
61
62 filename: String containing the name of the resulting file.
63
64 timestamp: see getImage()
65
66 boldfont: see getImage()
67
68 textpos: see getImage()
69
70 Additional keyword arguments can be give which are just passed to the
71 save() method of the Image class. For example you can specify the
72 compression level of a JPEG image by quality=75 (which is the default
73 value anyway).
74 setResolution(self, width, height)
75 Sets the capture resolution. (without dialog)
76
77 (contributed by Don Kimber <kimber@fxpal.com>)
78
79 --------------------------------------------------------------------------------
80 Data and non-method functions defined here:
81
82 __doc__ = 'Create instances of this class which will then r...lete\n the instance first (e.g. del cam).\n\n '
83 __module__ = 'VideoCapture'

这个库很简单,主要是GetImage和GetSnapshot两个方法的使用

网上的一段有意思的代码:

View Code
 1 from VideoCapture import Device
2 import ImageDraw, sys, pygame, time
3 from pygame.locals import *
4 from PIL import ImageEnhance
5
6 res = (640,480)
7 pygame.init()
8 cam = Device()
9 cam.setResolution(res[0],res[1])
10 screen = pygame.display.set_mode((640,480))
11 pygame.display.set_caption(Webcam)
12 pygame.font.init()
13 font = pygame.font.SysFont("Courier",11)
14
15 def disp(phrase,loc):
16 s = font.render(phrase, True, (200,200,200))
17 sh = font.render(phrase, True, (50,50,50))
18 screen.blit(sh, (loc[0]+1,loc[1]+1))
19 screen.blit(s, loc)
20
21 brightness = 1.0
22 contrast = 1.0
23 shots = 0
24
25 while 1:
26 camshot = ImageEnhance.Brightness(cam.getImage()).enhance(brightness)
27 camshot = ImageEnhance.Contrast(camshot).enhance(contrast)
28 for event in pygame.event.get():
29 if event.type == pygame.QUIT: sys.exit()
30 keyinput = pygame.key.get_pressed()
31 if keyinput[K_1]: brightness -= .1
32 if keyinput[K_2]: brightness += .1
33 if keyinput[K_3]: contrast -= .1
34 if keyinput[K_4]: contrast += .1
35 if keyinput[K_q]: cam.displayCapturePinProperties()
36 if keyinput[K_w]: cam.displayCaptureFilterProperties()
37 if keyinput[K_s]:
38 filename = str(time.time()) + ".jpg"
39 cam.saveSnapshot(filename, quality=80, timestamp=0)
40 shots += 1
41 camshot = pygame.image.frombuffer(camshot.tostring(), res, "RGB")
42 screen.blit(camshot, (0,0))
43 disp("S:" + str(shots), (10,4))
44 disp("B:" + str(brightness), (10,16))
45 disp("C:" + str(contrast), (10,28))
46 pygame.display.flip()


 

 

转载于:https://www.cnblogs.com/rirtue/archive/2011/12/26/2302550.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值