电脑摄像头拍照
2014-03-11 22:16
106 查看
一个简陋的摄像头拍照工具,能将拍到的照片保存为.png文件。
使用Qt+openCV实现。
http://download.csdn.net/detail/thatmaybefun/7025779
使用Qt+openCV实现。
#include "qtusecamera.h" #include<opencv/cv.h> #include<opencv/highgui.h> #include<windows.h> QtUseCamera::QtUseCamera(QWidget *parent, Qt::WFlags flags) : QWidget(parent, flags) { preReadLabel = new QLabel; photoLabel =new QLabel; openBut = new QPushButton("打开"); takeBut = new QPushButton("拍照"); closeBut=new QPushButton("关闭"); saveBut=new QPushButton("保存"); labelLayout=new QHBoxLayout; butLayout=new QHBoxLayout; mainLayout=new QVBoxLayout; labelLayout->addWidget(preReadLabel); labelLayout->addWidget(photoLabel); butLayout->addWidget(openBut); butLayout->addWidget(takeBut); butLayout->addStretch(); butLayout->addWidget(saveBut); butLayout->addWidget(closeBut); butLayout->setContentsMargins(10,5,10,5); mainLayout->addLayout(labelLayout); mainLayout->addLayout(butLayout); mainLayout->setSpacing(1); mainLayout->setContentsMargins(0,0,0,0); setLayout(mainLayout); timer=new QTimer; connect(openBut,SIGNAL(clicked()),this,SLOT(openCamera())); connect(takeBut,SIGNAL(clicked()),this,SLOT(takingPictures())); connect(closeBut,SIGNAL(clicked()),this,SLOT(closeCamera())); connect(timer,SIGNAL(timeout()),this,SLOT(readFrame())); connect(saveBut,SIGNAL(clicked()),this,SLOT(savePic())); cam=NULL; resize(200,200); setWindowTitle("摄像头拍照"); } QtUseCamera::~QtUseCamera() { cvReleaseCapture(&cam); } void QtUseCamera::openCamera(){ cam = cvCreateCameraCapture(0); Sleep(1000); timer->start(30); } void QtUseCamera::readFrame(){ if(!cam) return ; frame = cvQueryFrame(cam); QImage image = QImage((const uchar*)frame->imageData, frame->width, frame->height, QImage::Format_RGB888).rgbSwapped(); preReadLabel->setPixmap(QPixmap::fromImage(image)); } void QtUseCamera::closeCamera(){ timer->stop(); cvReleaseCapture(&cam); preReadLabel->setPixmap(QPixmap()); photoLabel->setPixmap(QPixmap()); takePic=QImage(); resize(200,200); } void QtUseCamera::takingPictures(){ if(!cam) return ; frame = cvQueryFrame(cam); takePic = QImage((const uchar*)frame->imageData, frame->width, frame->height, QImage::Format_RGB888).rgbSwapped(); photoLabel->setPixmap(QPixmap::fromImage(takePic)); } void QtUseCamera::savePic(){ if(takePic.isNull()) return ; QString fileName=QFileDialog::getSaveFileName(this,"保存照片",QString(),"png file(*.png)"); if(fileName.isEmpty()) return ; takePic.save(fileName,"png",100); }
http://download.csdn.net/detail/thatmaybefun/7025779
相关文章推荐
- 迅雷2014校招:求集合之差
- ubuntu 12.04 server《一》 apache+php+mysql 菜鸟配置笔记(合成,整理,实操版)
- C#系列之String和StringBuilder
- Hdu 1087 Super Jumping! Jumping! Jumping! (DP)
- CodeIgniter框架入门教程——第三课 URL及ajax
- virtualenv、pip备忘
- 周易正易 p199-299
- 挨踢之路之学习流程篇(十)
- SD卡升级——SDIO_IAP实验
- Android回调机制
- Bootstrap 分页插件的使用
- 心得 指针
- 父母在苏州打工住的环境那么差,阴暗、脏。我吃点苦怕什么。
- 快速排序
- 文件的读写
- 学籍管理系统
- Xcode 5.1发布说明以及iOS 7.1发布
- mongodb基本使用2
- 出现( linker command failed with exit code 1)错误总结
- VLC视频播放器开发--VLC for Android编译