win10+qt+vs2013实现连续拍照功能并存储到文件夹中

(1)vs下新建一个qt工程,打开ui文件

win10+qt+vs2013实现连续拍照功能并存储到文件夹中_第1张图片

(2)布局ui文件,改变名称,对象名称,保存(只用一个PushButton)

win10+qt+vs2013实现连续拍照功能并存储到文件夹中_第2张图片

(3)工程目录下新建一个文件夹取名Image

win10+qt+vs2013实现连续拍照功能并存储到文件夹中_第3张图片

(4)Takephoto.h中代码为

#ifndef TAKEPHOTO_H
#define TAKEPHOTO_H

#include 
#include "ui_takephoto.h"

#include

using namespace cv;

class takephoto : public QMainWindow
{
	Q_OBJECT

public:
	takephoto(QWidget *parent = 0);
	~takephoto();

private:
	Ui::takephotoClass ui;
	VideoCapture cap;
	Mat frame;

private slots:
	void TakePhotoSlot();
};

#endif // TAKEPHOTO_H

win10+qt+vs2013实现连续拍照功能并存储到文件夹中_第4张图片

(5)Takephoto.cpp中代码为

#include "takephoto.h"

takephoto::takephoto(QWidget *parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);
	connect(ui.TakePhotoButton,SIGNAL(clicked()),this,SLOT(TakePhotoSlot()));//clicked与TakePhotoSlot后面的括号不能忘了
}

takephoto::~takephoto()
{

}

void takephoto::TakePhotoSlot()
{
	cap.open(0);//打开摄像头
	int i = 1;
	while (i != 11)//拍摄10张照片
	{

		cap >> frame;
		imshow("frame", frame);
		string filename = format("Image\\%d.jpg", i);

		char key = waitKey(10);//值越大视频越卡,为0出错
		switch (key)
		{
		case 'p'://按键盘上的'p'拍摄
			i++;
			imwrite(filename, frame);
			imshow("takephoto", frame);
			waitKey(1000);
			destroyWindow("takephoto");
			break;
		default:
			break;
		}
	}
}

win10+qt+vs2013实现连续拍照功能并存储到文件夹中_第5张图片

(6)F5运行,按下拍照按钮,打开摄像头

win10+qt+vs2013实现连续拍照功能并存储到文件夹中_第6张图片

(7)按下10次Image文件中拍摄完10张图片win10+qt+vs2013实现连续拍照功能并存储到文件夹中_第7张图片


你可能感兴趣的:(qt5)