在WIN7-64下使用PYTHON獲得網路攝影機圖片

來源:互聯網
上載者:User

環境是 Python27

需要下載庫:

pygame 處理幀

http://www.lfd.uci.edu/~gohlke/pythonlibs/bpchanvi/pygame-1.9.2pre.win-amd64-py2.7.exe

VideoCature取得網路攝影機映像

http://www.lfd.uci.edu/~gohlke/pythonlibs/bpchanvi/VideoCapture-0.9.5.win-amd64-py2.7.exe

PIL python Image Lib 影像處理,最基礎的依賴包

http://www.lfd.uci.edu/~gohlke/pythonlibs/bpchanvi/PIL-1.1.7.win-amd64-py2.7.exe

 

先來個網路攝影機截取的代碼(從DEMO中摳出來的)

1 import VideoCapture2 3 cam = VideoCapture.Device(devnum=0)4 cam.saveSnapshot('test.jpg', quality=75, timestamp=3, boldfont=1)

 

然後是比較複雜的連續從網路攝影機中取得視頻流,把原有的DEMO代碼加了注釋調整了下順序

 1 #coding=utf-8 2 from VideoCapture import Device 3 import ImageDraw, sys, pygame, time 4 from pygame.locals import * 5 from PIL import ImageEnhance 6  7 #   設定視窗、網路攝影機解析度 8 res = (640,480) 9 10 #   初始化視窗11 pygame.init()12 pygame.display.set_caption('Webcam')13 pygame.font.init()14 15 screen = pygame.display.set_mode((640,480))16 font   = pygame.font.SysFont("Courier",11)17 18 #   取得網路攝影機裝置,設定解析度19 cam = Device()20 cam.setResolution(res[0],res[1])21 22 #   顯示文字資訊函數23 def disp(phrase,loc):24     s = font.render(phrase, True, (200,200,200))25     sh = font.render(phrase, True, (50,50,50))26     screen.blit(sh, (loc[0]+1,loc[1]+1))27     screen.blit(s, loc)28 29 #   亮度,對比30 brightness = 1.031 contrast = 1.032 #   計數器33 shots = 034 35 while 1:36     camshot = ImageEnhance.Brightness(cam.getImage()).enhance(brightness)37     camshot = ImageEnhance.Contrast(camshot).enhance(contrast)38     for event in pygame.event.get():39         if event.type == pygame.QUIT: sys.exit()40     keyinput = pygame.key.get_pressed()41     #   快速鍵處理,調節亮度對比42     if keyinput[K_1]: brightness -= .143     if keyinput[K_2]: brightness += .144     if keyinput[K_3]: contrast -= .145     if keyinput[K_4]: contrast += .146     #   呼出調試47     if keyinput[K_q]: cam.displayCapturePinProperties()48     if keyinput[K_w]: cam.displayCaptureFilterProperties()49     #   儲存,shots為計數器50     if keyinput[K_s]:51         filename = str(time.time()) + ".jpg"52         cam.saveSnapshot(filename, quality=80, timestamp=0)53         shots += 154     #   從網路攝影機中取得映像55     camshot = pygame.image.frombuffer(camshot.tostring(), res, "RGB")56     screen.blit(camshot, (0,0))57     disp("S:" + str(shots), (10,4))58     disp("B:" + str(brightness), (10,16))59     disp("C:" + str(contrast), (10,28))60     #   填充映像61     pygame.display.flip()

自己是準備處理映像,把截屏出來的那個圖片,取得邊緣。

1 import Image2 import ImageFilter3 img = Image.open('test.jpg')4 new_img = img.filter(ImageFilter.FIND_EDGES)5 new_img.save('test2.jpg')

 

原本的想法是從網路攝影機中取得映像進行分析,分析眼動來替代滑鼠的位置。不過取出的視頻精度顯然很低。看來這個要以來高精度的網路攝影機,高精度的網路攝影機帶來的問題就是處理的速度降低。

同時,網路攝影機在本本上,來定位腦袋、眼球、筆記本、網路攝影機,轉換為螢幕上的滑鼠軌跡,顯然有點困難。不過在家裡面做個體感的遊戲還湊合。

 

整體上看,

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.