videocapture庫制作python視頻高速傳輸程序
1,首先是視頻數(shù)據(jù)[攝像頭圖像]的采集,通??梢允褂胿fw在vc或者vb下實(shí)現(xiàn),這個(gè)庫我用的不好,所以一直不怎么會(huì)用.現(xiàn)在我們用到的是python的videocapture庫,這個(gè)庫用起來很簡(jiǎn)單,如下:
from VideoCapture import Device
cam = Device()
cam.setResolution(320,240) #設(shè)置顯示分辨率
cam.saveSnapshot('demo.jpg') #抓取并保存圖片
這樣,你就得到了一張圖片.
當(dāng)然,要實(shí)現(xiàn)比較高速的采集,每次都要保存圖片是不大可能的,這樣弄下來每次采集一張圖片已經(jīng)接近1秒鐘,這個(gè)速度我們是無法忍受的.
更好的解決方式是直接這樣: im = cam.getImage(),返回的是一個(gè)Image對(duì)象,是一個(gè)內(nèi)存塊,對(duì)它操作就快速多了.
2,如何傳輸圖片?我不知道pplive這種視頻是怎么傳輸?shù)?我的想法很簡(jiǎn)單,每次傳送一幅圖片.
在本程序中,每次傳送的RGB圖像的大小為 160*120.這樣,需要的數(shù)據(jù)量為:d = 160*120*3 = 56.25 kB
我選擇80000B.
下面是發(fā)送端代碼:
import socket
import Image
from VideoCapture import Device
cam = Device()
cam.setResolution(320,240)
clisocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
while 1:
im = cam.getImage()
im = im.resize((160,120))
da = im.tostring()
clisocket.sendto(da, ("127.0.0.1", 1234))
s.close()
3,如何實(shí)時(shí)顯示圖片?
我使用了pygame作為實(shí)時(shí)圖像顯示界面,因?yàn)閜ygame是經(jīng)過優(yōu)化的高速圖形庫,不知道有沒有使用directshow,我想應(yīng)該用了吧..
關(guān)于pygame請(qǐng)參考 www.pygame.org
下面是接收端代碼:
import socket
import Image
import os,sys,pygame
from pygame.locals import *
pygame.init()
screen = pygame.display.set_mode((160,120))
pygame.display.set_caption("web cam")
pygame.display.flip()
svrsocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
svrsocket.bind(("127.0.0.1", 1234))
clock = pygame.time.Clock() #計(jì)算幀速
while 1:
data, address = svrsocket.recvfrom(80000)
camshot = pygame.image.frombuffer(data, (160,120), "RGB")
for event in pygame.event.get():
if event.type == pygame.QUIT: sys.exit()
screen.blit(camshot, (0,0))
pygame.display.update()
print clock.get_fps() #在終端打印幀速
clock.tick()
程序終于完成了,測(cè)試一下效果怎么樣把,為了方便,我把客戶端和服務(wù)端都設(shè)成了本機(jī),端口為1234.
運(yùn)行程序,哇,簡(jiǎn)直不可思議,最高竟然達(dá)到230fps!(右邊的終端)
相關(guān)文章
對(duì)python中使用requests模塊參數(shù)編碼的不同處理方法
今天小編就為大家分享一篇對(duì)python中使用requests模塊參數(shù)編碼的不同處理方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-05-05
Python標(biāo)準(zhǔn)庫中隱藏的利器(示例詳解)
在命令行中直接使用Python標(biāo)準(zhǔn)庫的模塊,最大的好處就是就是不用寫代碼,就能使用其中的功能,當(dāng)臨時(shí)需要一些某些功能的時(shí)候,用這種方式會(huì)快捷,方便很多,這篇文章主要介紹了Python標(biāo)準(zhǔn)庫中隱藏的利器,需要的朋友可以參考下2023-11-11
Python多模塊引用由此引發(fā)的相對(duì)路徑混亂問題
這篇文章主要介紹了Python多模塊引用由此引發(fā)的相對(duì)路徑混亂問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03
解決keras,val_categorical_accuracy:,0.0000e+00問題
這篇文章主要介紹了解決keras,val_categorical_accuracy:,0.0000e+00問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-07-07
如何使用Python JSON解析和轉(zhuǎn)換數(shù)據(jù)
JSON 是文本,使用 JavaScript 對(duì)象表示法編寫,Python 有一個(gè)內(nèi)置的 json 包,可用于處理 JSON 數(shù)據(jù),本文給大家介紹使用Python JSON解析和轉(zhuǎn)換數(shù)據(jù)的方法,感興趣的朋友跟隨小編一起看看吧2023-11-11
Python疫情確診折線圖實(shí)現(xiàn)數(shù)據(jù)可視化實(shí)例詳解
數(shù)據(jù)可視化是指用圖形或表格的方式來呈現(xiàn)數(shù)據(jù)。圖表能夠清楚地呈現(xiàn)數(shù)據(jù)性質(zhì),?以及數(shù)據(jù)間或?qū)傩蚤g的關(guān)系,可以輕易地讓人看圖釋義。用戶通過探索圖(Exploratory?Graph)可以了解數(shù)據(jù)的特性、尋找數(shù)據(jù)的趨勢(shì)、降低數(shù)據(jù)的理解門檻2022-09-09
Pycharm遠(yuǎn)程調(diào)試和MySQL數(shù)據(jù)庫授權(quán)問題
這篇文章主要介紹了Pycharm遠(yuǎn)程調(diào)試和MySQL數(shù)據(jù)庫授權(quán)問題,文章內(nèi)容介紹詳細(xì),需要的小伙伴可以參考一下,希望對(duì)你的學(xué)習(xí)或工作有所幫助2022-03-03
windows下安裝Python的XlsxWriter模塊方法
今天小編就為大家分享一篇windows下安裝Python的XlsxWriter模塊方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-05-05

