ya imprime bien + se puede seleccionar cada foto por separado y
[photoboothMX.git] / camara.cpp
bloba5d86a5c222b2f1ef3d7fa7b45fe34f9a654c3be
1 #include "camara.h"
2 #include <QVBoxLayout>
3 #include <QLabel>
4 #include <opencv/cv.h>
5 #include <opencv/highgui.h>
6 #include <QMessageBox>
8 camara::camara(QWidget *parent) :
9 QWidget(parent)
11 QVBoxLayout* camlay = new QVBoxLayout;
12 camlabe = new QLabel;
13 errorid = 0;
15 camlabe->setFrameStyle(QFrame::Panel | QFrame::Raised);
16 camlabe->setLineWidth(2);
18 camlabe->setMinimumWidth(640);
19 camlabe->setMinimumHeight(480);
21 camlabe->setMaximumWidth(640);
22 camlabe->setMaximumHeight(480);
24 camlabe->setScaledContents(true);
26 camlabe->adjustSize();
28 this->setAttribute(Qt::WA_DeleteOnClose);
29 this->setAttribute(Qt::WA_QuitOnClose);
31 camlay->addWidget(camlabe);
32 this->setLayout(camlay);
34 //accesando a camara
35 cap.open(0);
37 if(!cap.isOpened()) //pregunta si abrio la camara bien..
39 QMessageBox::critical(this,tr("Problema"),tr("El programa no encuentra la camara"),
40 QMessageBox::Yes|QMessageBox::Default);
41 //que muestre una imagen de error pork no habrio la camara
42 this->setpix(QPixmap(":imas/admira"));
43 errorid = 1;
44 emit error(errorid);
48 void camara::setima(const QImage &imag) //asigna una imagen al label principal
50 mipix = QPixmap::fromImage(imag);
51 camlabe->setPixmap(mipix);
54 void camara::setpix(const QPixmap &privpix) //asigna una imagen tipo QPixmap al label principal
56 mipix = privpix;
57 camlabe->setPixmap(privpix);
60 QPixmap camara::getpix() //obtiene la imagen que esta en label Principal en formato QPixmap
62 return mipix;
65 void camara::guardImagen(const QString &nombre)
67 if (errorid == 0)
70 String ruta("/tmp/");
71 ruta += nombre.toStdString();
72 cap >> fram;
73 imwrite(ruta,fram);
78 void camara::opencam()
80 errorid = 0;
82 if(!cap.isOpened()) //pregunta si abrio la camara bien..
84 QMessageBox::critical(this,tr("Problema"),tr("El programa no encuentra la camara"),
85 QMessageBox::Yes|QMessageBox::Default);
86 //que muestre una imagen de error pork no habrio la camara
87 this->setpix(QPixmap(":imas/admira"));
88 errorid = 1;
89 emit error(errorid);
94 void camara::newQframe() //obtiene una captura de pantalla de la camara y la guarda en QPixmap mipix
96 if (errorid == 0)
98 Mat rgb;
99 cap >> fram;
101 cvtColor(fram, rgb, CV_BGR2RGB);
102 QImage imag((const unsigned char*)(rgb.data), rgb.cols, rgb.rows, QImage::Format_RGB888);
104 //cvtColor(fram, rgb, CV_BGR2GRAY);
105 //QImage imag((const unsigned char*)(rgb.data), rgb.cols, rgb.rows, QImage::Format_Mono);
106 //imag.invertPixels();
107 //imag = imag.convertToFormat(QImage::Format_Mono);
108 //imag = imag.convertToFormat(QImage::Format_MonoLSB);
111 camlabe->setPixmap(QPixmap::fromImage(imag.mirrored(true,false)));
112 mipix = QPixmap::fromImage(imag.mirrored(true,false));
117 void camara::relacam()
119 //cap.release();
120 errorid = 2; //camara liberada
123 int camara::geterror()
125 return errorid;