亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Python實(shí)現(xiàn)樹(shù)莓派攝像頭持續(xù)錄像并傳送到主機(jī)的步驟

瀏覽:3日期:2022-07-03 15:59:49

關(guān)于樹(shù)莓派,想必從事嵌入式開(kāi)發(fā)的開(kāi)發(fā)者都有聽(tīng)過(guò),樹(shù)莓派原名為Raspberry Pi,也就是它的英文讀法,樹(shù)莓派誕生于英國(guó),由“Raspberry Pi 基金會(huì)”這個(gè)慈善組織注冊(cè)開(kāi)發(fā)。埃•厄普頓就是該項(xiàng)目的頭目。在2012年的3月,英國(guó)劍橋大學(xué)埃本•阿普頓(Eben Epton)正式發(fā)售世界上最小的臺(tái)式機(jī),又稱卡片式電腦,外形只有信用卡大小,卻具有電腦的所有基本功能,這就是Raspberry Pi電腦板,中文譯名”樹(shù)莓派”!

樹(shù)莓派作為一個(gè)輕便迷你的小終端很受大眾的喜愛(ài)!!!

樹(shù)莓派的特點(diǎn)

與常見(jiàn)的51單片機(jī)和STM32等這類的嵌入式微控制器相比,不僅可以完成相同的IO引腳控制之外,還能運(yùn)行有相應(yīng)的操作系統(tǒng),可以完成更復(fù)雜的任務(wù)管理與調(diào)度,能夠支持更上層應(yīng)用的開(kāi)發(fā),為了開(kāi)發(fā)者提供了更廣闊的應(yīng)用空間。比如開(kāi)發(fā)語(yǔ)言的選擇不僅僅只限于C語(yǔ)言,連接底層硬件與上層應(yīng)用,可以實(shí)現(xiàn)物聯(lián)網(wǎng)的云控制和云管理,也可以忽略樹(shù)莓派的IO控制,使用樹(shù)莓派搭建小型的網(wǎng)絡(luò)服務(wù)器,做一些小型的測(cè)試開(kāi)發(fā)和服務(wù)。

與一般的PC計(jì)算機(jī)平臺(tái)相比,樹(shù)莓派可以提供的IO引腳,能夠直接控制其他底層硬件的功能,這是一般PC計(jì)算機(jī)做不到的,當(dāng)然,樹(shù)莓派體積小,成本低,照常可以完成一些PC任務(wù)與應(yīng)用。

樹(shù)莓派自帶的攝像頭拍攝夜空是有先例的,起碼可以做到延時(shí)攝影。對(duì)于實(shí)時(shí)拍攝沒(méi)有研究,但是仍然有必要測(cè)試。樹(shù)莓派自帶的攝像頭是500萬(wàn)像素,價(jià)格在26-29歐元(人民幣200+左右)

實(shí)時(shí)還是事后采集記錄結(jié)果?樹(shù)莓派上的攝像機(jī),是使用一個(gè) raspivid 命令操作的。 拋開(kāi)這個(gè)命令的其他參數(shù),其輸出數(shù)據(jù)有2種方式:

將數(shù)據(jù)保存成文件,儲(chǔ)存在SD卡上,以便事后讀取; 將數(shù)據(jù)按照字節(jié)流的形式,直接輸出到STDOUT標(biāo)準(zhǔn)輸出中,可以實(shí)時(shí)獲取。

選擇哪種方式,首先要考慮我們能否具有足夠的采集數(shù)據(jù)的能力。

raspivid 命令可以調(diào)節(jié)相機(jī)模塊的輸出比特率。輸出是以 H264 編碼輸出的,比特率一般默認(rèn)是17Mbps,但是這個(gè)數(shù)字可以調(diào)小。 如果按照17Mbps算,就是一秒鐘2.12兆字節(jié)。 我們記錄數(shù)據(jù)或者獲取數(shù)據(jù)的速度不能低于這個(gè)值,否則長(zhǎng)時(shí)間錄像可能造成樹(shù)莓派的緩存充滿,導(dǎo)致樹(shù)莓派崩潰。

樹(shù)莓派的網(wǎng)卡是使用了其USB總線,傳送速度是100Mb/s或者12.5MB/s。 實(shí)際上后文的實(shí)驗(yàn)表明,目前能達(dá)到的傳送速度只有 3MB/s(TCP) 或者 6MB/s(UDP) 。

如果使用SD卡存儲(chǔ),這個(gè)記錄速度也是可以達(dá)到的,但是,SD卡有寫(xiě)入壽命,這是要考慮的。 例如,對(duì)于32GB的卡,即使我們能利用全部存儲(chǔ)空間,以2MB/s的速度錄像,也只能記錄4.55小時(shí)。

如何通過(guò)網(wǎng)絡(luò)實(shí)時(shí)傳送數(shù)據(jù)?

raspivid 命令的 -o 選項(xiàng),就是用來(lái)指定輸出文件的。 在Linux系統(tǒng)中,輸出到文件并不等于寫(xiě)入到磁盤(pán)(這里是SD卡)。 我們?nèi)匀豢赡苁褂?RAMDisk 這種技術(shù),讓輸出只是暫時(shí)存儲(chǔ)在內(nèi)存中,并稍后讀取,然后刪除之。 但是,樹(shù)莓派的可用內(nèi)存可能只有 280MB ,這最多只能記錄差不多2分鐘的視頻。

如果我們有文件形式的攝像記錄,那么就似乎可以使用文件傳輸?shù)膮f(xié)議,例如 sftp, scp 等等登錄到樹(shù)莓派下載文件了。 然而這是不對(duì)的。這些協(xié)議在傳輸中使用了加密。

樹(shù)莓派在向我們的電腦進(jìn)行數(shù)據(jù)傳送的時(shí)候,如果用這些協(xié)議,就必須先對(duì)發(fā)送的數(shù)據(jù)進(jìn)行加密。 在互聯(lián)網(wǎng)上,加密是很好的設(shè)計(jì)。但是在樹(shù)莓派和電腦之間只用一根網(wǎng)線連接的時(shí)候,就不是了。 樹(shù)莓派的運(yùn)算能力是很有限的,使用加密只會(huì)讓傳送速度變慢,所以,不要使用加密!

我們使用最原始而簡(jiǎn)單的方法:使用 netcat命令 ,在筆記本電腦這一端監(jiān)聽(tīng)數(shù)據(jù)輸入。 在樹(shù)莓派這一端,我們讓 raspivid 獲取一定周期(比如10分鐘,也許可以更長(zhǎng))的錄像, 將結(jié)果設(shè)定為直接輸出,然后利用Linux的管道機(jī)制,直接送進(jìn) netcat 發(fā)送。

配置由樹(shù)莓派和筆記本構(gòu)成的網(wǎng)絡(luò)

樹(shù)莓派和筆記本電腦之間的連接,使用普通網(wǎng)線即可, 因?yàn)楣P記本和樹(shù)莓派上的網(wǎng)卡都能自動(dòng)適應(yīng)網(wǎng)線,設(shè)定正確的模式(正常來(lái)說(shuō)要使用交叉網(wǎng)線)。

重要的一步是,筆記本電腦和樹(shù)莓派連接后構(gòu)成的網(wǎng)絡(luò)中,需要手動(dòng)為兩個(gè)設(shè)備設(shè)定IP地址。 對(duì)于筆記本電腦的設(shè)定,就比較簡(jiǎn)單了。 我們將筆記本電腦和樹(shù)莓派相連的網(wǎng)卡上,將電腦的 IP地址設(shè)定為xxx.xxx.x.xxx , 子網(wǎng)掩碼為255.255.255.0 , 網(wǎng)關(guān)不要填 ``。

配置樹(shù)莓派的方法是,先將樹(shù)莓派斷電,然后取出所用的SD卡,用讀卡器插回電腦。 在SD卡的boot分區(qū)中,有個(gè)cmdline.txt,這是樹(shù)莓派開(kāi)機(jī)時(shí)所用到的一些參數(shù)。

打開(kāi)這個(gè)文件,會(huì)發(fā)現(xiàn)里面只有一行。這一行中用空格分開(kāi)了很多設(shè)定參數(shù)。 我們?cè)谶@一行的結(jié)尾,不添加空行,直接加上空格,然后寫(xiě)上: ip=xxx.xxx.x.xxx

當(dāng)然如果這一行里面已經(jīng)有了ip=的參數(shù),應(yīng)該直接修改它。

這樣的結(jié)果就是,樹(shù)莓派開(kāi)機(jī)之后,會(huì)自己選擇這個(gè)IP地址作為自己的地址。

實(shí)現(xiàn)在筆記本上監(jiān)聽(tīng)輸入

netcat命令,在每收到一個(gè)文件的EOF(End Of File,表明文件已經(jīng)到結(jié)尾),就會(huì)退出。 我們?yōu)榱俗尳邮漳軌蜻B續(xù)進(jìn)行,需要用腳本連續(xù)運(yùn)行這個(gè)命令。 這樣就會(huì)為每個(gè)新接收到的視頻,在筆記本電腦這一端建立一個(gè)文件用來(lái)存儲(chǔ)。

# -*- coding: utf-8 -*-import osimport signalimport subprocessimport sysimport uuid# 獲取程序運(yùn)行的本地目錄,和用來(lái)存儲(chǔ)接收結(jié)果的recv文件夾目錄BASEPATH = os.path.realpath(os.path.dirname(sys.argv[0]))RECV = os.path.join(BASEPATH, ’recv’)# 如果接收目錄不存在,就自動(dòng)新建print ' *** Received files are put into: %s' % RECVif not os.path.isdir(RECV): os.system(’mkdir -p %s’ % RECV)# 下面的部分用來(lái)記錄正在等待接收的文件。這個(gè)文件會(huì)以一個(gè)UUID.tmp的格式命名。# 在接收成功后,就會(huì)被重命名為UUID。(UUID是一個(gè)特定格式的唯一字符串,不會(huì)重復(fù))。# 如果在接收過(guò)程中按下Ctrl+C,就會(huì)發(fā)送一個(gè)終止命令給程序,這樣程序會(huì)退出,# 并刪除沒(méi)有接收完整的那個(gè)文件。working = Falsefullname = Falsedef sigint_handler(signum, frame): global fullname, working print 'n' print ' *** SIGINT detected. End the program.' if working and fullname != False: print ' *** Unfinished recording deleted.' os.system(’rm -f %s.tmp’ % fullname) exit()signal.signal(signal.SIGINT, sigint_handler)# 使用一個(gè)死循環(huán)來(lái)不斷運(yùn)行netcat(nc)命令。n = 1while True: recname = str(uuid.uuid1()) print ' [%8d] Listening for file [%s]. Use Ctrl+C to stop this script.' % (n, recname) fullname = os.path.join(RECV, recname) working = True # 標(biāo)記接收開(kāi)始 # 使用 nc -lp 10401 命令接收數(shù)據(jù),表明端口為10401。 subprocess.call(’nc -lp 10401 > %s.tmp’ % fullname, shell=True) os.system(’mv %s.tmp %s’ % (fullname, fullname)) working = False # 標(biāo)記接收完畢 n += 1

上文所述的腳本,在筆記本上運(yùn)行之后,就會(huì)在本地開(kāi)啟10401端口,等待樹(shù)莓派上傳送的文件。 傳送的會(huì)直接寫(xiě)入一個(gè)由UUID(全局唯一ID)標(biāo)識(shí)的文件中,可以供以后處理。

在樹(shù)莓派上攝像并發(fā)送攝像結(jié)果

在樹(shù)莓派上命令拍攝的方法是:

$ raspivid -o - -b 16000000 -t 100000 | nc xxx.xxx.x.xxx 10401

這條指令的意義如下:

-o - ,使用-o設(shè)定輸出,-表示直接輸出到標(biāo)準(zhǔn)輸出中,不寫(xiě)入文件。 -b 16000000 ,設(shè)定輸出比特率為16000000 bit/s。這大約是2兆字節(jié)每秒。 -t 100000 ,設(shè)定錄像時(shí)間為100000毫秒,亦即100秒。 | nc xxx.xxx.x.xxx 10401 ,使用管道|將結(jié)果導(dǎo)入到nc中,nc是發(fā)送模式,目標(biāo)是xxx.xxx.x.xxx計(jì)算機(jī)上的10401端口。

以上就是Python實(shí)現(xiàn)樹(shù)莓派攝像頭持續(xù)錄像并傳送到主機(jī)的步驟的詳細(xì)內(nèi)容,更多關(guān)于python 樹(shù)莓派的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 婷婷四房综合激情五月性色 | 制服丝袜中文字幕第一页 | 欧美黄色一级视屏 | 99视频都是精品热在线播放 | 国产日韩欧美91 | 国产一级大片在线观看 | 国内成人啪啪网站 | 多男一女一级淫片免费播放口 | 亚洲 欧美 日韩在线 | 国产叼嘿久久精品久久 | 国产一区二区三区在线观看视频 | 亚洲一区有码 | 中文字幕色综合久久 | 国产欧美视频在线观看 | 黄色免费看网站 | 精品国产一区二区三区不卡 | 96免费精品视频在线 | 黑人操日本人视频 | 久久精品夜色国产 | 色视频在线观看网站 | 日本黄色录像视频 | 久9视频这里只有精品8 | 国语对白清晰好大好白在线 | 999色综合 | 性欧美视频a毛片在线播放 性欧美视频在线观看 | 久久久久久91精品色婷婷 | 成人午夜免费观看 | 婷婷综合影院 | 1级毛片 | 天天综合色天天桴色 | 在线观看亚洲网站 | www.黄色com| 国美女福利视频午夜精品 | 中文字幕色婷婷在线精品中 | 日韩草逼视频 | 特级黄色录像片 | 波多野结衣黑人系列在线观看 | 国产久 | 欧美性黑吊xxx | 国产精品揄拍一区二区 | 高h猛烈做哭bl壮汉受欧美 |