資源簡介
該工程可實現ubuntu下視頻的采集顯示,并可以控制拍照
所用環境 ubuntu12.04+Qtcreator2.7.1+Qtlib4.8.4+opencv2.4.5
拍照文件保存路徑為/home/administrator/
保存名稱image.bmp
代碼片段和文件信息
#include?“widget.h“
#include?“ui_camaraget.h“
#include?“camaraget.h“
#?include?“rec.h“
camaraGet::camaraGet(QWidget?*parent)?:
????QWidget(parent)
????ui(new?Ui::camaraGet)
{
????ui->setupUi(this);
????cam?????=?NULL;
????timer???=?new?QTimer(this);
????imag????=?new?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()
{
????cam?=?cvCreateCameraCapture(-1);//打開攝像頭,從攝像頭中獲取視頻
????timer->start(33);??????????????//?開始計時,超時則發出timeout()信號
}
/*********************************
*********?讀取攝像頭信息?***********
**********************************/
void?camaraGet::readFarme()
{
????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();
????ui->label->setPixmap(QPixmap::fromImage(image));??//?將圖片顯示到label上
//
}
/*************************
*********?拍照?***********
**************************/
void?camaraGet::takingPictures()
{
????frame1?=?cvCloneImage(frame);//?從攝像頭中抓取并返回每一幀
????frame_temp?=cvCloneImage(frame1);
????//?將抓取到的幀,轉換為QImage格式。QImage::Format_RGB888不同的攝像頭用不同的格式。
????QImage?image?=?QImage((const?uchar*)frame->imageData?frame->width?frame->height?QImage::Format_RGB888).rgbSwapped();
????ui->label_2->setPixmap(QPixmap::fromImage(image));??//?將圖片顯示到label上
????image.save(“/home/administrator/image.bmp“);
}
/*******************************
***關閉攝像頭,釋放資源,必須釋放***
********************************/
void?camaraGet::closeCamara()
{
????timer->stop();?????????//?停止讀取數據。
????cvReleaseCapture(&cam);//釋放內存;
????exit(0);
}
camaraGet::~camaraGet()
{
????delete?ui;
}
評論
共有 條評論