科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道应用软件如何使用Python操作摄像头

如何使用Python操作摄像头

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

用过USB摄像头的都知道,你需要使用鼠标来操作它,比如截个图,录个像什么的,要点N次鼠标,对于我们那些不喜欢多次点击鼠标的人来说,这是一件很boring的事情,所以,本文将教你如何使用Python来操作摄像头。

来源:陈皓的博客【原创】 2009年12月14日

关键字: python 摄像头

  • 评论
  • 分享微博
  • 分享邮件

用过USB摄像头的都知道,你需要使用鼠标来操作它,比如截个图,录个像什么的,要点N次鼠标,对于我们那些不喜欢多次点击鼠标的人来说,这是一件很boring的事情,所以,本文将教你如何使用Python来操作摄像头。

这里,我们需要三个Python库: VideoCapture, PIL  和 pygame。使用这三个库你可以非常容易的编写一个摄像头程序。之所以使用pygame,其目的就是因为这个库可以处理视频帧(fps)。下面是代码:

 
01 from VideoCapture import Device
02 import ImageDraw, sys, pygame, time
03 from pygame.locals import *
04 from PIL import ImageEnhance
05   
06 res = (640,480)
07 pygame.init()
08 cam = Device()
09 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()

这段代码中的一些要点的解释如下:

  • 第15行的那个函数是在视频上显示些信息。这个例子中,显示的是抓图的数量以及当前的亮度和对比度。这个函数先显示深灰色的文本,然后偏移几个像素,再显示浅灰色的,这样可以有阴影的效果。
  • 第26行是在调整亮度和对比度。30-33行是在设置数字键1-4用于调整亮度和对比度。
  • 34 和35行是在设置 ‘q’ 和 ‘w’ 来显示摄像头的对话框。在那里你可以调整分辨率和暴光度等等。
  • 36行及以下的代码,是在存一个抓图文件。文件名中使用了当前时间。.

希望这个小程序能给你开启一个如何写摄像头的程序。

(全文完)

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章