资源简介
使用qt最为主线程的显示框架,在子线程中使用opencv进行图像采集和图像的保存
代码片段和文件信息
#include “camaraget.h“
#include “ui_camaraGet.h“
camaraGet::camaraGet(QWidget *parent) :
QWidget(parent)
ui(new Ui::camaraGet)
{
ui->setupUi(this);
op=0;
ui->label->setScaledContents(true);
ui->label_2->setScaledContents(true);
camthread=new Camthread();
/*信号和槽*/
connect(camthreadSIGNAL(sig_GetOneframe(QImage))thisSLOT(readFarme(QImage )));
//connect(timer SIGNAL(timeout()) this SLOT(readFarme())); // 时间到,读取当前摄像头信息
connect(ui->open SIGNAL(clicked()) this SLOT(openCamara()));
connect(ui->pic SIGNAL(clicked()) this SLOT(takingPictures()));
connect(ui->closeCam SIGNAL(clicked()) this SLOT(closeCamara()));
}
/******************************
********* 打开摄像头 ***********
*******************************/
void camaraGet::openCamara()
{
if(op==1)
{
return ;
}
/*cam = cvCreateCameraCapture(0);//打开摄像头,从摄像头中获取视频
if(!cam)
{
QMessageBox::warning(this“Warning““Cameras are not found.“);
}
timer->start(33); // 开始计时,超时则发出timeout()信号
*/
camthread->startPlay();
op=1;
}
/*********************************
********* 读取摄像头信息 ***********
**********************************/
void camaraGet::readFarme(QImage img)
{
image=img;
/* frame = cvQueryframe(cam);// 从摄像头中抓取并返回每一帧
// 将抓取到的帧,转换为QImage格式。QImage::Format_RGB888不同的摄像头用不同的格式。
// QImage image((const uchar*)frame->imageData frame->width frame->height QImage::Format_RGB888);
QImage image = QImage((const uchar*)frame->imageData frame->width frame->height QImage::Format_RGB888).rgbSwapped();
*/
if(op==1)
{
ui->label->setPixmap(QPixmap::fromImage(image)); // 将图片显示到label上
}
}
/*************************
********* 拍照 ***********
**************************/
void camaraGet::takingPictures()
{
//frame = cvQueryframe(cam);// 从摄像头中抓取并返回每一帧
// 将抓取到的帧,转换为QImage格式。QImage::Format_RGB888不同的摄像头用不同的格式。
//QImage image((const uchar*)frame->imageData frame->width frame->height QImage::Format_RGB888);
//QImage image = QImage((const uchar*)frame->imageData frame->width frame->height QImage::Format_RGB888).rgbSwapped();
op=0;
QString filename = QFileDialog::getSaveFileName(thistr(“action“)
“/“
“Image file(*.bmp *.jpg)“0) ;
if (!filename.isEmpty())
// qDebug()< // cvSaveImage(“100.bmp“capframe);
if(!image.save(filename))
QMessageBox::information(this
tr(“Warnning“)
tr(“Failed to save the image!“));
op=1;
// QImage image=QImage(filename);
// frame=cvLoadImage((filename.toLatin1()).data());
//ui->CameraLabel->setPixmap(QPixmap::fromImage(image));
ui->label_2->setPixmap(QPixmap::fromImage(image)); // 将图片显示到label上
}
/*******************************
***关闭摄像头,释放资源,必须释放***
********************************/
void camaraGet::closeCamara()
{
t
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 731 2017-05-07 19:35 paizhao\camaraget.h
文件 8212 2017-05-07 19:36 paizhao\moc_camaraget.o
文件 791 2017-05-07 20:19 paizhao\camthread.h
文件 1784 2017-05-07 20:21 paizhao\camthread.cpp
文件 3391 2017-05-07 20:57 paizhao\camaraget.cpp
文件 3792906 2017-05-07 20:23 paizhao\Video from CAMERA.avi
文件 3073 2017-05-07 19:36 paizhao\moc_camaraget.cpp
文件 10196 2017-05-07 20:57 paizhao\camaraget.o
文件 36584 2017-05-07 20:57 paizhao\paizhao
文件 3149 2017-05-07 20:21 paizhao\moc_camthread.cpp
文件 5052 2017-05-07 20:21 paizhao\moc_camthread.o
文件 355 2017-05-07 17:16 paizhao\paizhao.pro
文件 1803 2016-04-27 11:25 paizhao\camaraGet.ui
文件 8805 2017-05-07 19:17 paizhao\Makefile
文件 180 2016-04-27 11:19 paizhao\main.cpp
文件 27221 2017-05-07 21:01 paizhao\paizhao.pro.user
文件 2088 2017-05-07 19:35 paizhao\main.o
文件 4324 2017-05-07 20:21 paizhao\camthread.o
文件 2744 2016-04-27 11:25 paizhao\ui_camaraGet.h
目录 0 2017-05-07 21:01 paizhao
----------- --------- ---------- ----- ----
3913389 20
评论
共有 条评论