程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Python >> 如何使用Python操作攝像頭

如何使用Python操作攝像頭

編輯:Python

用過USB攝像頭的都知道,你需要使用鼠標來操作它,比如截個圖,錄個像什麼的,要點N次鼠標,對於我們那些不喜歡多次點擊鼠標的人來說,這是一件很boring的事情,所以,本文將教你如何使用Python來操作攝像頭。

這裡,我們需要三個Python庫: VideoCapture, PIL  和 pygame。使用這三個庫你可以非常容易的編寫一個攝像頭程序。之所以使用pygame,其目的就是因為這個庫可以處理視頻幀(fps)。下面是代碼:

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()

這段代碼中的一些要點的解釋如下:

 

  • 第15行的那個函數是在視頻上顯示些信息。這個例子中,顯示的是抓圖的數量以及當前的亮度和對比度。這個函數先顯示深灰色的文本,然後偏移幾個像素,再顯示淺灰色的,這樣可以有陰影的效果。
  • 第26行是在調整亮度和對比度。30-33行是在設置數字鍵1-4用於調整亮度和對比度。
  • 34 和35行是在設置 ‘q’ 和 ‘w’ 來顯示攝像頭的對話框。在那裡你可以調整分辨率和暴光度等等。
  • 36行及以下的代碼,是在存一個抓圖文件。文件名中使用了當前時間。.

希望這個小程序能給你開啟一個如何寫攝像頭的程序。

(全文完)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved