qt结合opencv videocapture图像采集

el/2024/5/23 0:52:32

1. 核心代码

#ifndef FRAMECOTHREAD_H
#define FRAMECOTHREAD_H#include <QThread>
#include <QTimer>
#include <QString>
#include <QLabel>#include "opencv.hpp"
using namespace cv;#include "CommDef.h"class FrameCoThread : public QThread
{Q_OBJECT
public:FrameCoThread();FrameCoThread(QString url, QString strategy = COLLECTIONSTRATEGY_OPENCV, int interval = 50);~FrameCoThread();public:void setUrl(QString url = CAPLOCAL);void setStategy(const QString &stategy = COLLECTIONSTRATEGY_OPENCV);void setInterval(int interval = 50);void setDisplayWidget(QLabel *widget);protected:void run();private:void openCVRun();signals:private slots:void updateImg();private:QTimer _timer;Mat _srcImge;VideoCapture _videocap;QString _url;               // 视频流地址QString _strategy;          // 采集方式int _interval;              // 采集频率QLabel *_showLabel;              // 显示控件
};#endif // FRAMECOTHREAD_H
#include "FrameCoThread.h"FrameCoThread::FrameCoThread()
{}FrameCoThread::FrameCoThread(QString url, QString strategy, int interval)
{_url = url;_strategy = strategy;_interval = interval;connect(&_timer, SIGNAL(timeout()), this, SLOT(updateImg()));_timer.start(_interval);
}FrameCoThread::~FrameCoThread()
{}void FrameCoThread::setUrl(QString url)
{_url = url;
}void FrameCoThread::setStategy(const QString &stategy)
{_strategy = stategy;
}void FrameCoThread::setInterval(int interval)
{_interval = interval;
}void FrameCoThread::setDisplayWidget(QLabel *widget)
{_showLabel = widget;
}void FrameCoThread::run()
{if (COLLECTIONSTRATEGY_OPENCV == _strategy) {openCVRun();}
}void FrameCoThread::openCVRun()
{if (CAPLOCAL == _url) {//从摄像头捕获视频if(_videocap.open(0)){_srcImge = Mat::zeros(_videocap.get(CAP_PROP_FRAME_HEIGHT), _videocap.get(CAP_PROP_FRAME_WIDTH), CV_8UC3);}}
}void FrameCoThread::updateImg()
{if (!_videocap.isOpened())return;_videocap >> _srcImge;if (_srcImge.data) {QImage image2 = QImage((uchar*)(_srcImge.data), _srcImge.cols, _srcImge.rows, QImage::Format_RGB888);_showLabel->setPixmap(QPixmap::fromImage(image2));
//        _showLabel->resize(image2.size());_showLabel->update();}
}

2. Qt5.10 + Opencv4.01可直接编译运行完整工程代码

Opencv4.01需独立安装:Download opencv-4.0.1-vc14_vc15.exe (OpenCV)

完整工程代码:https://download.csdn.net/download/superyang_/10940189


http://www.ngui.cc/el/4967943.html

相关文章

分享:无版权图片素材免费下载网站

有时候&#xff0c;我们在寻找图片素材的时候&#xff0c;经常会考虑是否无侵权&#xff0c;到底有没有版权限制&#xff0c;图片质量如何的问题&#xff1f;接下来&#xff0c;干货君分享11个可用于商业用途的无版权图片免费下载网站&#xff08;文末有获取方式&#xff09;。…

哈哈哈,同样是程序员你为何那么优秀!?

家对程序员的第一印象就是沉默寡言&#xff0c;在我看来&#xff0c;他们的幽默机智都表现在他们的代码里&#xff0c;看了之后绝对让你对程序员这个群体刮目相看&#xff0c;或许可能会想跟他们干上一架。 今天&#xff0c;小编带你们来看看程序员们写的代码&#xff0c;绝对让…

linux网络编程-网络编程基础知识

1. 网络分层模型 2. 以太网帧格式(链路层) 3.IP数据报格式 4. UDP数据报格式 5.TCP数据报格式 注意点&#xff1a; 1>TCP/IP五层协议通常数据链路层物理层也被合称为链路层/网络接口层 2>应用层数据传输过程中传输层、网络层、链路层对数据的封装不是在应用程序中完成&…

linux网络编程-TCP socket编程模型

1. 编程模型 三次握手 四次挥手 2.主要函数说明 字节序转换函数&#xff1a; #include <arpa/inet.h> uint32_t htonl(uint32_t hostlong); uint16_t htons(uint16_t hostshort); uint32_t ntohl(uint32_t netlong); uint16_t ntohs(uint16_t netshort); IP转换函数&…

Qt对Json文件的读写

示例Json文件&#xff1a;HWCfg.json [{"Cameras": [],"NO": "00000000000000000000","Siip": "127.0.0.1","Siport": 8333},{"Cameras": [{"Acc": "admin","Ip": &quo…

和程序员约会的10个理由

前两天我正在头脑风暴一些极客&#xff08;geek&#xff09;想法的时候&#xff0c;我的老婆突然跟我讲&#xff0c;你应该写一篇文章&#xff0c;讲讲和程序员约会的10个理由。我愣了一下&#xff0c;“这个应该你告诉我才对啊&#xff01;” 我和老婆结婚已经十多年了&#x…

windows平台-cocos2dx环境搭建

cocos2dx环境搭建 下载工具Visual Studio 2015或者2017(最好是2015)cocos2dx v3.17.1Python2.7&#xff08;最好不要Ptyhon 3以上版本&#xff09; 开始配置Python的环境配置cocos2dx的环境配置 运行案例实验 下载工具 Visual Studio 2015或者2017(最好是2015) 安装时一定要选…

python builtins(内建函数)

1> print&#xff1a;打印函数(标准输出) 2> input&#xff1a;输入函数(标准输入) 3> help&#xff1a;帮助文档&#xff0c;相当于linux man命令 4> dir&#xff1a;函数不带参数时&#xff0c;返回当前范围内的变量、方法和定义的类型列表&#xff1b;带参数…

《重构-改善既有代码的设计》经典语录

文章所有内容引自《重构-改善既有代码的设计》 1. 如果你要给程序添加一个特性&#xff0c;但发现代码因缺乏良好的结构而不易于进行更改&#xff0c;那就先重构那个程序&#xff0c;使其比较容易添加该特性&#xff0c;然后再添加该特性 2. 重构前&#xff0c;先检查自己是否…

《重构-改善既有代码的设计》重构手法(封装)

文章内容和思路来自《重构-改善既有代码的设计》 1> 封装记录&#xff1a;记录型结构是多数变成语言提供的一种常见特性。它能直观的组织起来关联的数据&#xff0c;让我可以将数据作为有意义的单元传递&#xff0c;而不仅是一堆数据的拼凑。但简单的记录型结构也有其缺陷&a…