0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于OpenCV的網(wǎng)絡(luò)實(shí)時(shí)視頻流傳輸教程

電子設(shè)計(jì) ? 來源:電子設(shè)計(jì) ? 作者:電子設(shè)計(jì) ? 2020-12-14 21:59 ? 次閱讀

文章轉(zhuǎn)載于微信公眾號: 小白學(xué)視覺
作者:努比

很多小伙伴都不會(huì)在家里或者辦公室安裝網(wǎng)絡(luò)攝像頭或監(jiān)視攝像頭。但是有時(shí),大家又希望能夠隨時(shí)隨地觀看視頻直播。
大多數(shù)人會(huì)選擇使用IP攝像機(jī)(Internet協(xié)議攝像機(jī))而不是CCTV(閉路電視),因?yàn)樗鼈兙哂懈叩姆直媛什⒔档土瞬季€成本。在本文中,我們將重點(diǎn)介紹IP攝像機(jī)。IP攝像機(jī)是一種數(shù)字?jǐn)z像機(jī),可以通過IP網(wǎng)絡(luò)接收控制數(shù)據(jù)并發(fā)送圖像數(shù)據(jù),并且不需要本地記錄設(shè)備。大多數(shù)IP攝像機(jī)都是基于RTSP(實(shí)時(shí)流協(xié)議)的,因此Internet瀏覽器本身“不支持”它

01.如何使用Web瀏覽器查看實(shí)時(shí)流媒體

計(jì)算機(jī)視覺是一個(gè)跨學(xué)科領(lǐng)域,涉及如何制作計(jì)算機(jī)以從數(shù)字圖像或視頻獲得高層次的理解。為了實(shí)現(xiàn)計(jì)算機(jī)視覺部分,我們將使用Python中的
OpenCV模塊,并在Web瀏覽器中顯示實(shí)時(shí)流,我們將使用FlaskWeb框架。在進(jìn)入編碼部分之前,讓我們首先簡要地了解這些模塊。如果您已經(jīng)熟悉這些模塊,則可以直接跳到下一部分。
根據(jù)Wikipedia的說法,F(xiàn)lask是用Python編寫的微型Web框架。它被歸類為微框架,因?yàn)樗恍枰囟ǖ墓ぞ呋驇?。它沒有數(shù)據(jù)庫抽象層,表單驗(yàn)證或任何其他現(xiàn)有的第三方庫提供公用功能的組件。
根據(jù)GeeksForGeeks的說法,OpenCV是用于計(jì)算機(jī)視覺,機(jī)器學(xué)習(xí)和圖像處理的巨大開放源代碼庫,現(xiàn)在它在實(shí)時(shí)操作中起著重要作用,這在當(dāng)今的系統(tǒng)中非常重要。

02.操作步驟
第1步-安裝Flask和OpenCV:
可以使用“_pip install_flask”和“_pip install opencv-python_”命令。我使用PyCharm IDE開發(fā)flask應(yīng)用程序。
第2步-導(dǎo)入必要的庫,初始化flask應(yīng)用程序:
現(xiàn)在,我們將導(dǎo)入必要的庫并初始化我們的flask應(yīng)用程序。

#Import necessary libraries

第3步-使用OpenCV捕獲視頻:
創(chuàng)建一個(gè)VideoCapture()對象以觸發(fā)相機(jī)并讀取視頻的第一個(gè)圖像/幀。我們可以提供視頻文件的路徑,也可以使用數(shù)字來指定本地網(wǎng)絡(luò)攝像頭的使用。要觸發(fā)網(wǎng)絡(luò)攝像頭,我們將“ 0”作為參數(shù)傳遞。為了從IP攝像機(jī)捕獲實(shí)時(shí)源,我們提供RTSP鏈接作為參數(shù)。

camera = cv2.VideoCapture(0)

第4步-添加窗口并從相機(jī)生成幀:

gen/_frames()函數(shù)進(jìn)入一個(gè)循環(huán),在該循環(huán)中,它不斷從相機(jī)返回幀作為響應(yīng)塊。該函數(shù)要求攝像機(jī)提供一個(gè)幀,然后將其格式化為內(nèi)容類型為的響應(yīng)塊,并使其屈服image/jpeg,如上所示。代碼如下所示:

def gen_frames():  

*第5步-為網(wǎng)絡(luò)應(yīng)用的默認(rèn)頁面定義應(yīng)用路由*:
路由指的是應(yīng)用程序的URL模式(例如myapp.com/home或myapp.com/about)。@app.route("/")是Flask提供的Python裝飾器,用于在我們的應(yīng)用中分配URL以便輕松運(yùn)行。

@app.route('/')

裝飾器告訴我們@app,只要用戶訪問給定的應(yīng)用程序域(_本地服務(wù)器的localhost:5000)_.route(),就執(zhí)行該index()功能。Flask使用Jinja模板庫渲染模板。在我們的應(yīng)用程序中,我們將使用模板來呈現(xiàn)HTML,這些HTML將顯示在瀏覽器中。
*第6步-定義視頻供稿的應(yīng)用路由:*

@app.route('/video_feed')

“ / video/_feed”路由返回流式響應(yīng)。由于此流返回要在網(wǎng)頁中顯示的圖像,因此路由的URL在image標(biāo)記的“ osrc”屬性中(請參見下面的“ index.html”)。瀏覽器將通過在其中顯示JPEG圖像流來自動(dòng)更新圖像元素,因?yàn)榇蠖鄶?shù)/所有瀏覽器都支持多部分響應(yīng)
讓我們看一下我們的index.html文件:


第7步-啟動(dòng)Flask服務(wù)器

if __name__ == "__main__":

調(diào)用app.run()并將Web應(yīng)用程序本地托管在[localhost:5000]上。
“ debug = True”可確保我們不需要在每次進(jìn)行更改時(shí)都運(yùn)行應(yīng)用程序,只需在服務(wù)器仍在運(yùn)行時(shí)刷新網(wǎng)頁即可查看更改。
項(xiàng)目結(jié)構(gòu):

該項(xiàng)目保存在名為“攝像機(jī)檢測”的文件夾中。我們運(yùn)行“ app.py”文件。運(yùn)行此文件后,我們的應(yīng)用程序?qū)⑼泄茉诒镜胤?wù)器的端口5000上。

只需在運(yùn)行“ app.py”后在網(wǎng)絡(luò)瀏覽器中鍵入“ localhost:5000”即可打開您的網(wǎng)絡(luò)應(yīng)用程序

app.py —這是我們在上面創(chuàng)建的Flask應(yīng)用程序

模板-此文件夾包含我們的“ index.html”文件。在渲染模板時(shí),這在Flask中是必需的。所有HTML文件都放在此文件夾下。

讓我們看看當(dāng)我們運(yùn)行'app.py'時(shí)會(huì)發(fā)生什么:

在單擊提供的URL時(shí),我們的Web瀏覽器將打開實(shí)時(shí)供稿。由于我使用了上面的VideoCapture(0),因此網(wǎng)絡(luò)攝像頭摘要會(huì)顯示在瀏覽器中:

中有來自IP攝像機(jī)/網(wǎng)絡(luò)攝像機(jī)的實(shí)時(shí)視頻流,可用于安全和監(jiān)視目的。

代碼鏈接:https://github.com/NakulLakhotia/Live-Streaming-using-OpenCV-Flask

審核編輯 黃昊宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • OpenCV
    +關(guān)注

    關(guān)注

    29

    文章

    622

    瀏覽量

    41091
  • 視頻流
    +關(guān)注

    關(guān)注

    0

    文章

    16

    瀏覽量

    10311
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5422

    瀏覽量

    120595
收藏 人收藏

    評論

    相關(guān)推薦

    XTR111進(jìn)行V-I變換傳輸,采用電流傳輸比采用電壓傳輸噪聲大是什么原因?qū)е碌模?/a>

    本人在應(yīng)用XTR111進(jìn)行V-I變換傳輸的時(shí)候遇到了一個(gè)難題,原理圖如下所示: 在采用電壓傳輸時(shí)的波形和頻譜圖如下所示: 在采用電流傳輸時(shí)的底噪波形和頻譜: 采集設(shè)備本身的底噪波形和頻譜
    發(fā)表于 08-27 07:12

    TINA-TI交流傳輸特性仿真報(bào)錯(cuò)怎么解決?

    瞬態(tài)和交流節(jié)點(diǎn)電壓仿真都是OK的,但是交流傳輸特性仿真就報(bào)錯(cuò),請問怎樣可以解決?感謝?。。?
    發(fā)表于 08-08 06:46

    opencv-python和opencv一樣嗎

    不一樣。OpenCV(Open Source Computer Vision Library)是一個(gè)開源的計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)軟件庫,它提供了大量的圖像和視頻處理功能。OpenCV
    的頭像 發(fā)表于 07-16 10:38 ?449次閱讀

    EZ-USB FX3 CYUSB3014-BZXI設(shè)備能否同時(shí)通過USB 2.0將視頻流傳輸命令到UART線路?

    EZ-USB FX3 CYUSB3014-BZXI 設(shè)備能否同時(shí)通過 USB 2.0 將視頻流傳輸命令到 UART 線路? 例如,我現(xiàn)在使用 PC 程序 1 在 USB 2.0 線路上串流視頻,并同時(shí)使用 PC 程序 2 通過虛
    發(fā)表于 05-23 06:46

    【RTC程序設(shè)計(jì):實(shí)時(shí)視頻權(quán)威指南】計(jì)算機(jī)知識(shí)基礎(chǔ)篇

    感謝論壇組織的學(xué)習(xí)活動(dòng),我們也已此篇未開始進(jìn)入《實(shí)時(shí)視頻權(quán)威指南(rtc程序設(shè)計(jì))》的世界。 實(shí)時(shí)通信在當(dāng)今互聯(lián)網(wǎng)時(shí)代是非常重要的一種技術(shù),我們在進(jìn)行微信的語音視頻交流,線上辦公
    發(fā)表于 04-23 09:02

    【RTC程序設(shè)計(jì):實(shí)時(shí)視頻權(quán)威指南】新書一瞥

    應(yīng)用,為開發(fā)者提供了完整的RTC解決方案。 首先RTC 是一個(gè)涉及音視頻編解碼、網(wǎng)絡(luò)傳輸、實(shí)時(shí)交互等多個(gè)領(lǐng)域的復(fù)雜技術(shù)。希望能通過這本書從基礎(chǔ)知識(shí)開始,逐步深入到高級應(yīng)用和系統(tǒng)設(shè)計(jì)。
    發(fā)表于 04-22 09:09

    【RTC程序設(shè)計(jì):實(shí)時(shí)視頻權(quán)威指南】傳輸控制優(yōu)化閱讀 及其實(shí)踐分享

    書中第八章 傳輸控制優(yōu)化,主要介紹了擁塞控制,弱網(wǎng)降級,抖動(dòng)緩存與平滑發(fā)送,錯(cuò)誤恢復(fù)等幾個(gè)部分的內(nèi)容。 其中抖動(dòng)緩存與平滑發(fā)送是非常重要的一部分,在實(shí)踐中是保證音視頻實(shí)時(shí)不斷流的傳輸
    發(fā)表于 04-21 17:11

    網(wǎng)絡(luò)解碼矩陣:醫(yī)院高清視頻傳輸的可靠保障

    在現(xiàn)代醫(yī)療體系中,高清視頻傳輸扮演著舉足輕重的角色。無論是遠(yuǎn)程手術(shù)指導(dǎo)、實(shí)時(shí)病情監(jiān)控,還是患者日常護(hù)理,高清視頻都為醫(yī)療工作提供了極大的便利。而在這背后,訊維網(wǎng)絡(luò)解碼矩陣以其高效、穩(wěn)定
    的頭像 發(fā)表于 03-25 17:26 ?305次閱讀
    <b class='flag-5'>網(wǎng)絡(luò)</b>解碼矩陣:醫(yī)院高清<b class='flag-5'>視頻傳輸</b>的可靠保障

    訊維網(wǎng)絡(luò)解碼矩陣構(gòu)建全面視頻監(jiān)控系統(tǒng)

    ,訊維網(wǎng)絡(luò)解碼矩陣具備高效解碼能力,能夠支持多路高清視頻流的實(shí)時(shí)傳輸和并行解碼。這意味著酒店內(nèi)的各個(gè)監(jiān)控點(diǎn),無論是大堂、客房、走廊還是重要設(shè)施區(qū)域,都能夠?qū)崿F(xiàn)高清畫面的
    的頭像 發(fā)表于 03-25 17:21 ?257次閱讀

    視頻解碼生成與流媒體傳輸的結(jié)合

    視頻解碼生成與流媒體傳輸是現(xiàn)代數(shù)字媒體技術(shù)中兩個(gè)不可或缺的部分,它們的結(jié)合為用戶提供了高質(zhì)量、實(shí)時(shí)性的多媒體體驗(yàn)。 1. 解碼生成與流媒體傳輸的關(guān)系 解碼生成是流媒體
    的頭像 發(fā)表于 02-21 14:36 ?277次閱讀

    視頻光纖矩陣與傳統(tǒng)視頻傳輸方式的比較分析

    隨著視頻技術(shù)的快速發(fā)展,高清、超高清甚至8K視頻的需求日益增長,傳統(tǒng)的視頻傳輸方式已經(jīng)難以滿足這些高帶寬、低延遲的需求。而視頻光纖矩陣作為一種新興的
    的頭像 發(fā)表于 02-19 14:58 ?407次閱讀

    HDBaseT傳輸器是否支持高清視頻傳輸?是否能夠傳輸3D視頻信號?

    HDBaseT傳輸器是否支持高清視頻傳輸?HDBaseT傳輸器是否能夠傳輸3D視頻信號? HDBaseT
    的頭像 發(fā)表于 12-07 09:07 ?556次閱讀

    OpenCV基礎(chǔ)知識(shí)入門

    OpenCV是計(jì)算機(jī)視覺中最受歡迎的庫,最初由intel使用C和C ++進(jìn)行開發(fā)的,現(xiàn)在也可以在python中使用。該庫是一個(gè)跨平臺(tái)的開源庫,是免費(fèi)使用的。OpenCV庫是一個(gè)高度優(yōu)化的庫,主要關(guān)注實(shí)時(shí)應(yīng)用程序。
    的頭像 發(fā)表于 10-29 11:29 ?661次閱讀
    <b class='flag-5'>OpenCV</b>基礎(chǔ)知識(shí)入門

    請問視頻網(wǎng)絡(luò)傳輸需要哪些壓縮或者解碼協(xié)議?

    現(xiàn)需要將stm32采集到的攝像頭信息,通過網(wǎng)口傳輸給PC直接通過PC抓圖,視頻網(wǎng)絡(luò)傳輸需要哪些壓縮或者解碼協(xié)議?
    發(fā)表于 10-17 07:56

    基于ATM網(wǎng)絡(luò)的MPEG-2碼流傳輸技術(shù)討論

    電子發(fā)燒友網(wǎng)站提供《基于ATM網(wǎng)絡(luò)的MPEG-2碼流傳輸技術(shù)討論.pdf》資料免費(fèi)下載
    發(fā)表于 10-08 11:37 ?0次下載
    基于ATM<b class='flag-5'>網(wǎng)絡(luò)</b>的MPEG-2碼<b class='flag-5'>流傳輸</b>技術(shù)討論