资源简介
基于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系统管理员培训
相关资源
- 酒店管理系统基于Qt Creator5)
- vtk QT做的三维地质可视化系统2of2
- Qt局域网聊天软件
- Qt Creator opengl实现四元数鼠标控制轨迹
- QT局域网聊天系统(基于QT5.修改过)
- qt-电子点菜系统
- C 餐厅叫号系统(QT平)
- QT 实现文件下载
- qt图像处理
- 基于OpenCV的数字识别468815
- 使用opencv去掉二值化图像中黑色面积
- QT,JPEG解码源代码(已完成)
- Qt 播放音频文件
- Qt 读取16进制的data文件
- opencv环境配置
- MQTT+串口(usart)透传
- 易语言QQTEA算法源码
- VC工程转Qt工程文件的工具
- win10 64位下编译的opencv4.5.5库,opencv
- MQTT推送Demo
- 基于Linux、QT的视频监控系统的设计与
- Qt 百度地图 定位
- QT酷炫界面开发指南《QmlBook》
- Ubuntu下操作Excel,qt代码
- Qt图片浏览器 --基于Qt的Graphics View f
- qtnribbon2破解
- Qt软件开发 完整项目代码
- MQTT_3.1protocol_Specific中文版
- 在QT中使用RTP进行视频的采集和传输
- NVIDIAOpticalFlowSDK-79c6cee80a2df9a196f20afd6
评论
共有 条评论