[OpenCV] -- 简单摄像头操作
来源:互联网 发布:原田知世 老公是 编辑:程序博客网 时间:2024/04/28 02:54
Email : hahayacoder@gmail.com
1 简单玩了下OpenCV中开启和关闭电脑摄像头,其实挺简单的,接下来在Qt中实现
2 打开Qt Creator,新建一个Qt Gui工程
3 打开ui文件,设计成下图(注意:图像显示是一个QLabel,用于显示摄像头拍到的照片,将其拖大点,不然太小拍到的照片显示部分过小)
4 实现过程中用到两个重要的函cvCreateCameraCapture(开启摄像头)和cvReleaseCapture(关闭摄像头)
5 大致思路是:点击打开摄像头按钮,则开启摄像头,并设置一个定时器,每隔一段时间捕获摄像头摄取到的帧,将其转换成QImage,最最后在QLabel控件上显示
6 代码如下
// opencamera.h#ifndef OPENCAMERA_H#define OPENCAMERA_H#include <QDialog>#include <QTimer>#include <QImage>#include "cv.h"#include "highgui.h"namespace Ui {class OpenCamera;}class OpenCamera : public QDialog{ Q_OBJECT public: explicit OpenCamera(QWidget *parent = 0); ~OpenCamera();private slots: void sltBtnOpenCamera(); //打开摄像头 void sltBtnCloseCamera(); //关闭摄像头 void sltTimeOut(); //定时器时间到达 读取摄像头详细private: Ui::OpenCamera *ui; //定时器对象 没隔一段时间读取摄像头详细 QTimer *m_timer; CvCapture *m_camera; //视频获取结构 作为视频获取函数的返回值 IplImage *m_imgFrame; //IplImage结构指针 存放每一帧的图像};#endif // OPENCAMERA_H
// opencamera.cpp#include "opencamera.h"#include "ui_opencamera.h"OpenCamera::OpenCamera(QWidget *parent) : QDialog(parent), ui(new Ui::OpenCamera){ ui->setupUi(this); //初始化成员变量 m_timer = new QTimer(this); m_camera = NULL; m_imgFrame = NULL; //连接信号和槽 connect(ui->m_btnOpenCamera, SIGNAL(clicked()), this, SLOT(sltBtnOpenCamera())); connect(ui->m_btnCloseCamera, SIGNAL(clicked()), this, SLOT(sltBtnCloseCamera())); connect(m_timer, SIGNAL(timeout()), this, SLOT(sltTimeOut()));}OpenCamera::~OpenCamera(){ delete ui;}void OpenCamera::sltBtnOpenCamera(){ //打开摄像头 从摄像头中获取视频 m_camera = cvCreateCameraCapture(0); //开启定时器 没隔0.5秒刷新一次 m_timer->start(500);}void OpenCamera::sltTimeOut(){ //读取摄像头信息 将读取回来的帧转换成QImage类型 并在主界面的QLabel中显示 //从摄像头中抓取并返回每一帧 m_imgFrame = cvQueryFrame(m_camera); //将抓取到的帧转换成QImage格式 QImage showImage((const uchar*)m_imgFrame->imageData, m_imgFrame->width, m_imgFrame->height, QImage::Format_RGB888); //将图片显示到QLabel上 ui->m_lbPhoto->setPixmap(QPixmap::fromImage(showImage));}void OpenCamera::sltBtnCloseCamera(){ //释放摄像头内存 cvReleaseCapture(&m_camera); //停止定时器 m_timer->stop();}//main.cpp#include "opencamera.h"#include <QApplication>int main(int argc, char *argv[]){ QApplication a(argc, argv); OpenCamera w; w.show(); return a.exec();}
运行截图:
- [OpenCV] -- 简单摄像头操作
- [OpenCV] -- 简单摄像头操作
- [opencv] 摄像头操作
- Qt5.7+opencv对摄像头的一些简单操作
- vs2010+opencv 243 + 摄像头操作
- opencv-python 摄像头的简单应用
- Qt、Opencv、QML实现摄像头简单对比
- 用opencv操作高清摄像头
- opencv 2.4如何读取摄像头的操作
- opencv中一些关于摄像头的操作
- 利用OpenCV + PyQt4操作摄像头的demo
- OpenCV Android 实例笔记2--摄像头操作
- opencv摄像头
- Qt Opencv 在Linux下摄像头简单示例v1.0
- 利用Qt与OpenCV简单实现摄像头图像捕捉
- 用 OpenCV 编写一个简单的摄像头视频监控程序
- Qt Opencv 在Linux下摄像头简单示例v1.0
- 用 OpenCV 编写一个简单的摄像头视频监控程序
- sizeof 和 strlen
- c语言中format不同的数据匹配的不同数据格式
- Android中的sp和wp类模板以及RefBase类
- 使用Matlab做单变量曲线拟合
- ZOJ 3156 Taxi 二分图+二分查找
- [OpenCV] -- 简单摄像头操作
- FFMPEG架构分析
- Linux下移动CMCC WLAN自动连接认证
- Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面
- 终于搞定了SHADOWMAP,
- 2.古堡算式
- 我校成功举办2012中国移动开发者大会经验交流会
- 浅谈java中的单态设计模式
- POSIX互斥锁