我是靠谱客的博主 淡淡画笔,最近开发中收集的这篇文章主要介绍QT + 工业相机BASLER +vs2015 实现线程拍摄视频,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、创建一个线程,名字随意,继承QThread(比如)
注:再次之前要将opcv和工业相机的ployn在vs中的环境配置好!!!
//线程头文件
//根据自己的需要传参到线程里
#ifndef MYTHREAD_H
#define MYTHREAD_H
#include
#include
#include
#include
#include
#include
#include

class GigeCamera;//这是另一个线程,所以相机的操作倒在这里面。

class MyThread : public QThread
{
Q_OBJECT
public:
explicit MyThread(QLabel *imgLabel,GigeCamera *gigeCamera);
~MyThread();
void closeThread();

public slots:
void pauses();
void resume();

protected:
virtual void run();

private:
QLabel *imgLabelM = nullptr; //图片显示控件指针
GigeCamera *gigeCameraM = nullptr; //相机对象指针
QMutex pause;
QImage *imgM; //图片指针

};
#endif // MYTHREAD_H

//.cpp文件
#include “MyThread.h”
#include
#include
#include

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/video/video.hpp>

#include"SampleView.h"
#include
#include “GigeCamera.h”
#include
#include

MyThread::MyThread(QLabel *imgLabel, GigeCamera *gigeCamera)
{
imgLabelM = imgLabel;
gigeCameraM = gigeCamera;
imgM = new QImage();
}

MyThread::~MyThread()
{
if (imgM)
delete imgM;
}

void MyThread::pauses()
{
this->pause.lock();
}

void MyThread::resume()
{
this->pause.unlock();
}

void MyThread::run()
{
while (true)
{
pause.lock();
gigeCameraM->SavePhoto(imgM);
imgLabelM->setPixmap(QPixmap::fromImage(imgM)/.scaled(imgLabelM->size(), Qt::KeepAspectRatio)
/);
imgLabelM->setAlignment(Qt::AlignCenter); //设置图片的位置为居中
msleep(20);
pause.unlock();
}
}
二、调用线程
1.在使用线程的.h文件中引入线程:class MyThread;
2.在使用线程的.cpp文件中引入线程的头文件
3.实例化线程
线程变量
实例化
5.使用一个按钮来控制线程的开启和关闭
在这里插入图片描述
在这里插入图片描述
相机线程看下一篇

最后

以上就是淡淡画笔为你收集整理的QT + 工业相机BASLER +vs2015 实现线程拍摄视频的全部内容,希望文章能够帮你解决QT + 工业相机BASLER +vs2015 实现线程拍摄视频所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部