Академический Документы
Профессиональный Документы
Культура Документы
h
#ifndef CAMERA_H
#define CAMERA_H
#include <QCamera>
#include <QCameraImageCapture>
#include <QMainWindow>
QT_BEGIN_NAMESPACE
namespace Ui { class Camera; }
QT_END_NAMESPACE
class Camera : public QMainWindow
{
Q_OBJECT
public:
Camera(QWidget *parent = 0);
~Camera();
private slots:
void setCamera(const QCameraInfo &cameraInfo);
void startCamera();
void stopCamera();
void takeImage();
void updateCameraDevice(QAction *action);
void updateCameraState(QCamera::State);
void updateCaptureMode();
void displayViewfinder();
void displayCapturedImage();
void readyForCapture(bool ready);
void imageSaved(int id, const QString &fileName);
private:
Ui::Camera *ui;
QCamera *camera;
QCameraImageCapture *imageCapture;
bool isCapturingImage;
bool applicationExiting;
};
#endif
Camera.cpp
#include "camera.h"
#include "ui_camera.h"
#include
#include
#include
#include
<QCameraViewfinder>
<QCameraInfo>
<QMediaMetaData>
<QtWidgets>
Q_DECLARE_METATYPE(QCameraInfo)
Camera::Camera(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::Camera),
camera(0),
imageCapture(0),
isCapturingImage(false),
applicationExiting(false)
{
ui->setupUi(this);
//Camera devices:
setCamera(QCameraInfo::defaultCamera());
}
Camera::~Camera()
{
delete imageCapture;
delete camera;
}
void Camera::setCamera(const QCameraInfo &cameraInfo)
{
delete imageCapture;
delete camera;
camera = new QCamera(cameraInfo);
connect(camera, SIGNAL(stateChanged(QCamera::State)), this,
SLOT(updateCameraState(QCamera::State)));
imageCapture = new QCameraImageCapture(camera);
camera->setViewfinder(ui->viewfinder);
updateCameraState(camera->state());
connect(imageCapture, SIGNAL(readyForCaptureChanged(bool)), this,
SLOT(readyForCapture(bool)));
connect(imageCapture, SIGNAL(imageSaved(int,QString)), this,
SLOT(imageSaved(int,QString)));
updateCaptureMode();
camera->start();
void Camera::takeImage()
{
isCapturingImage = true;
imageCapture->capture();
}
void Camera::startCamera()
{
camera->start();
}
void Camera::stopCamera()
{
camera->stop();
}
void Camera::updateCaptureMode()
{
QCamera::CaptureModes captureMode = 0 ? QCamera::CaptureStillImage
: QCamera::CaptureVideo;
if (camera->isCaptureModeSupported(captureMode))
camera->setCaptureMode(captureMode);
MAIN.CPP
#include "camera.h"
#include <QtWidgets>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Camera camera;
camera.show();
return app.exec();
};