欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于OpenCV的網(wǎng)絡實時視頻流傳輸?shù)膶崿F(xiàn)

 更新時間:2020年11月15日 09:19:27   作者:小白學視覺  
這篇文章主要介紹了基于OpenCV的網(wǎng)絡實時視頻流傳輸?shù)膶崿F(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

很多小伙伴都不會在家里或者辦公室安裝網(wǎng)絡攝像頭或監(jiān)視攝像頭。但是有時,大家又希望能夠隨時隨地觀看視頻直播。

大多數(shù)人會選擇使用IP攝像機(Internet協(xié)議攝像機)而不是CCTV(閉路電視),因為它們具有更高的分辨率并降低了布線成本。在本文中,我們將重點介紹IP攝像機。IP攝像機是一種數(shù)字 攝像機,可以通過IP網(wǎng)絡接收控制數(shù)據(jù)并發(fā)送圖像數(shù)據(jù),并且不需要本地記錄設備。大多數(shù)IP攝像機都是基于RTSP(實時流協(xié)議)的,因此Internet瀏覽器本身“不支持”它

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

計算機視覺是一個跨學科領域,涉及如何制作計算機以從數(shù)字圖像或視頻獲得高層次的理解。為了實現(xiàn)計算機視覺部分,我們將使用Python中的OpenCV模塊,并在Web瀏覽器中顯示實時流,我們將使用Flask Web框架。在進入編碼部分之前,讓我們首先簡要地了解這些模塊。如果您已經(jīng)熟悉這些模塊,則可以直接跳到下一部分。

根據(jù)Wikipedia的說法,F(xiàn)lask是用Python編寫的微型Web框架。它被歸類為微框架,因為它不需要特定的工具或庫。它沒有數(shù)據(jù)庫抽象層,表單驗證或任何其他現(xiàn)有的第三方庫提供公用功能的組件。

根據(jù)GeeksForGeeks的說法,OpenCV是用于計算機視覺,機器學習和圖像處理的巨大開放源代碼庫,現(xiàn)在它在實時操作中起著重要作用,這在當今的系統(tǒng)中非常重要。

02.操作步驟

第1步-安裝Flask和OpenCV:

可以使用“ pip install flask”和“ pip install opencv-python ”命令。我使用PyCharm IDE開發(fā)flask應用程序。

第2步-導入必要的庫,初始化flask應用程序:

現(xiàn)在,我們將導入必要的庫并初始化我們的flask應用程序。

#Import necessary libraries
from flask import Flask, render_template, Response
import cv2
#Initialize the Flask app
app = Flask(__name__)

第3步-使用OpenCV捕獲視頻:

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

camera = cv2.VideoCapture(0)
'''
for ip camera use - rtsp://username:password@ip_address:554/user=username_password='password'_channel=channel_number_stream=0.sdp' 
for local webcam use cv2.VideoCapture(0)
'''

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

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

def gen_frames(): 
 while True:
  success, frame = camera.read() # read the camera frame
  if not success:
   break
  else:
   ret, buffer = cv2.imencode('.jpg', frame)
   frame = buffer.tobytes()
   yield (b'--frame\r\n'
     b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n') # concat frame one by one and show result

第5步-為網(wǎng)絡應用的默認頁面定義應用路由

路由指的是應用程序的URL模式(例如myapp.com/home或myapp.com/about)。@app.route("/")是Flask提供的Python裝飾器,用于在我們的應用中分配URL以便輕松運行。

@app.route('/')
def index():
 return render_template('index.html')

裝飾器告訴我們@app,只要用戶訪問給定的應用程序域(本地服務器的localhost:5000).route(),就執(zhí)行該index()功能。Flask使用Jinja模板庫渲染模板。在我們的應用程序中,我們將使用模板來呈現(xiàn)HTML,這些HTML將顯示在瀏覽器中。

第6步-定義視頻供稿的應用路由:

@app.route('/video_feed')
def video_feed():
 return Response(gen_frames(), mimetype='multipart/x-mixed-replace; boundary=frame')

“ / video_feed”路由返回流式響應。由于此流返回要在網(wǎng)頁中顯示的圖像,因此路由的URL在image標記的“ src”屬性中(請參見下面的“ index.html”)。瀏覽器將通過在其中顯示JPEG圖像流來自動更新圖像元素,因為大多數(shù)/所有瀏覽器都支持多部分響應

讓我們看一下我們的index.html文件:

<body>
<div class="container">
 <div class="row">
  <div class="col-lg-8 offset-lg-2">
   <h3 class="mt-5">Live Streaming</h3>
   <img src="{{ url_for('video_feed') }}" width="100%">
  </div>
 </div>
</div>
</body>

第7步-啟動Flask服務器

if __name__ == "__main__":
 app.run(debug=True)

調(diào)用app.run()并將Web應用程序本地托管在[localhost:5000]上。

“ debug = True”可確保我們不需要在每次進行更改時都運行應用程序,只需在服務器仍在運行時刷新網(wǎng)頁即可查看更改。

項目結(jié)構(gòu):

該項目保存在名為“攝像機檢測”的文件夾中。我們運行“ app.py”文件。運行此文件后,我們的應用程序?qū)⑼泄茉诒镜胤掌鞯亩丝?000上。

  • 只需在運行“ app.py”后在網(wǎng)絡瀏覽器中鍵入“ localhost:5000”即可打開您的網(wǎng)絡應用程序
  • app.py —這是我們在上面創(chuàng)建的Flask應用程序
  • 模板-此文件夾包含我們的“ index.html”文件。在渲染模板時,這在Flask中是必需的。所有HTML文件都放在此文件夾下。

讓我們看看當我們運行'app.py'時會發(fā)生什么:

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

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

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

到此這篇關(guān)于基于OpenCV的網(wǎng)絡實時視頻流傳輸?shù)膶崿F(xiàn)的文章就介紹到這了,更多相關(guān)OpenCV 實時視頻流傳輸內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python 下載及安裝詳細步驟

    Python 下載及安裝詳細步驟

    這篇文章主要介紹了載及安裝Python詳細步驟,安裝python分三個步驟,具體安裝方法本文給大家介紹的非常詳細,需要的朋友可以參考下
    2019-11-11
  • Python用HBuilder創(chuàng)建交流社區(qū)APP

    Python用HBuilder創(chuàng)建交流社區(qū)APP

    這篇文章主要講解Python使用HBuilder創(chuàng)建交流社區(qū)APP,使用HBuilder做一個簡單的社區(qū)瀏覽界面,下面文章附有詳細的代碼,需要的朋友可以參考一下
    2021-11-11
  • Python實現(xiàn)最常見加密方式詳解

    Python實現(xiàn)最常見加密方式詳解

    這篇文章主要介紹了Python實現(xiàn)最常見加密方式詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • python批量檢查兩個對應的txt文件的行數(shù)是否一致的實例代碼

    python批量檢查兩個對應的txt文件的行數(shù)是否一致的實例代碼

    這篇文章主要介紹了python批量檢查兩個對應的txt文件的行數(shù)是否一致,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • 詳解Python類的定義與實例

    詳解Python類的定義與實例

    這篇文章給大家介紹Python類的定義與實例,下面是一個使用?NewSpaceGraph?類的示例,展示了如何實例化該類并調(diào)用其方法,感興趣的朋友跟隨小編一起看看吧
    2024-04-04
  • 詳解python中的異常捕獲

    詳解python中的異常捕獲

    這篇文章主要介紹了python中的異常捕獲的相關(guān)資料,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • 通過python讀取txt文件和繪制柱形圖的實現(xiàn)代碼

    通過python讀取txt文件和繪制柱形圖的實現(xiàn)代碼

    這篇文章主要介紹了通過python讀取txt文件和繪制柱形圖的實現(xiàn)代碼,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • python selenium firefox使用詳解

    python selenium firefox使用詳解

    這篇文章主要介紹了python selenium firefox使用詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • Python裝飾器的函數(shù)式編程詳解

    Python裝飾器的函數(shù)式編程詳解

    本文向大家詳細介紹了Python裝飾器的函數(shù)式編程的相關(guān)資料,需要的朋友可以參考下
    2015-02-02
  • python新手學習使用庫

    python新手學習使用庫

    在本篇文章里小編給大家整理的一篇關(guān)于python新手學習使用庫的相關(guān)方法和知識點,需要的朋友們參考下。
    2020-06-06

最新評論