• 大小: 8.34MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-11-03
  • 语言: 其他
  • 标签: QT  Opencv  

资源简介

基于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个文件信息

评论

共有 条评论