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

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

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

很多小伙伴都不會(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ī),可以通過(guò)IP網(wǎng)絡(luò)接收控制數(shù)據(jù)并發(fā)送圖像數(shù)據(jù),并且不需要本地記錄設(shè)備。大多數(shù)IP攝像機(jī)都是基于RTSP(實(shí)時(shí)流協(xié)議)的,因此Internet瀏覽器本身“不支持”它

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

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

根據(jù)Wikipedia的說(shuō)法,F(xiàn)lask是用Python編寫(xiě)的微型Web框架。它被歸類(lèi)為微框架,因?yàn)樗恍枰囟ǖ墓ぞ呋驇?kù)。它沒(méi)有數(shù)據(jù)庫(kù)抽象層,表單驗(yàn)證或任何其他現(xiàn)有的第三方庫(kù)提供公用功能的組件。

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

02.操作步驟

第1步-安裝Flask和OpenCV:

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

第2步-導(dǎo)入必要的庫(kù),初始化flask應(yīng)用程序:

現(xiàn)在,我們將導(dǎo)入必要的庫(kù)并初始化我們的flask應(yīng)用程序。

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

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

創(chuàng)建一個(gè)VideoCapture()對(duì)象以觸發(fā)相機(jī)并讀取視頻的第一個(gè)圖像/幀。我們可以提供視頻文件的路徑,也可以使用數(shù)字來(lái)指定本地網(wǎng)絡(luò)攝像頭的使用。要觸發(fā)網(wǎng)絡(luò)攝像頭,我們將“ 0”作為參數(shù)傳遞。為了從IP攝像機(jī)捕獲實(shí)時(shí)源,我們提供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步-添加窗口并從相機(jī)生成幀:

gen_frames()函數(shù)進(jìn)入一個(gè)循環(huán),在該循環(huán)中,它不斷從相機(jī)返回幀作為響應(yīng)塊。該函數(shù)要求攝像機(jī)提供一個(gè)幀,然后將其格式化為內(nèi)容類(lèi)型為的響應(yīng)塊,并使其屈服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)絡(luò)應(yīng)用的默認(rèn)頁(yè)面定義應(yīng)用路由

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

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

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

第6步-定義視頻供稿的應(yīng)用路由:

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

“ / video_feed”路由返回流式響應(yīng)。由于此流返回要在網(wǎng)頁(yè)中顯示的圖像,因此路由的URL在image標(biāo)記的“ src”屬性中(請(qǐng)參見(jiàn)下面的“ index.html”)。瀏覽器將通過(guò)在其中顯示JPEG圖像流來(lái)自動(dòng)更新圖像元素,因?yàn)榇蠖鄶?shù)/所有瀏覽器都支持多部分響應(yīng)

讓我們看一下我們的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步-啟動(dòng)Flask服務(wù)器

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

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

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

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

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

  • 只需在運(yùn)行“ app.py”后在網(wǎng)絡(luò)瀏覽器中鍵入“ localhost:5000”即可打開(kāi)您的網(wǎng)絡(luò)應(yīng)用程序
  • app.py —這是我們?cè)谏厦鎰?chuàng)建的Flask應(yīng)用程序
  • 模板-此文件夾包含我們的“ index.html”文件。在渲染模板時(shí),這在Flask中是必需的。所有HTML文件都放在此文件夾下。

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

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

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

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

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

相關(guān)文章

  • Python 下載及安裝詳細(xì)步驟

    Python 下載及安裝詳細(xì)步驟

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

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

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

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

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

    python批量檢查兩個(gè)對(duì)應(yīng)的txt文件的行數(shù)是否一致的實(shí)例代碼

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

    詳解Python類(lèi)的定義與實(shí)例

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

    詳解python中的異常捕獲

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

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

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

    python selenium firefox使用詳解

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

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

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

    python新手學(xué)習(xí)使用庫(kù)

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

最新評(píng)論