現在網路上開源的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...