资源简介
基于QT编写的摄像头捕获程序,能够将摄像头捕获的画面显示在界面上。
代码片段和文件信息
/************************************************************************
* Copyright(c) 2011 谢小军
* Brief: 视频捕捉Qt+OpenCV
* Version: 1.0
* Author: 谢小军
* Email: 346944475@qq.com
* Date: 2011/12/05
************************************************************************/
#include “camcapture.h“
camCapture::camCapture(QWidget *parent Qt::WFlags flags)
: QMainWindow(parent flags)
{
count=0;
// 初始化处理,建立QImage和frame的关联,开启定时器
//打开摄像头端口
//方法1
/*
CvCapture* pCapture = NULL;
if( !(pCapture = cvCaptureFromCAM(-1)))
{
fprintf(stderr “Can not open camera.\n“);
return -2;
}*/
path=QCoreApplication::applicationDirPath();//获得当前路径
//方法2
capture.open(-1);//打开摄像头端口
if (capture.isOpened())//判断是否打开
{
capture >> frame;//往矩阵里存数据流
if (!frame.empty())//判断是否取出流
{
cv::cvtColor(frame frame CV_BGR2RGB);//色彩空间转换
/*函数 cvCvtColor 将输入图像从一个色彩空间转换为另外一个色彩空间。函数忽略 IplImage 头中定义的 colorModel 和 channelSeq 域,所以输入图像的色彩空间应该正确指定 (包括通道的顺序,对RGB空间而言, BGR 意味着布局为 B0 G0 R0 B1 G1 R1 ... 层叠的 24-位格式,而 RGB 意味着布局为 R0 G0 B0 R1 G1 B1 . .. 层叠的24-位格式.
*/
cv::flip(frame frame 1);//垂直,水平或即垂直又水平翻转二维数组
image = new QImage((const unsigned char*)(frame.data) frame.cols frame.rows QImage::Format_RGB888);//将矩阵转换成Qimage类型
timer = new QTimer(this);//设置时间值:QTimer类提供了定时器信号和单触发定时器
timer->setInterval(30);//设置信号槽触发间隔
connect(timer SIGNAL(timeout()) this SLOT(nextframe()));//信号槽连接
//connect(ui.pushButtonSIGNAL(clicked())thisSLOT(SavePicture()));
timer->start();//开始一个msec毫秒定时的定时器。
}
}
ui.setupUi(this);//更新用户接口,细微变化
}
camCapture::~camCapture()
{
delete image;//析构
delete timer;//析构
}
void camCapture::paintEvent(QPaintEvent * e)
{
// 更新图像
QPainter painter(this);//绘制,在窗口部件上
painter.drawImage(QPoint(35 100) *image);//在点p绘制图像i。int conversion_flags = 0使用conversion_flags来指定你希望发生什么。
//QPoint(20 30):点的坐标
}
void camCapture::nextframe()//槽函数
{
// 更新数据
capture >> frame;//将从摄像头获取的流读入到矩形框里
if (!frame.empty())//判断矩形框类容不为空
{
cv::cvtColor(frame frame CV_BGR2RGB);//颜色转换
cv::flip(frame frame 1);//垂直,水平或即垂直又水平翻转二维数组
this->update();//更新数据
}
count++;
if (count==30)
SavePicture();
}
//yearmonthhourdayminutesecond;
void camCapture::SavePicture()//保存图片
{
//获得时间
year=myDate.currentDate().year();
month=myDate.currentDate().month();
day=myDate.currentDate().day();
hour=myTime.currentTime().hour();
minute=myTime.currentTime().minute();
second=myTime.currentTime().second();
mm=myTime.currentTime().msec();
char * addr=new char[300];
sprintf(addr“./pecture/%d-%d-%d %d-%d-%d %d.jpg“(const char*) path.toLocal8Bit()yearmonthdayhourminutesecondmm);
image->save(addr);
delete addr;
count=0;
/*
FILE *fp;
if (!(fp=fopen(addr“w“)))
{
delete addr;
count=0;
return;
}
fclose(fp);
QFile m_infile(addr);
if (m_infile.open(QIODevice::WriteOnly))
{
QDataStream out(&m_infile);
out.setVersion(QDataS
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3511 2011-12-21 19:23 Qt+OpenCV读取摄像头\camCapture\camcapture.cpp
文件 3419 2011-12-07 10:03 Qt+OpenCV读取摄像头\camCapture\camcapture.cpp.bak
文件 1318 2011-12-20 21:14 Qt+OpenCV读取摄像头\camCapture\camcapture.h
文件 70 2011-12-05 14:31 Qt+OpenCV读取摄像头\camCapture\camcapture.qrc
..A..H. 16896 2011-12-06 19:19 Qt+OpenCV读取摄像头\camCapture\camCapture.suo
文件 62706 2011-12-07 08:35 Qt+OpenCV读取摄像头\camCapture\camcapture.ui
文件 8634 2011-12-06 15:18 Qt+OpenCV读取摄像头\camCapture\camCapture.vcproj
文件 1429 2011-12-05 16:24 Qt+OpenCV读取摄像头\camCapture\camCapture.vcproj.HP98402794308.Administrator.user
文件 1421 2011-12-22 08:47 Qt+OpenCV读取摄像头\camCapture\camCapture.vcproj.lenovo-PC.lenovo.user
文件 494 2011-12-06 16:27 Qt+OpenCV读取摄像头\camCapture\camCapture.vcproj.vspscc
文件 7410 2011-12-21 20:01 Qt+OpenCV读取摄像头\camCapture\Debug\BuildLog.htm
文件 621 2011-12-21 20:01 Qt+OpenCV读取摄像头\camCapture\Debug\camCapture.exe.intermediate.manifest
文件 437956 2011-12-21 19:23 Qt+OpenCV读取摄像头\camCapture\Debug\camcapture.obj
文件 161566 2011-12-21 20:01 Qt+OpenCV读取摄像头\camCapture\Debug\main.obj
文件 163322 2011-12-21 19:23 Qt+OpenCV读取摄像头\camCapture\Debug\moc_camcapture.obj
文件 65 2011-12-21 20:01 Qt+OpenCV读取摄像头\camCapture\Debug\mt.dep
文件 2264064 2011-12-21 20:01 Qt+OpenCV读取摄像头\camCapture\Debug\vc90.idb
文件 2060288 2011-12-21 20:01 Qt+OpenCV读取摄像头\camCapture\Debug\vc90.pdb
文件 2410 2011-12-21 19:23 Qt+OpenCV读取摄像头\camCapture\GeneratedFiles\Debug\moc_camcapture.cpp
文件 43824 2011-12-07 08:35 Qt+OpenCV读取摄像头\camCapture\GeneratedFiles\ui_camcapture.h
文件 213 2011-12-21 20:00 Qt+OpenCV读取摄像头\camCapture\main.cpp
文件 971 2011-12-05 14:31 Qt+OpenCV读取摄像头\camCapture.sln
..A..H. 16384 2011-12-22 08:47 Qt+OpenCV读取摄像头\camCapture.suo
文件 133120 2011-12-21 20:01 Qt+OpenCV读取摄像头\Debug\camCapture.exe
文件 1402880 2011-12-21 20:01 Qt+OpenCV读取摄像头\Debug\camCapture.ilk
文件 2706432 2011-12-21 20:01 Qt+OpenCV读取摄像头\Debug\camCapture.pdb
文件 2086912 2011-10-26 23:19 Qt+OpenCV读取摄像头\Debug\cv210.dll
文件 2201600 2011-10-26 23:16 Qt+OpenCV读取摄像头\Debug\cxcore210.dll
文件 781312 2011-10-26 23:20 Qt+OpenCV读取摄像头\Debug\highgui210.dll
文件 26624 2011-08-23 23:08 Qt+OpenCV读取摄像头\Debug\imageformats\qgif4.dll
............此处省略92个文件信息
- 上一篇:图灵程序设计丛书-Node.js 设计模式
- 下一篇:致远OA A8系统管理员培训
相关资源
- OpenCV3.3最小二乘法直线拟合
- QT4简洁音乐播放器
- OpenCV相机姿态更新
- 可在arm开发板上使用的输入法程序基
- QT帮助文档中文版
- vc opencv 条形码 识别
- Qt商品信息管理系统
- opencv jpeg 编解码
- opencv2.0中的lib和dll,跑别人程序时可
- 颜色直方图匹配算法opencv实现
- QPdfiumDemo
- Qt实现对RFID的操作
- Qt的TcpIp客户端和服务端程序
- opencv控制多摄像头
- QtCharts绘制动态心电图
- 算法作业维诺图,有界面有文档
- 基于opencv的圆心坐标提取
- 基于标识的AR的OpenCV实现
- Opencv2.4.9参考手册
- QT实现图书馆管理系统
- 基于opencv2.4.3、VS2010的背景差分法目标
- Qt5版NeHe OpenGL教程6-10
- QT棋类游戏
- 局域网聊天及其源码-QT
- 车道线检测代码OpenCv以及理论算法说
-
qt_mpla
yer - [嵌入式Linux项目实战开发]基于QT4.7.
- QPainter绘制雷达图玫瑰图
- Qt做的棋盘游戏
- Qt Creator快速入门
评论
共有 条评论