最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用Qt+opencv實現(xiàn)視頻分解為圖片

 更新時間:2023年12月28日 15:21:02   作者:N階二進制  
這篇文章主要為大家詳細(xì)介紹了如何利用Qt和opencv實現(xiàn)視頻分解為圖片,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

最近遇到一些售前提供的BUG,但是他們提供的是錄像視頻,因為處理顯示速度比較快,因此很難找到出現(xiàn)問題的位置。需要反復(fù)播放,自己編寫了一個視頻分解成圖片這樣就可以一張圖一張圖的對比,方便查看。

開發(fā)環(huán)境

qt+openvc

sudo apt install libopencv-dev

源碼說明

引用opencv動態(tài)庫

.pro文件需要添加opencv的動態(tài)庫

LIBS += -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs

Qt代碼

將視頻分解成每一幀,然后將每一幀保存位圖片。

void MainWindow::slotClickBtn()
{ // 打開視頻文件
    cv::VideoCapture video("/pan/錄屏_選擇區(qū)域_20231227104611.mp4");

    // 檢查視頻是否成功打開
    if (!video.isOpened()) {
        std::cerr << "無法打開視頻文件" << std::endl;

    }

    // 讀取視頻的幀率和總幀數(shù)
    double fps = video.get(cv::CAP_PROP_FPS);
    int totalFrames = video.get(cv::CAP_PROP_FRAME_COUNT);

    // 逐幀讀取視頻并保存為圖像文件
    for (int frameNumber = 0; frameNumber < totalFrames; ++frameNumber) {
        cv::Mat frame;
        video.read(frame);

        // 檢查是否成功讀取幀
        if (frame.empty()) {
            std::cerr << "無法讀取視頻幀" << std::endl;
            break;
        }

        // 生成圖像文件名,例如 frame_0001.jpg
        std::string filename = "frame_" + std::to_string(frameNumber + 1) + ".jpg";

        // 保存幀為圖像文件
        cv::imwrite(filename, frame);
    }

    // 關(guān)閉視頻文件
    video.release();
    std::cout << "視頻分解完成,共生成 " << totalFrames << " 張圖像文件。" << std::endl;

}

源代碼地址

https://gitcode.net/arv002/qt/-/tree/master/opencv/VideoDecomposition

擴展

VideoCapture 詳解

cv::VideoCapture 是 OpenCV 中用于從視頻文件、攝像頭或圖像序列中捕獲幀的類。它提供了一種方便的方式來處理視頻流和圖像序列。

以下是一些關(guān)于 cv::VideoCapture 的主要方法和屬性的詳細(xì)說明:

構(gòu)造函數(shù)

cv::VideoCapture(const cv::String& filename);
cv::VideoCapture(int index);

filename:視頻文件的路徑,可以是本地文件路徑或網(wǎng)絡(luò) URL。

index:攝像頭的索引。通常,0 表示默認(rèn)攝像頭,1 表示第二個攝像頭,以此類推。

成員函數(shù)

bool open(const cv::String& filename);

打開視頻文件。返回 true 表示成功打開,false 表示失敗。

bool isOpened() const;

檢查視頻是否成功打開。返回 true 表示成功打開,false 表示失敗。

void release();

釋放資源。關(guān)閉視頻文件或釋放攝像頭。

bool read(cv::OutputArray image);

從視頻流中讀取一幀。返回 true 表示成功讀取,false 表示讀取失敗或到達(dá)視頻末尾。

double get(int propId) const;

獲取視頻流的屬性值,例如幀率、寬度、高度等。propId 是屬性標(biāo)識符,例如 cv::CAP_PROP_FPS 表示幀率。

bool set(int propId, double value);

設(shè)置視頻流的屬性值。propId 是屬性標(biāo)識符,value 是要設(shè)置的值。

示例用法

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

int main() {
    cv::VideoCapture cap("path/to/your/video.mp4");

    if (!cap.isOpened()) {
        std::cerr << "無法打開視頻文件" << std::endl;
        return -1;
    }

    double fps = cap.get(cv::CAP_PROP_FPS);
    int width = cap.get(cv::CAP_PROP_FRAME_WIDTH);
    int height = cap.get(cv::CAP_PROP_FRAME_HEIGHT);

    std::cout << "幀率: " << fps << ",寬度: " << width << ",高度: " << height << std::endl;

    cv::Mat frame;
    while (cap.read(frame)) {
        // 處理每一幀
        cv::imshow("Frame", frame);
        cv::waitKey(30);  // 等待30毫秒
    }

    cap.release();
    cv::destroyAllWindows();

    return 0;
}

上述代碼演示了如何打開視頻文件、獲取視頻屬性、逐幀讀取視頻并顯示。請根據(jù)實際需求調(diào)整。

到此這篇關(guān)于利用Qt+opencv實現(xiàn)視頻分解為圖片的文章就介紹到這了,更多相關(guān)Qt opencv視頻分解為圖片內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++?路徑中./、../、/代表的含義

    C++?路徑中./、../、/代表的含義

    這篇文章主要介紹了C++?路徑中./、../、/代表的含義,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • C++學(xué)生信息管理系統(tǒng)

    C++學(xué)生信息管理系統(tǒng)

    這篇文章主要為大家想詳細(xì)介紹了C++學(xué)生信息管理系統(tǒng)的實現(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-06-06
  • 總結(jié)C語言中const關(guān)鍵字的使用

    總結(jié)C語言中const關(guān)鍵字的使用

    一起雖然學(xué)過c語言,但是并沒有寫過太多的代碼,最近想要拾起c語言,就寫了一些代碼,但是對const關(guān)鍵字比較陌生,這里總結(jié)一下,方法自己和大家有需要的時候參考借鑒,下面跟著小編一起學(xué)習(xí)學(xué)習(xí)吧。
    2016-11-11
  • C++ Boost Variant示例超詳細(xì)講解

    C++ Boost Variant示例超詳細(xì)講解

    Boost是為C++語言標(biāo)準(zhǔn)庫提供擴展的一些C++程序庫的總稱。Boost庫是一個可移植、提供源代碼的C++庫,作為標(biāo)準(zhǔn)庫的后備,是C++標(biāo)準(zhǔn)化進程的開發(fā)引擎之一,是為C++語言標(biāo)準(zhǔn)庫提供擴展的一些C++程序庫的總稱
    2022-11-11
  • C++計算每個字符出現(xiàn)的次數(shù)

    C++計算每個字符出現(xiàn)的次數(shù)

    這篇文章主要介紹了C++計算每個字符出現(xiàn)的次數(shù)的相關(guān)資料,需要的朋友可以參考下
    2016-05-05
  • Qt Creator使用教程的簡單說明

    Qt Creator使用教程的簡單說明

    如今 Qt Creator 功能十分強大了,包含項目模板生成、代碼編輯、UI 設(shè)計、QML 界面編輯、調(diào)試程序、上下文幫助等豐富功能,本文就詳細(xì)的介紹一下如何使用
    2021-08-08
  • 方陣順時針旋轉(zhuǎn)的實現(xiàn)代碼

    方陣順時針旋轉(zhuǎn)的實現(xiàn)代碼

    以下是關(guān)于方陣順時針旋轉(zhuǎn)的實現(xiàn)代碼。需要的朋友參考下
    2013-05-05
  • C語言中memcpy 的使用示例詳解

    C語言中memcpy 的使用示例詳解

    memcpy是C語言中非常重要的一個函數(shù),用于內(nèi)存塊的復(fù)制,它定義在標(biāo)準(zhǔn)頭文件 <string.h> 中,這篇文章給大家介紹C語言 memcpy的使用,感興趣的朋友跟隨小編一起看看吧
    2025-09-09
  • C語言程序設(shè)計50例(經(jīng)典收藏)

    C語言程序設(shè)計50例(經(jīng)典收藏)

    本篇文章是對C語言程序設(shè)計的50個小案例進行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • C語言手把手教你實現(xiàn)貪吃蛇AI(下)

    C語言手把手教你實現(xiàn)貪吃蛇AI(下)

    這篇文章主要手把手教你實現(xiàn)C語言版貪吃蛇AI,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01

最新評論

莱州市| 大连市| 景洪市| 九寨沟县| 自治县| 内乡县| 浪卡子县| 河曲县| 全州县| 石河子市| 靖江市| 安仁县| 民丰县| 深州市| 梅河口市| 垦利县| 德庆县| 自贡市| 灵台县| 梨树县| 大余县| 陆川县| 三门峡市| 湘乡市| 祥云县| 红河县| 古蔺县| 浦县| 新安县| 濉溪县| 阜阳市| 怀仁县| 咸阳市| 弥渡县| 舒城县| 鹿泉市| 海晏县| 壤塘县| 广丰县| 南投市| 上蔡县|