OpenCV Qt多執行緒開啟多攝像頭

2021-09-02 13:03:18 字數 1981 閱讀 3936

現在網路上開源的opencv開啟攝像頭大多還是用死迴圈的方式,這裡採用opencv+qt多執行緒開啟多個攝像頭,並在乙個介面上顯示。本例程開啟四個usb攝像頭,三個型號一樣,另乙個型號不一樣,原本想開啟四個型號一樣的,但是不知道為什麼有乙個就是打不開,現在還在查詢原因。下面結合**來講解。

#ifndef thread_cam_h

#define thread_cam_h

#include #include #include "opencv2/core/core.hpp"

#include "opencv2/videoio/videoio.hpp"

#include "opencv2/imgproc/imgproc.hpp"

#include "opencv2/imgcodecs/imgcodecs.hpp"

#include "opencv2/highgui/highgui.hpp"

#include #include using namespace cv;

using namespace std;

class thread_cam : public qthread

void show_cam();

protected:

void run();

private:

int count;

qtimer *timer;

mat img;

qimage qimg;

videocapture cap;

signals:

void return_qimage(qimage);//通過訊號將子執行緒中採集的傳回主線程

public slots:

};#endif // thread_cam_h

widget.h裡面則不用多說了,直接看**:

#ifndef widget_h

#define widget_h

#include #include "thread_cam.h"

namespace ui

class widget : public qwidget

;#endif // widget_h

thread_cam.cpp裡是子執行緒類的實現,這裡講作為訊號引數直接傳回主程式會導致速度變慢,以後再想辦法改進。

#include "thread_cam.h"

#include thread_cam::thread_cam(qobject *parent) : qthread(parent)

void thread_cam::run()

void thread_cam::show_cam()

接下來就是主線程裡處理的東西:

#include "widget.h"

#include "ui_widget.h"

#include widget::widget(qwidget *parent) :

qwidget(parent),

ui(new ui::widget)

widget::~widget()

void widget::get_qimage1(qimage img_temp)

void widget::get_qimage2(qimage img_temp)

void widget::get_qimage3(qimage img_temp)

void widget::get_qimage4(qimage img_temp)

void widget::on_pushbutton_clicked()

void widget::on_pushbutton_2_clicked()

最後看看效果:

python 開啟多執行緒

專案當中要使用多執行緒提高資源的利用率,開啟多執行緒注意事項 1 編寫處理資料的功能性函式,在多執行緒中進行呼叫執行,所謂多執行緒就是傳入處理資料的功能型函式接受的資料不一樣,2 開啟多執行緒 start 監控程序是否結束 is alive 下面是實現開啟兩個多執行緒 引入多執行緒模組 coding...

Qt開啟多執行緒

qt開啟多執行緒,主要用到類qthread。有兩種方法,第一種用乙個類繼承qthread,然後重新改寫虛函式run 當要開啟新執行緒時,只需要例項該類,然後呼叫函式start 就可以開啟一條多執行緒。第二種方法是繼承乙個qobject類,然後利用movetothread 函式開啟乙個執行緒槽函式,將...

php 開啟多執行緒 php如何實現多執行緒

php中可以實現多執行緒,是一種利用舊的exec函式通過非同步處理方法實現多執行緒的,exec函式本身就是乙個執行外部程式的php函式。下面我們就來具體看看php多執行緒的實現方法。我們首先來看乙個示例 class execmulti function multithreadtest exec ph...