国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

樹莓派學(xué)習(xí):學(xué)習(xí)opencv+用opencv獲取樹莓派mjpg攝像頭視頻流

這篇具有很好參考價值的文章主要介紹了樹莓派學(xué)習(xí):學(xué)習(xí)opencv+用opencv獲取樹莓派mjpg攝像頭視頻流。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

目錄

前提步驟

打開樹莓派攝像頭

查看是否有圖像,登錄游覽器打開樹莓派IP地址的8080端口

獲取mjpg的視頻流url

代碼

先設(shè)定好mjpg的視頻流的url

利用opencv庫中的v2.VideoCapture類讀取mjpg視頻流? ?cv2.VideoCapture()

檢查攝像頭是否成功打開,如果沒有,則打印錯誤消息并退出程序? ?cap.isOpened()

創(chuàng)建一個空的numpy數(shù)組? ??np.empty()

從視頻中讀取一幀圖像? ??cap.read()

在窗口中顯示圖像輸出? ??cv2.imshow

延時50毫秒,播放下一幀圖像? ??cv2.waitKey

全部代碼?

?將幀保存為圖像? ?cv2.imwrite()

?讀取圖像??cv2.imread()? ??cv2.cvtColor

釋放VideoCapture對象并關(guān)閉視頻文件? ?cap.release()


前提步驟

  1. 樹莓派可以用mjpg-streame庫開啟攝像頭
  2. 安裝好python

打開樹莓派攝像頭

  1. 進(jìn)入mjpg庫
    cd mjpg-streamer/mjpg-streamer-experimental
  2. 啟動攝像頭腳本
    ./start.sh 

查看是否有圖像,登錄游覽器打開樹莓派IP地址的8080端口

http://xxx.xxx.xxx.xxx:8080

獲取mjpg的視頻流url

點(diǎn)開stream,復(fù)制當(dāng)前的網(wǎng)址(url)文章來源地址http://www.zghlxwxcb.cn/news/detail-773339.html

http://xxx.xxx.xxx.xxx:8080/?action=stream

代碼

先設(shè)定好mjpg的視頻流的url

ip_address = '172.20.10.14'
port_number = 8080
url = f'http://{ip_address}:{port_number}/?action=stream'

利用opencv庫中的v2.VideoCapture類讀取mjpg視頻流? ?cv2.VideoCapture()

  • 使用cv2.VideoCapture類的一個實例,可以通過傳入攝像頭設(shè)備ID或視頻文件路徑來連接攝像頭或讀取視頻文件。例如,cv2.VideoCapture(0)表示打開筆記本的內(nèi)置攝像頭,cv2.VideoCapture("..\test.avi")表示打開指定路徑的視頻文件。
    cap = cv2.VideoCapture(f'http://{ip_address}:{port_number}/?action=stream')

檢查攝像頭是否成功打開,如果沒有,則打印錯誤消息并退出程序? ?cap.isOpened()

  • cap.isOpened()是OpenCV中VideoCapture類的一個函數(shù),用于檢查視頻是否成功打開。如果返回值為True,表示視頻已經(jīng)成功打開,反之則沒有成功打開。
    if not cap.isOpened():
        print("無法打開攝像頭")
        exit()

創(chuàng)建一個空的numpy數(shù)組? ??np.empty()

  • 得到一個240行,320列,3個通道(顏色通道)的數(shù)組,每個元素都是一個無符號8位整數(shù)(0-255)。
  • 該數(shù)組的形狀為(240, 320, 3),并且數(shù)據(jù)類型為np.uint8。
  • 用于存儲圖像數(shù)據(jù)。許多圖像格式(例如RGB)都有三個顏色通道,因此這個數(shù)組可以用于存儲圖像數(shù)據(jù)。
  • 在使用這個數(shù)組時,你可以像處理其他numpy數(shù)組一樣處理它。
    # 創(chuàng)建一個空的numpy數(shù)組output來存儲圖像數(shù)據(jù)
    output = np.empty((240, 320, 3), dtype=np.uint8)

從視頻中讀取一幀圖像? ??cap.read()

  • cap.read()?是 OpenCV 中?VideoCapture?類的函數(shù)
  • 該函數(shù)返回一個布爾值(True/False)以及一個幀圖像。如果幀讀取正確,則返回 True,否則返回 False。
  • ret?表示讀取幀是否正確,frame?則是當(dāng)前幀的圖像。如果?ret?為 True,則可以處理?frame?圖像;如果?ret?為 False,則表明視頻已經(jīng)讀取完畢。
    ret, frame = cap.read()

在窗口中顯示圖像輸出? ??cv2.imshow

  • cv2.imshow接受兩個參數(shù):窗口的名稱和要顯示的圖像
  • 窗口名稱是'output',要顯示的圖像是變量output。
    cv2.imshow('output', output)

延時50毫秒,播放下一幀圖像? ??cv2.waitKey

  • cv2.waitKey是 OpenCV 的一個函數(shù),用于等待并處理鍵盤事件。
  • 50?是等待的毫秒數(shù)。這意味著如果用戶在 50 毫秒內(nèi)沒有按任何鍵,則函數(shù)會返回當(dāng)前活動的熱鍵。否則,如果有按鍵被按下,它會被立即返回
    cv2.waitKey(50)

全部代碼?

import cv2
import numpy as np

ip_address = '172.20.10.14'
port_number = 8080

cap = cv2.VideoCapture(f'http://{ip_address}:{port_number}/?action=stream')

if not cap.isOpened():
    print("無法打開攝像頭")
    exit()

output = np.empty((240, 320, 3), dtype=np.uint8)

while True:
    ret, output = cap.read()
    cv2.imshow('output', output)
    cv2.waitKey(50)

?將幀保存為圖像? ?cv2.imwrite()

  • cv2.imwrite()?是 OpenCV 庫中的一個函數(shù)
  • 用于將圖像寫入文件
  • 兩個參數(shù):輸出文件名和要寫入的圖像。
  • 使用?cv2.imwrite()?將?img?寫入名為 "image.jpg" 的文件中。
    cv2.imwrite("capture.jpg", output)  

?讀取圖像??cv2.imread()? ??cv2.cvtColor

  • cv2.imread()?是 OpenCV 庫中的一個函數(shù)
  • 用于讀取圖像文件
  • 一個參數(shù),即要讀取的圖像文件的路徑
  • 如果圖像文件不存在或無法讀取,cv2.imread()?將返回 None。如果圖像文件存在并成功讀取,則將返回一個 NumPy 數(shù)組,其中包含圖像的像素值。
  • cv2.imread()?函數(shù)默認(rèn)使用 BGR 顏色空間,而非 RGB 顏色空間。
  • 如果需要在處理圖像時使用 RGB 顏色空間,可以使用?cv2.cvtColor()?函數(shù)將 BGR 圖像轉(zhuǎn)換為 RGB 圖像。
img = cv2.imread('input.jpg')  

#如果是BGR圖像
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

  • img_rgb?是通過將?img?從 BGR 顏色空間轉(zhuǎn)換為 RGB 顏色空間得到的。在 OpenCV 中,圖像的默認(rèn)格式是 BGR,而大多數(shù)其他圖像處理庫(如 Python 的 PIL 或 matplotlib)使用 RGB 顏色空間。因此,如果你需要在這些庫中處理 OpenCV 圖像,可能需要進(jìn)行顏色空間的轉(zhuǎn)換。
  • mg_rgb?通常指的是 RGB 圖像,而?img?通常指的是 BGR 圖像。雖然它們在數(shù)值上是一樣的(因為它們表示的是同一幅圖像的像素值),但在處理圖像時,使用哪個變量取決于你的需求。例如,如果你需要將圖像顯示在 matplotlib 中,你可能需要使用?img_rgb。如果你需要處理圖像的顏色通道順序,你可能需要使用?img。
  • 總的來說,雖然?img_rgb?和?img?在數(shù)值上相同,但它們的使用和語義上有一些區(qū)別。

釋放VideoCapture對象并關(guān)閉視頻文件? ?cap.release()

  • cap.release()是OpenCV庫中的一個函數(shù)
  • 用于釋放VideoCapture對象并關(guān)閉視頻文件
  • 使用cv2.VideoCapture()創(chuàng)建一個VideoCapture對象后,這個對象會占用視頻文件的相關(guān)資源,比如文件句柄、內(nèi)存等。當(dāng)你完成視頻的讀取后,應(yīng)該調(diào)用cap.release()釋放這些資源,以避免資源泄漏和占用。
    # 釋放VideoCapture對象并關(guān)閉視頻文件  
    cap.release()
  • ?在調(diào)用cap.release()后,你不能再使用cap對象,否則會拋出異常。如果你需要再次讀取視頻文件,應(yīng)該重新創(chuàng)建一個新的VideoCapture對象。

到了這里,關(guān)于樹莓派學(xué)習(xí):學(xué)習(xí)opencv+用opencv獲取樹莓派mjpg攝像頭視頻流的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • opencv基本操作二(讀取視頻流與保存視頻、讀取攝像頭并保存視頻)

    opencv常用 讀視頻函數(shù) cv2.VideoCapture 、 cv2.VideoCapture.get 等,可以參考這里 opencv常用 寫視頻函數(shù) cv2.VideoWriter 等可以參考這里 ,其中視頻格式可以參考這里 videoCapture.read() 是按幀讀取視頻, ret,frame 是獲 .read() 方法的兩個返回值。其中 ret 是布爾值,如果讀取幀是正確的則返回

    2023年04月08日
    瀏覽(379)
  • WSL2通過OpenCV調(diào)用并展示本機(jī)攝像頭的RTSP視頻流

    WSL2通過OpenCV調(diào)用并展示本機(jī)攝像頭的RTSP視頻流

    本篇博客的由來如上圖哈哈,WSL2 相關(guān)安裝教程可以參考我之前的博客:Win11安裝WSL2和Nvidia驅(qū)動 更多文章歡迎來我的博客小站看呀,會有更多的技術(shù)細(xì)節(jié)~ ubuntu上請執(zhí)行 或者編譯安裝 如果報錯 Could NOT find OpenSSL ,安裝如下依賴即可解決 下載解壓 EasyDarwin Easydarwin是國內(nèi)團(tuán)隊開

    2024年02月09日
    瀏覽(106)
  • Unity3d 獲取場景中攝像頭視頻流,實現(xiàn)直播效果(無需代碼)

    Unity3d 獲取場景中攝像頭視頻流,實現(xiàn)直播效果(無需代碼)

    下面是具體操作流程: ? 1. 搭建服務(wù)器,選用github 一個開源的 node.js服務(wù)器。 下載地址GitHub - iizukanao/node-rtsp-rtmp-server: RTSP/RTMP/HTTP hybrid server,點(diǎn)擊克隆,選擇ZIP下載。? 2. 下載node.js( 官網(wǎng)鏈接 Node.js) ? 選擇下載最新版本,并根據(jù)提示一步步安裝即可。 3.搭建服務(wù)器。 找到

    2023年04月08日
    瀏覽(27)
  • 樹莓派——opencv打開樹莓派攝像頭調(diào)試記錄

    樹莓派——opencv打開樹莓派攝像頭調(diào)試記錄

    目錄 一、安裝包:(注意換要源,不要用系統(tǒng)默認(rèn)源) 問題1:磁盤空間不足——把根目錄擴(kuò)展到整個SD卡 解決:把根目錄擴(kuò)展到整個SD卡 二、下載 1、先創(chuàng)建opencv目錄: 2、下載 問題:fatal: unable to access \\\'https://github.com/opencv/opencv.git/\\\': gnutls_handshake() failed: The TLS connection was

    2024年02月11日
    瀏覽(26)
  • WSL2 ubuntu子系統(tǒng)OpenCV調(diào)用本機(jī)攝像頭的RTSP視頻流做開發(fā)測試

    WSL2 ubuntu子系統(tǒng)OpenCV調(diào)用本機(jī)攝像頭的RTSP視頻流做開發(fā)測試

    由于WSL2環(huán)境與主機(jī)系統(tǒng)隔離,訪問本機(jī)攝像頭是有限的,但是,可以通過第三方庫或網(wǎng)絡(luò)攝像頭來解決這個問題,本文將本地攝像頭通過rtsp流來給WSL2訪問。 詳見鏈接:https://blog.csdn.net/weixin_46119406/article/details/132271955?spm=1001.2014.3001.5501 Easydarwin是國內(nèi)團(tuán)隊開發(fā)的開源流媒體框架

    2024年02月11日
    瀏覽(20)
  • 樹莓派利用python-opencv使用CSI攝像頭調(diào)用監(jiān)控視頻

    樹莓派利用python-opencv使用CSI攝像頭調(diào)用監(jiān)控視頻

    目錄 一、安裝python-opencv。 二、使用工具Xshell7和MobaXterm 三、連接并打開CSI攝像頭 3.1連線如圖所示: 3.2打開攝像頭 四、編寫攝像頭代碼調(diào)用攝像頭 ? ? ? ? 一定要選擇配置好的安裝python-opencv,不要去配置安裝,然后還cmake編譯,沒有必要基本上安裝過程都會報2-3個錯誤,還

    2023年04月17日
    瀏覽(29)
  • 解決樹莓派原裝libcamera(csi)攝像頭無法通過opencv讀取數(shù)據(jù)的問題

    解決樹莓派原裝libcamera(csi)攝像頭無法通過opencv讀取數(shù)據(jù)的問題

    1.1 硬件 樹莓派4B 樹莓派原裝CSI攝像頭IMX219(libcamera Camera Raspberry Pi) 1.2 軟件 64位樹莓派arrch64,Debian 11(bullseye) Python3.9 OpenCv 此時返回的ret,frame = (False, None) 繼續(xù)執(zhí)行下面這條語句 報錯如下 若直接執(zhí)行 則報錯如下 出現(xiàn)上述情況,應(yīng)該是opencv讀取不到攝像頭數(shù)據(jù)所致 接下來排

    2024年02月03日
    瀏覽(28)
  • 動態(tài)識別二維碼(樹莓派4b + python3 + pyzbar + opencv + 攝像頭)

    動態(tài)識別二維碼(樹莓派4b + python3 + pyzbar + opencv + 攝像頭)

    ????????最近需要做一個 工訓(xùn)物料小車 掃碼領(lǐng)取任務(wù)的功能,于是使用 樹莓派 的攝像頭掃碼二維碼。經(jīng)過我的多番尋找,發(fā)現(xiàn)有個叫pyzbar的庫,可以結(jié)合opencv,可以做一個 視頻動態(tài)二維碼掃描 。 ? ? ? ? 本文實現(xiàn)的功能: 實現(xiàn)樹莓派的二維碼掃描 ????????opencv的

    2024年02月14日
    瀏覽(63)
  • 樹莓派CSI攝像頭使用python調(diào)用opencv庫函數(shù)進(jìn)行運(yùn)動檢測識別

    樹莓派CSI攝像頭使用python調(diào)用opencv庫函數(shù)進(jìn)行運(yùn)動檢測識別

    目錄 一、完成攝像頭的調(diào)用 二、利用python調(diào)用opencv庫函數(shù)對圖像進(jìn)行處理 2.1 圖像處理大體流程 2.2 opencv調(diào)用函數(shù)的參數(shù)以及含義 2.2.1?ret, img = cap.read() 讀取幀圖像 2.2.2?cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 灰度圖像 2.2.3?gray_diff_img?= cv2.absdiff(gray_img, previous_img) 幀差法 2.2.4?cv2.thre

    2024年02月15日
    瀏覽(29)
  • 【CV】樹莓派+OpenCV-python解決攝像頭分辨率及幀率過低無法調(diào)整問題

    【CV】樹莓派+OpenCV-python解決攝像頭分辨率及幀率過低無法調(diào)整問題

    筆者使用的是USB攝像頭。 如果你使用的是CSI攝像頭, vcgencmd get_camera 命令可能能夠幫到你。希望讀取高幀率可以看看CSDN-樹莓派ARM64系統(tǒng)中如何設(shè)置opencv-python讀取高清攝像頭畫面 如果你使用的是USB攝像頭, vcgencmd get_camera 命令會出現(xiàn) supported=1 detected=0 的提示,這是正常的。同

    2024年02月05日
    瀏覽(63)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包