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

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

這篇具有很好參考價(jià)值的文章主要介紹了WSL2通過(guò)OpenCV調(diào)用并展示本機(jī)攝像頭的RTSP視頻流。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

前言

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

本篇博客的由來(lái)如上圖哈哈,WSL2 相關(guān)安裝教程可以參考我之前的博客:Win11安裝WSL2和Nvidia驅(qū)動(dòng)

更多文章歡迎來(lái)我的博客小站看呀,會(huì)有更多的技術(shù)細(xì)節(jié)~

安裝 CMake

ubuntu上請(qǐng)執(zhí)行

sudo apt install cmake -y

或者編譯安裝

# 以v3.25.1版本為例
git clone -b v3.25.1 https://github.com/Kitware/CMake.git 
cd CMake
# 你使用`--prefix`來(lái)指定安裝路徑,或者去掉`--prefix`,安裝在默認(rèn)路徑。
./bootstrap --prefix=<安裝路徑> && make && sudo make install

# 驗(yàn)證
cmake --version

如果報(bào)錯(cuò)Could NOT find OpenSSL,安裝如下依賴即可解決

sudo apt update
sudo apt upgrade
sudo apt install libssl-dev

安裝 OpenCV 和 FFmpeg

sudo apt install libopencv-dev
sudo apt install ffmpeg

啟動(dòng) Windows 本機(jī)的 RTSP 視頻流

下載解壓 EasyDarwin

Easydarwin是國(guó)內(nèi)團(tuán)隊(duì)開(kāi)發(fā)的開(kāi)源流媒體框架。它是基于Go語(yǔ)言研發(fā),從2012年12月創(chuàng)建并發(fā)展至今,從原有的單服務(wù)的流媒體服務(wù)器形式,擴(kuò)展成現(xiàn)在的云平臺(tái)架構(gòu)開(kāi)源項(xiàng)目,屬于高性能開(kāi)源RTSP流媒體服務(wù)器,在Github上受到廣大歡迎。

特點(diǎn):RTSP推模式轉(zhuǎn)發(fā)、RTSP拉模式轉(zhuǎn)發(fā)、錄像、檢索、回放、關(guān)鍵幀緩存、秒開(kāi)畫面、RESTful接口、WEB后臺(tái)管理、分布式負(fù)載均衡。

下載解壓 release 包

直接運(yùn)行 EasyDarwin.exe

以 Ctrl + C 停止服務(wù)。打開(kāi)瀏覽器輸入 http://localhost:10008, 進(jìn)入控制頁(yè)面,默認(rèn)用戶名密碼是admin/admin

查看本機(jī)攝像頭設(shè)備

Windows 本機(jī)安裝 ffmpeg 這里不再贅述啦,網(wǎng)上教程很多~

查看本機(jī)攝像頭設(shè)備命令如下

ffmpeg -list_devices true -f dshow -i dummy

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

開(kāi)始推流

ffmpeg -f dshow -i video="USB2.0 Camera" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -rtsp_transport tcp -f rtsp rtsp://192.168.1.101/test

參數(shù)解釋

  • -f dshow -i video="攝像頭名稱" 指定從本地?cái)z像頭中讀取視頻流。將“攝像頭名稱”替換為您的攝像頭名稱,例如“USB2.0 Camera”。
  • -vcodec libx264 指定使用 x264 編碼器進(jìn)行視頻編碼。
  • -preset ultrafast 設(shè)置編碼速度。這里使用的是最快的編碼速度,但可能會(huì)導(dǎo)致視頻質(zhì)量下降。
  • -tune zerolatency 設(shè)置編碼器以實(shí)現(xiàn)零延遲。
  • -f rtsp 指定輸出流的格式為 RTSP。
  • rtsp://<IP地址>/<路徑> 指定 RTSP 流的目標(biāo)地址。請(qǐng)將 <IP地址> 替換為 Windows 本機(jī) IP 地址,將 <路徑> 替換為您想要為流指定的路徑。

成功推流如下,注意保持控制臺(tái)的運(yùn)行

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

開(kāi)放本機(jī)防火墻(可選)

因?yàn)槲覀円?WSL2 里訪問(wèn)本機(jī)的 RTSP 視頻流,所以需要打開(kāi)本機(jī)的防火墻,如下圖

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

關(guān)閉專用網(wǎng)絡(luò)和公用網(wǎng)絡(luò)即可

用 OpenCV 接收視頻流

代碼如下

#include <opencv2/opencv.hpp>
#include <iostream>
#include <string>

int main(int argc, char **argv)
{
    // Ubuntu安裝ffmpeg:sudo apt-get install ffmpeg
    // rtsp地址,模擬四路視頻流進(jìn)行展示
    std::string rtsp1 = "rtsp://172.27.148.34/test";
    std::string rtsp2 = rtsp1;
    std::string rtsp3 = rtsp1;
    std::string rtsp4 = rtsp1;

    // CAP_FFMPEG:使用ffmpeg解碼
    cv::VideoCapture stream1 = cv::VideoCapture(rtsp1, cv::CAP_FFMPEG);
    cv::VideoCapture stream2 = cv::VideoCapture(rtsp2, cv::CAP_FFMPEG);
    cv::VideoCapture stream3 = cv::VideoCapture(rtsp3, cv::CAP_FFMPEG);
    cv::VideoCapture stream4 = cv::VideoCapture(rtsp4, cv::CAP_FFMPEG);

    if (!stream1.isOpened() || !stream2.isOpened() || !stream3.isOpened() || !stream4.isOpened())
    {
        std::cout << "有視頻流未打開(kāi)" << std::endl;
        return -1;
    }

    cv::Mat frame1;
    cv::Mat frame2;
    cv::Mat frame3;
    cv::Mat frame4;

    cv::Mat H1, H2, V, blur;

    // 使用namedWindow創(chuàng)建窗口,WINDOW_AUTOSIZE:自動(dòng)調(diào)整窗口大小
    cv::namedWindow("rtsp_demo", cv::WINDOW_AUTOSIZE);

    while (true)
    {
        if (!stream1.read(frame1) || !stream2.read(frame2) || !stream3.read(frame3) || !stream4.read(frame4))
        {
            std::cout << "有視頻流未讀取" << std::endl;
            continue;
        }
        // 縮放等處理
        cv::resize(frame1, frame1, cv::Size(500, 300));

        cv::resize(frame2, frame2, cv::Size(500, 300));
        cv::flip(frame2, frame2, 1);

        cv::resize(frame3, frame3, cv::Size(500, 300));
        cv::cvtColor(frame1, frame1, cv::COLOR_BGR2GRAY);
        cv::cvtColor(frame1, frame1, cv::COLOR_GRAY2BGR);

        cv::resize(frame4, frame4, cv::Size(500, 300));
        cv::putText(frame4, "RTSP demo", cv::Point(100, 100), cv::FONT_ITALIC, 1, cv::Scalar(0, 0, 255), 2);
        // 拼接
        cv::hconcat(frame1, frame2, H1);
        cv::hconcat(frame3, frame4, H2);
        cv::vconcat(H1, H2, V);

        // 高斯模糊一下
        cv::GaussianBlur(V, blur, cv::Size(25, 25), 0);

        cv::imshow("rtsp_demo", blur);

        if (cv::waitKey(1) == 27)
        {
            break;
        }
    }

    return 0;
}

CMakeLists.txt 內(nèi)容如下

# 最低版本要求
cmake_minimum_required(VERSION 3.10)

# 項(xiàng)目信息
project(rtsp_demo)

# 添加opencv庫(kù)
find_package(OpenCV REQUIRED)

# 添加頭文件
include_directories(${OpenCV_INCLUDE_DIRS})
# 添加庫(kù)文件
link_libraries(${OpenCV_LIBS})

# 添加可執(zhí)行程序
add_executable(rtsp_demo src/main.cpp)

啟動(dòng) cmake 配置并構(gòu)建

cmake -S . -B build 
cmake --build build 

運(yùn)行可執(zhí)行程序

./build/rtsp_demo

結(jié)果展示

成功用 WSL2 展示出四路 RTSP 視頻流~

WSL2通過(guò)OpenCV調(diào)用并展示本機(jī)攝像頭的RTSP視頻流文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-489922.html

到了這里,關(guān)于WSL2通過(guò)OpenCV調(diào)用并展示本機(jī)攝像頭的RTSP視頻流的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 使用OpenCV調(diào)用攝像頭

    使用OpenCV調(diào)用攝像頭

    1.創(chuàng)建一個(gè)攝像頭調(diào)用的空項(xiàng)目 2.添加上篇博客里已經(jīng)改好的屬性表——現(xiàn)有屬性表 3.返回解決方案資源管理器,在源文件里添加新建項(xiàng)命名為攝像頭調(diào)用 4.輸入以下代碼,開(kāi)始調(diào)試,然后就會(huì)彈出攝像頭 #include opencv2/highgui/highgui.hpp? #include opencv2/imgproc/imgproc.hpp? #include ope

    2024年02月05日
    瀏覽(35)
  • opencv調(diào)用??低暪I(yè)攝像頭

    opencv調(diào)用海康威視工業(yè)攝像頭

    opencv調(diào)用??低暪I(yè)攝像頭需要用到官方接口VideoCapture() 接口:cv2.VideoCapture() 作用:獲取本地目錄下的視頻文件或者使用本電腦的攝像頭獲取實(shí)時(shí)數(shù)據(jù); ?“0” ,調(diào)用的是本地電腦攝像頭?“1” ,調(diào)用的是外接攝像頭 打開(kāi)MVS? 正常設(shè)置使畫面正常? 然后找到寬度和長(zhǎng)度

    2024年02月13日
    瀏覽(30)
  • python實(shí)現(xiàn)opencv調(diào)用攝像頭

    Python的opencv庫(kù)提供了一種簡(jiǎn)單而高效的方法來(lái)處理圖像,包括從攝像頭中讀取視頻流。在本篇技術(shù)博客中,我們將介紹如何使用Python的opencv庫(kù)調(diào)用IP攝像頭和本地?cái)z像頭的代碼。 首先,我們需要安裝Python的opencv庫(kù),可以使用pip install opencv-python命令進(jìn)行安裝。 在使用IP攝像頭之

    2024年02月11日
    瀏覽(23)
  • 如何使用Opencv調(diào)用電腦攝像頭?

    當(dāng)我們想要使用opencv對(duì)視頻圖像進(jìn)行處理時(shí),往往第一步便是需要調(diào)用電腦攝像頭,下面博主將提供兩種版本的代碼(含詳細(xì)注釋),幫助大家學(xué)習(xí)如何使用Opencv調(diào)用電腦攝像頭進(jìn)行視頻錄制并保存: 一、C++版本 1. 從相機(jī)中讀取視頻 2. 從文件中讀取視頻 3. 保存視頻 二、P

    2024年02月11日
    瀏覽(94)
  • 使用opencv調(diào)用外接攝像頭

    使用opencv調(diào)用外接攝像頭

    當(dāng)我們使用opencv調(diào)用攝像頭的命令?cv2.VideoCapture(0),可能會(huì)出現(xiàn)下面這個(gè)錯(cuò)誤。 [ERROR:0@0.433] global obsensor_uvc_stream_channel.cpp:156 cv::obsensor::getStreamChannelGroup Camera index out of range 表明在嘗試獲取攝像機(jī)流通道組時(shí),使用的攝像機(jī)索引超出了有效范圍。這通常意味著你嘗試訪問(wèn)的攝

    2024年02月03日
    瀏覽(26)
  • 【計(jì)算機(jī)視覺(jué) · OpenCV】使用 OpenCV 調(diào)用手機(jī)攝像頭

    【計(jì)算機(jī)視覺(jué) · OpenCV】使用 OpenCV 調(diào)用手機(jī)攝像頭

    Droidcam 是一款可以將手機(jī)變成網(wǎng)絡(luò)攝像頭的工具,我們可以利用 Droidcam 讓 OpenCV 擁有調(diào)用手機(jī)攝像頭的能力。 2.1 安裝 DroidCam 在手機(jī)和電腦上分別安裝 DroidCam 的客戶端和服務(wù)端 下載地址:https://pan.baidu.com/s/1DrBn3P1Bx-SXa4d6oziifA?pwd=gr1o 提取碼:gr1o 2.2 測(cè)試連接狀態(tài) 手機(jī)和電腦需

    2024年02月09日
    瀏覽(31)
  • 使用OpenCV調(diào)用攝像頭和讀取視頻圖片

    使用OpenCV調(diào)用攝像頭和讀取視頻圖片

    要捕獲視頻,你需要?jiǎng)?chuàng)建一個(gè) VideoCapture 對(duì)象。它的參數(shù)是設(shè)備索引的名稱。設(shè)備索引就是指定哪個(gè)攝像頭的數(shù)字。正常情況下,內(nèi)部攝像頭可以通過(guò)傳入0來(lái)調(diào)用,傳遞1來(lái)選擇外置的第二個(gè)相機(jī),以此類推。在此之后,你可以逐幀捕獲。但是在最后,不要忘記釋放俘虜。 直

    2024年02月08日
    瀏覽(28)
  • Python進(jìn)階,使用 opencv 調(diào)用攝像頭進(jìn)行拍照

    ? ? ? ? ?opencv 支持 Python 版本的模塊叫作 opencv-p hon ,可直接使用 pip install opencv-python 令進(jìn)行安裝,但常常會(huì)因?yàn)榫W(wǎng)絡(luò)等問(wèn)題導(dǎo)致失敗。推薦使用離線模式來(lái)安裝 opencv 模塊。 下載完安裝包后,使用如下命令進(jìn)行安裝: D: pip install opencv

    2024年02月11日
    瀏覽(27)
  • 4.通過(guò)Opencv采集攝像頭視頻數(shù)據(jù)

    4.通過(guò)Opencv采集攝像頭視頻數(shù)據(jù)

    VideoCapture() 虛擬采集器,一般設(shè)備號(hào)從0開(kāi)始 cap.read() 讀取視頻幀 返回值有兩個(gè),第一個(gè)為狀態(tài)值,讀到幀為true 第二個(gè)值為視頻幀 cap.release() 釋放資源 示例程序: 運(yùn)行結(jié)果: 從視頻文件中讀取視頻幀 只處理視頻,不處理音頻,所以讀取到的視頻沒(méi)有聲音 播放速度設(shè)置 Vi

    2023年04月22日
    瀏覽(24)
  • 通過(guò)Opencv打開(kāi)指定攝像頭的方法

    我們使用Opencv打開(kāi)攝像頭,一般是使用VideoCapture的open接口。 open接口要傳入一個(gè)標(biāo)識(shí)符,如果只有1個(gè)攝像機(jī),那么就是0,如果系統(tǒng)中有多個(gè)攝像機(jī),那么只要將其向上增加即可。 系統(tǒng): 銀河麒麟linux系統(tǒng) 問(wèn)題: 現(xiàn)在我插入了一個(gè)雙目攝像頭(兩個(gè)USB線,一個(gè)彩色,一個(gè)紅

    2024年02月13日
    瀏覽(22)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包