qt显示通过opencv显示摄像头
来源:互联网 发布:如何解析json数组 编辑:程序博客网 时间:2024/06/06 00:11
qt显示通过opencv显示摄像头
做毕业设计实现这个功能时遇到博客中遇到的不使用imshow就不显示的问题,经过查找资料通过定时获取图像的方法解决了该问题。
以下是主要实现方法 下载地址(qt5.8 vs2013 addin2.0)
头文件
#pragma once#include <QtWidgets/QMainWindow>#include <QMainWindow>#include <QMenu>#include <QMenuBar>#include <QStatusBar>#include <QLabel>#include "ui_stereovisondemo.h"#include <opencv2/opencv.hpp>using namespace cv;class stereovisondemo : public QMainWindow{ Q_OBJECTpublic: stereovisondemo(QWidget *parent = Q_NULLPTR);private: Ui::stereovisondemoClass ui;private slots: void openCaptureClicked(); void showImage();};
cpp
//#pragma execution_character_set("utf-8")#include "stereovisondemo.h"#include <opencv2/opencv.hpp>#include <iostream> #include <Windows.h>#include <QTimer>using namespace std;using namespace cv;QTimer *timer;QImage image; VideoCapture cap;Mat frame;void stereovisondemo::display(cv::Mat mat){ cv::Mat rgb; QImage img; if (mat.channels() == 3) { cv::cvtColor(mat, rgb, CV_BGR2RGB); img = QImage((const uchar*)(rgb.data), rgb.cols, rgb.rows, rgb.cols*rgb.channels(), QImage::Format_RGB888); } else { img = QImage((const uchar*)(mat.data), mat.cols, mat.rows, mat.cols*mat.channels(), QImage::Format_Indexed8); } ui.label1->clear(); ui.label1->setPixmap(QPixmap::fromImage(img)); ui.label1->resize(ui.label1->pixmap()->size()); ui.label1->show();}QImage Mat2QImage(cv::Mat cvImg){ QImage qImg; if (cvImg.channels() == 3) //3 channels color image { cv::cvtColor(cvImg, cvImg, CV_BGR2RGB); qImg = QImage((const unsigned char*)(cvImg.data), cvImg.cols, cvImg.rows, cvImg.cols*cvImg.channels(), QImage::Format_RGB888); } else if (cvImg.channels() == 1) //grayscale image { qImg = QImage((const unsigned char*)(cvImg.data), cvImg.cols, cvImg.rows, cvImg.cols*cvImg.channels(), QImage::Format_Indexed8); } else { qImg = QImage((const unsigned char*)(cvImg.data), cvImg.cols, cvImg.rows, cvImg.cols*cvImg.channels(), QImage::Format_RGB888); } return qImg;}stereovisondemo::stereovisondemo(QWidget *parent) : QMainWindow(parent){ ui.setupUi(this); timer = new QTimer(this); /*信号和槽*/ connect(timer, SIGNAL(timeout()), this, SLOT(showImage())); // 时间到,读取当前摄像头信息}void stereovisondemo::openCaptureClicked()//启动定时器{ timer->start(33); cap.open(0);}void stereovisondemo::showImage(){ cap >> frame; image = Mat2QImage(frame); ui.label1->setPixmap(QPixmap::fromImage(image)); // 将图片显示到label上 }
0 0
- qt显示通过opencv显示摄像头
- ubuntu下QT+OpenCV控制摄像头通过label 显示
- ubuntu下QT+OpenCV控制摄像头通过labe( 显示Qt Opencv 在Linux下摄像头简单示例)
- 使用Qt+OpenCV+VideoInput 显示摄像头图像
- Qt+opencv多摄像头视频显示
- opencv 显示摄像头+fps
- MFC 通过opencv打开摄像头 拍照后显示保存
- 在QT中通过摄像头动态显示图片
- opencv 从摄像头显示视频
- 摄像头显示OpenCV或DirectShow
- OpenCV之显示摄像头图像
- opencv打开摄像头显示视频
- OpenCV 获取摄像头并显示摄像头视频
- OpenCV 获取摄像头并显示摄像头视频
- OpenCV 获取摄像头并显示摄像头视频
- OpenCV 获取摄像头并显示摄像头视频
- Opencv调用摄像头,显示摄像头图像
- OpenCV 获取摄像头并显示摄像头视频
- ubuntu14.04搭建smba共享
- JAVA中位运算与逻辑运算
- TensorFlow anaconda命令备忘
- maven 使用错误
- ArrayDeque类
- qt显示通过opencv显示摄像头
- Zeppelin interperter 模式设置总结图解2
- AutowiredAnnotationBeanPostProcessor
- Spring出现Error creating bean with name and Singleton bean creation not allowed
- 用guava实现简单的事件驱动
- android studio ndk 开发
- easyui里弹窗的两种表现形式
- 对原生态jdbc程序中问题总结
- WebForms UnobtrusiveValidationMode 需要“jquery”ScriptResourceMapping。请添加一个名为 jquery (区分大小写)的 ScriptResourceMapping。