5 #include <opencv/highgui.h>
11 camara::camara(QWidget
*parent
) :
14 QVBoxLayout
* camlay
= new QVBoxLayout
;
19 camlabe
->setFrameStyle(QFrame::Panel
| QFrame::Raised
);
20 camlabe
->setLineWidth(2);
22 camlabe
->setMinimumWidth(640);
23 camlabe
->setMinimumHeight(480);
25 camlabe
->setMaximumWidth(640);
26 camlabe
->setMaximumHeight(480);
28 camlabe
->setScaledContents(true);
30 camlabe
->adjustSize();
32 this->setAttribute(Qt::WA_DeleteOnClose
);
33 this->setAttribute(Qt::WA_QuitOnClose
);
35 camlay
->addWidget(camlabe
);
36 this->setLayout(camlay
);
41 if(!cap
.isOpened()) //pregunta si abrio la camara bien..
43 QMessageBox::critical(this,tr("Problema"),tr("El programa no encuentra la camara"),
44 QMessageBox::Yes
|QMessageBox::Default
);
45 //que muestre una imagen de error pork no habrio la camara
46 this->setpix(QPixmap(":imas/admira"));
52 void camara::setima(const QImage
&imag
) //asigna una imagen al label principal
54 mipix
= QPixmap::fromImage(imag
);
55 camlabe
->setPixmap(mipix
);
58 void camara::setpix(const QPixmap
&privpix
) //asigna una imagen tipo QPixmap al label principal
61 camlabe
->setPixmap(privpix
);
64 QPixmap
camara::getpix() //obtiene la imagen que esta en label Principal en formato QPixmap
69 void camara::guardImagen(const QString
&nombre
)
74 ruta
+= nombre
.toStdString();
76 imwrite(ruta
,fram
); // tengo que aprender a guardar la QPixmap !!!
82 void camara::opencam()
86 if(!cap
.isOpened()) //pregunta si abrio la camara bien..
88 QMessageBox::critical(this,tr("Problema"),tr("El programa no encuentra la camara"),
89 QMessageBox::Yes
|QMessageBox::Default
);
90 //que muestre una imagen de error pork no habrio la camara
91 this->setpix(QPixmap(":imas/admira"));
98 void camara::newQframe() //obtiene una captura de pantalla de la camara y la guarda en QPixmap mipix
105 cvtColor(fram
, rgb
, CV_BGR2RGB
);
106 QImage
imag((const unsigned char*)(rgb
.data
), rgb
.cols
, rgb
.rows
, QImage::Format_RGB888
);
108 //cvtColor(fram, rgb, CV_BGR2GRAY);
109 //QImage imag((const unsigned char*)(rgb.data), rgb.cols, rgb.rows, QImage::Format_Mono);
110 //imag.invertPixels();
111 //imag = imag.convertToFormat(QImage::Format_Mono);
112 //imag = imag.convertToFormat(QImage::Format_MonoLSB);
114 camlabe
->setPixmap(QPixmap::fromImage(imag
.mirrored(true,false)));
115 mipix
= QPixmap::fromImage(imag
.mirrored(true,false));
120 void camara::newQBWframe()
126 cvtColor(fram
, rgb
, CV_BGR2RGB
);
128 QImage
imag((const unsigned char*)(rgb
.data
), rgb
.cols
, rgb
.rows
, QImage::Format_RGB888
);
132 int width
= imag
.width();
133 int height
= imag
.height();
134 for (int i
= 0; i
< width
; ++i
)
136 for (int j
= 0; j
< height
; ++j
)
138 col
= imag
.pixel(i
, j
);
140 imag
.setPixel(i
, j
, qRgb(gray
, gray
, gray
));
144 //imag.invertPixels();
145 camlabe
->setPixmap(QPixmap::fromImage(imag
.mirrored(true,false)));
146 mipix
= QPixmap::fromImage(imag
.mirrored(true,false));
150 void camara::newQINframe()
156 cvtColor(fram
, rgb
, CV_BGR2RGB
);
158 QImage
imag((const unsigned char*)(rgb
.data
), rgb
.cols
, rgb
.rows
, QImage::Format_RGB888
);
161 camlabe
->setPixmap(QPixmap::fromImage(imag
.mirrored(true,false)));
162 mipix
= QPixmap::fromImage(imag
.mirrored(true,false));
167 void camara::newQEXTframe()
173 cvtColor(fram
, rgb
, CV_BGR2RGB
);
175 QImage
imag((const unsigned char*)(rgb
.data
), rgb
.cols
, rgb
.rows
, QImage::Format_RGB888
);
176 QImage
fond(":fondos/fondo"+ QString::number(fondid
));
177 //QImage fond(":fondos/fondo0");
179 int newpixR
,newpixG
,newpixB
;
180 int width
= imag
.width();
181 int height
= imag
.height();
182 //qDebug() << width << " " << height; (320 240)
183 for (int i
= 0; i
< width
; ++i
)
185 for (int j
= 0; j
< height
; ++j
)
187 col
= imag
.pixel(i
, j
);
189 newpixG
= qGreen(col
);
190 newpixB
= qBlue(col
);
192 if (((newpixR
>=42) && (newpixR
<=75) ) && (newpixG
>50) && (newpixB
>=25 && newpixB
<=65)) //aqui pregunta si el rojo y azul estan en niveles bajos
193 imag
.setPixel(i
, j
, fond
.pixel(i
,j
)); //aqui debe poner el fondo.pixel(i,j) donde fondo es la imagen con la misma resolucion que la camara
197 camlabe
->setPixmap(QPixmap::fromImage(imag
.mirrored(true,false)));
198 mipix
= QPixmap::fromImage(imag
.mirrored(true,false));
202 void camara::newQEP1frame()
208 cvtColor(fram
, rgb
, CV_BGR2RGB
);
210 QImage
imag((const unsigned char*)(rgb
.data
), rgb
.cols
, rgb
.rows
, QImage::Format_RGB888
);
213 int newpixR
,newpixG
,newpixB
;
214 int width
= imag
.width();
215 int height
= imag
.height();
216 for (int i
= 0; i
< width
; ++i
)
218 for (int j
= 0; j
< height
; ++j
)
220 col
= imag
.pixel(i
, j
);
222 newpixG
= qGreen(col
);
223 newpixB
= qBlue(col
);
225 if ((newpixR
>= 60) && (newpixR
<= 150) && (newpixG
<= 40) && (newpixG
>= 30) &&
226 (newpixB
>= 30) && (newpixB
<= 45)) //aqui pregunta si el rojo y azul estan en niveles bajos
227 imag
.setPixel(i
, j
, qRgb(newpixR
, newpixG
*2, newpixB
));
231 //imag.invertPixels();
232 camlabe
->setPixmap(QPixmap::fromImage(imag
.mirrored(true,false)));
233 mipix
= QPixmap::fromImage(imag
.mirrored(true,false));
237 void camara::relacam()
240 errorid
= 2; //camara liberada
243 int camara::geterror()
248 void camara::setFondidd(const int &idd
)