溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何解析RTSP協(xié)議視頻平臺EasyCVR使用OpenCV 從內(nèi)存中構建Mat數(shù)據(jù)

發(fā)布時間:2021-12-15 18:17:05 來源:億速云 閱讀:171 作者:柒染 欄目:大數(shù)據(jù)

本篇文章給大家分享的是有關如何解析RTSP協(xié)議視頻平臺EasyCVR使用OpenCV 從內(nèi)存中構建Mat數(shù)據(jù),小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

在 EasyCVR 圖片處理功能中,采用了 OpenCV 進行了圖片處理。OpenCV 是一個基于 BSD 許可(開源)發(fā)行的跨平臺計算機視覺和機器學習軟件庫,可以運行在Linux、Windows、Android和Mac OS操作系統(tǒng)上。

如何解析RTSP協(xié)議視頻平臺EasyCVR使用OpenCV 從內(nèi)存中構建Mat數(shù)據(jù)

在使用 OpenCV 上,一般直接使用cv::imread(file_path.c_str());方法構建 cv::Mat 數(shù)據(jù)進行處理。此種方法是從磁盤中的文件中讀取數(shù)據(jù)后構建 cv::Mat,即處理順序為:

  1. 首先其他模塊將圖片數(shù)據(jù)寫入到磁盤文件中;

  2. OpenCV 將磁盤文件加載到內(nèi)存中構建 Mat 數(shù)據(jù)。

此種方法缺點如下,首先在磁盤的讀寫上消耗了性能,其次其他模塊消耗了一次內(nèi)存,OpenCV 模塊也消耗了一次內(nèi)存。

因為其他模塊已經(jīng)將對應的圖片數(shù)據(jù)加載在內(nèi)存中,因此直接將此部分數(shù)據(jù)傳遞給 OpenCV 模塊,就可極大的加快處理速度。主要使用cv::imdecode(data, CV_LOAD_IMAGE_COLOR)方法構建 Mat 數(shù)據(jù)。
以下為具體代碼:

string fname = "D:/image.jpg";
    //! 以二進制流方式讀取圖片到內(nèi)存
    FILE* pFile = fopen(fname.c_str(), "rb");
    fseek(pFile, 0, SEEK_END);
    long lSize = ftell(pFile);
    rewind(pFile);
    char* pData = new char[lSize];
    fread(pData, sizeof(char), lSize, pFile);
    fclose(pFile);
    //! 解碼內(nèi)存數(shù)據(jù),變成cv::Mat數(shù)據(jù)
    cv::Mat img_decode;
    vector<uchar> data;
    for (int i = 0; i < lSize; ++i){
        data.push_back(pData[i]);
    }
    img_decode = cv::imdecode(data, CV_LOAD_IMAGE_COLOR);
    cv::flip(img_decode, img_decode, -1);
    img_decode.channels();
    //! 將cv::Mat數(shù)據(jù)編碼成數(shù)據(jù)流
    vector<unsigned char> img_encode;
    cv::imencode(".jpg", img_decode, img_encode);
    unsigned char *encode_data = new unsigned char[lSize];
    for (int i = 0; i<lSize; i++){
        encode_data[i] = img_encode[i];
    }

首先從文件中讀取數(shù)據(jù),并加載到內(nèi)存中。此部分和 OpenCV 完全無關,可以由其他模塊進行設計。data 為存儲內(nèi)存的數(shù)據(jù)。最終直接調(diào)用 cv::imdecode 就構建成功。

關于EasyCVR融合視頻平臺

EasyCVR視頻解決方案分為設備端、服務端、客戶端三個部分,設備端位于局域網(wǎng),服務端及客戶端位于互聯(lián)網(wǎng),支持傳統(tǒng)網(wǎng)絡攝像機、NVR、編碼器、SDK等設備,最大程度的提高了硬件設備的兼容性。

以上就是如何解析RTSP協(xié)議視頻平臺EasyCVR使用OpenCV 從內(nèi)存中構建Mat數(shù)據(jù),小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降摹OM隳芡ㄟ^這篇文章學到更多知識。更多詳情敬請關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI