#include "widget.h"
#include "ui_widget.h"
#include <opencv2/opencv.hpp>
#include <cv.h>
#include <QEvent>
#include <QKeyEvent>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
timer = new QTimer(this);
QObject::connect(timer,SIGNAL(timeout()),this,SLOT(readFrameSlot()));
QObject::connect(ui->GrayCamBtn,SIGNAL(clicked()),this,SLOT(GrayCamaraSlot()));
QObject::connect(ui->closeBtn,SIGNAL(clicked()),this,SLOT(closeSlot()));
QObject::connect(ui->photoBtn,SIGNAL(clicked()),this,SLOT(takingPicturesSlot()));
QObject::connect(ui->closeCamBtn,SIGNAL(clicked()),this,SLOT(closeCamaraSlot()));
}
Widget::~Widget()
{
delete ui;
}
void Widget::GrayCamaraSlot()
{
//image header
IplImage* image;
CvCapture* capture = 0;
capture = cvCaptureFromCAM(0);
cvSetCaptureProperty(
capture,CV_CAP_PROP_FRAME_WIDTH,640);
cvSetCaptureProperty(
capture,CV_CAP_PROP_FRAME_HEIGHT,480);
if( capture )
{
//cvNamedWindow( "IMAGE", 1 );
while(1)
{
image = cvQueryFrame( capture );
cvSaveImage("/home/pi/Pictures/2030.jpeg",image,0);
qApp->installEventFilter(this);
cvConvertImage(image,image,CV_CVTIMG_SWAP_RB);
QImage img =QImage((uchar*)image->imageData, image->width, image->height, QImage::Format_RGB888);
ui->cameraPic->setPixmap(QPixmap::fromImage(img));
cvWaitKey(1000);
}
cvDestroyWindow( "IMAGE" );
}
cvReleaseCapture( &capture );
}
bool Widget::eventFilter(QObject *obj, QEvent *event)
{
QString str;
QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(event);
QPoint pt = mouseEvent->pos();
IplImage* image;
image = cvLoadImage("/home/pi/Pictures/2030.jpeg"); //讀取圖檔檔名
if (pt.x()>1 && pt.x()<=640 && pt.y()>1 && pt.y()<=480)
{
s = cvGet2D( image,pt.y(),pt.x());
}
int red = s.val[2]; //取得紅色
int green = s.val[1]; //取得綠色
int blue = s.val[0]; //取得藍色
//cvConvertImage(image,image,CV_CVTIMG_SWAP_RB);
//QImage img =QImage((uchar*)image->imageData, image->width, image->height, QImage::Format_RGB888);
//ui->cameraPic->setPixmap(QPixmap::fromImage(img));
if (event->type() == QEvent::MouseMove)
{
mouseEvent = static_cast<QMouseEvent*>(event);
str = "MouseMove("+ QString::number(pt.x()) +", " + QString::number(pt.y())+") RGB("+ QString::number(red) +", " + QString::number(green)+", " + QString::number(blue)+")";
setWindowTitle(str); // 顯示座標
}
else if(event->type() == QEvent::MouseButtonDblClick)
{
str = "MouseButtonRelease" + QString::number(pt.x()) +", " + QString::number(pt.y())+")RGB("+QString::number(red)+", "+QString::number(green)+", "+QString::number(blue)+")";
setWindowTitle(str);
}
cvReleaseImage(&image);//要釋放記憶體不然會當機
return false;
}
void Widget::closeSlot()
{
this->close();
}
I2luY2x1ZGUgIndpZGdldC5oIgojaW5jbHVkZSAidWlfd2lkZ2V0LmgiCiNpbmNsdWRlIDxvcGVuY3YyL29wZW5jdi5ocHA+CiNpbmNsdWRlIDxjdi5oPgojaW5jbHVkZSA8UUV2ZW50PgojaW5jbHVkZSA8UUtleUV2ZW50PgoKV2lkZ2V0OjpXaWRnZXQoUVdpZGdldCAqcGFyZW50KSA6CiAgICBRV2lkZ2V0KHBhcmVudCksCiAgICB1aShuZXcgVWk6OldpZGdldCkKewogICAgdWktPnNldHVwVWkodGhpcyk7CiAgICB0aW1lciAgID0gbmV3IFFUaW1lcih0aGlzKTsKICAgIFFPYmplY3Q6OmNvbm5lY3QodGltZXIsU0lHTkFMKHRpbWVvdXQoKSksdGhpcyxTTE9UKHJlYWRGcmFtZVNsb3QoKSkpOwogICAgUU9iamVjdDo6Y29ubmVjdCh1aS0+R3JheUNhbUJ0bixTSUdOQUwoY2xpY2tlZCgpKSx0aGlzLFNMT1QoR3JheUNhbWFyYVNsb3QoKSkpOwogICAgUU9iamVjdDo6Y29ubmVjdCh1aS0+Y2xvc2VCdG4sU0lHTkFMKGNsaWNrZWQoKSksdGhpcyxTTE9UKGNsb3NlU2xvdCgpKSk7CiAgICBRT2JqZWN0Ojpjb25uZWN0KHVpLT5waG90b0J0bixTSUdOQUwoY2xpY2tlZCgpKSx0aGlzLFNMT1QodGFraW5nUGljdHVyZXNTbG90KCkpKTsKICAgIFFPYmplY3Q6OmNvbm5lY3QodWktPmNsb3NlQ2FtQnRuLFNJR05BTChjbGlja2VkKCkpLHRoaXMsU0xPVChjbG9zZUNhbWFyYVNsb3QoKSkpOwp9CgpXaWRnZXQ6On5XaWRnZXQoKQp7CiAgICBkZWxldGUgdWk7Cgp9CgoKCgoKdm9pZCBXaWRnZXQ6OkdyYXlDYW1hcmFTbG90KCkKeyAgICAgCiAgICAgICAgLy9pbWFnZSBoZWFkZXIKICAgICAgICAgICAgSXBsSW1hZ2UqIGltYWdlOwogICAgICAgICAgICBDdkNhcHR1cmUqIGNhcHR1cmUgPSAwOwoKICAgICAgICAgICAgY2FwdHVyZSA9IGN2Q2FwdHVyZUZyb21DQU0oMCk7CiAgICAgICAgICAgIGN2U2V0Q2FwdHVyZVByb3BlcnR5KAogICAgICAgICAgICAgICAgICAgICAgICBjYXB0dXJlLENWX0NBUF9QUk9QX0ZSQU1FX1dJRFRILDY0MCk7CiAgICAgICAgICAgIGN2U2V0Q2FwdHVyZVByb3BlcnR5KAogICAgICAgICAgICAgICAgICAgICAgICBjYXB0dXJlLENWX0NBUF9QUk9QX0ZSQU1FX0hFSUdIVCw0ODApOwoKICAgICAgICAgICAgaWYoIGNhcHR1cmUgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAvL2N2TmFtZWRXaW5kb3coICJJTUFHRSIsIDEgKTsKICAgICAgICAgICAgICAgIHdoaWxlKDEpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaW1hZ2UgPSBjdlF1ZXJ5RnJhbWUoIGNhcHR1cmUgKTsKCiAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgIGN2U2F2ZUltYWdlKCIvaG9tZS9waS9QaWN0dXJlcy8yMDMwLmpwZWciLGltYWdlLDApOwoKICAgICAgICAgICAgICAgICAgIHFBcHAtPmluc3RhbGxFdmVudEZpbHRlcih0aGlzKTsKCiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgY3ZDb252ZXJ0SW1hZ2UoaW1hZ2UsaW1hZ2UsQ1ZfQ1ZUSU1HX1NXQVBfUkIpOwogICAgICAgICAgICAgICAgICAgUUltYWdlIGltZyA9UUltYWdlKCh1Y2hhciopaW1hZ2UtPmltYWdlRGF0YSwgaW1hZ2UtPndpZHRoLCBpbWFnZS0+aGVpZ2h0LCBRSW1hZ2U6OkZvcm1hdF9SR0I4ODgpOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICB1aS0+Y2FtZXJhUGljLT5zZXRQaXhtYXAoUVBpeG1hcDo6ZnJvbUltYWdlKGltZykpOwoKICAgICAgICAgICAgICAgICAgIGN2V2FpdEtleSgxMDAwKTsKCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgY3ZEZXN0cm95V2luZG93KCAiSU1BR0UiICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY3ZSZWxlYXNlQ2FwdHVyZSggJmNhcHR1cmUgKTsKCn0KCgoKCgoKCgoKCgoKCgpib29sIFdpZGdldDo6ZXZlbnRGaWx0ZXIoUU9iamVjdCAqb2JqLCBRRXZlbnQgKmV2ZW50KQp7CiAgICAKICBRU3RyaW5nIHN0cjsKICBRTW91c2VFdmVudCAqbW91c2VFdmVudCA9IHN0YXRpY19jYXN0PFFNb3VzZUV2ZW50Kj4oZXZlbnQpOwogIFFQb2ludCBwdCA9IG1vdXNlRXZlbnQtPnBvcygpOwogIElwbEltYWdlKiBpbWFnZTsKCgogICBpbWFnZSA9IGN2TG9hZEltYWdlKCIvaG9tZS9waS9QaWN0dXJlcy8yMDMwLmpwZWciKTsgLy/oroDlj5blnJbmqpTmqpTlkI0KCgoKCgoKICAgICAgICBpZiAocHQueCgpPjEgJiYgcHQueCgpPD02NDAgJiYgcHQueSgpPjEgJiYgcHQueSgpPD00ODApCiAgICAgICAgewogICAgICAgICAgICBzID0gY3ZHZXQyRCggaW1hZ2UscHQueSgpLHB0LngoKSk7CiAgICAgICAgfQoKCiAgICAgIGludCByZWQgICA9IHMudmFsWzJdOyAgLy/lj5blvpfntIXoibIKICAgICAgaW50IGdyZWVuID0gcy52YWxbMV07ICAvL+WPluW+l+e2oOiJsgogICAgICBpbnQgYmx1ZSAgPSBzLnZhbFswXTsgIC8v5Y+W5b6X6JeN6ImyCgoKICAgICAgLy9jdkNvbnZlcnRJbWFnZShpbWFnZSxpbWFnZSxDVl9DVlRJTUdfU1dBUF9SQik7CiAgICAgIC8vUUltYWdlIGltZyA9UUltYWdlKCh1Y2hhciopaW1hZ2UtPmltYWdlRGF0YSwgaW1hZ2UtPndpZHRoLCBpbWFnZS0+aGVpZ2h0LCBRSW1hZ2U6OkZvcm1hdF9SR0I4ODgpOwogICAgICAvL3VpLT5jYW1lcmFQaWMtPnNldFBpeG1hcChRUGl4bWFwOjpmcm9tSW1hZ2UoaW1nKSk7CgogICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBRRXZlbnQ6Ok1vdXNlTW92ZSkKICAgICAgewogICAgICAgICAgIG1vdXNlRXZlbnQgPSBzdGF0aWNfY2FzdDxRTW91c2VFdmVudCo+KGV2ZW50KTsKICAgICAgICAgICBzdHIgPSAiTW91c2VNb3ZlKCIrIFFTdHJpbmc6Om51bWJlcihwdC54KCkpICsiLCAiICsgUVN0cmluZzo6bnVtYmVyKHB0LnkoKSkrIikgUkdCKCIrIFFTdHJpbmc6Om51bWJlcihyZWQpICsiLCAiICsgUVN0cmluZzo6bnVtYmVyKGdyZWVuKSsiLCAiICsgUVN0cmluZzo6bnVtYmVyKGJsdWUpKyIpIjsKICAgICAgICAgICBzZXRXaW5kb3dUaXRsZShzdHIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDpoa/npLrluqfmqJkKICAgICAgfQogICAgICBlbHNlIGlmKGV2ZW50LT50eXBlKCkgPT0gUUV2ZW50OjpNb3VzZUJ1dHRvbkRibENsaWNrKQogICAgICB7CiAgICAgICAgICAgc3RyID0gIk1vdXNlQnV0dG9uUmVsZWFzZSIgKyBRU3RyaW5nOjpudW1iZXIocHQueCgpKSArIiwgIiArIFFTdHJpbmc6Om51bWJlcihwdC55KCkpKyIpUkdCKCIrUVN0cmluZzo6bnVtYmVyKHJlZCkrIiwgIitRU3RyaW5nOjpudW1iZXIoZ3JlZW4pKyIsICIrUVN0cmluZzo6bnVtYmVyKGJsdWUpKyIpIjsKICAgICAgICAgICBzZXRXaW5kb3dUaXRsZShzdHIpOwogICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgCgoKCiAgICAgIH0KCgogIGN2UmVsZWFzZUltYWdlKCZpbWFnZSk7Ly/opoHph4vmlL7oqJjmhrbpq5TkuI3nhLbmnIPnlbbmqZ8KCiAgcmV0dXJuIGZhbHNlOwoKCn0KCgoKdm9pZCBXaWRnZXQ6OmNsb3NlU2xvdCgpCnsKICAgIHRoaXMtPmNsb3NlKCk7Cn0=
Main.java:1: error: illegal character: '#'
#include "widget.h"
^
Main.java:1: error: class, interface, or enum expected
#include "widget.h"
^
Main.java:2: error: illegal character: '#'
#include "ui_widget.h"
^
Main.java:3: error: illegal character: '#'
#include <opencv2/opencv.hpp>
^
Main.java:4: error: illegal character: '#'
#include <cv.h>
^
Main.java:5: error: illegal character: '#'
#include <QEvent>
^
Main.java:6: error: illegal character: '#'
#include <QKeyEvent>
^
Main.java:13: error: class, interface, or enum expected
timer = new QTimer(this);
^
Main.java:14: error: class, interface, or enum expected
QObject::connect(timer,SIGNAL(timeout()),this,SLOT(readFrameSlot()));
^
Main.java:15: error: class, interface, or enum expected
QObject::connect(ui->GrayCamBtn,SIGNAL(clicked()),this,SLOT(GrayCamaraSlot()));
^
Main.java:16: error: class, interface, or enum expected
QObject::connect(ui->closeBtn,SIGNAL(clicked()),this,SLOT(closeSlot()));
^
Main.java:17: error: class, interface, or enum expected
QObject::connect(ui->photoBtn,SIGNAL(clicked()),this,SLOT(takingPicturesSlot()));
^
Main.java:18: error: class, interface, or enum expected
QObject::connect(ui->closeCamBtn,SIGNAL(clicked()),this,SLOT(closeCamaraSlot()));
^
Main.java:19: error: class, interface, or enum expected
}
^
Main.java:25: error: class, interface, or enum expected
}
^
Main.java:35: error: class, interface, or enum expected
CvCapture* capture = 0;
^
Main.java:37: error: class, interface, or enum expected
capture = cvCaptureFromCAM(0);
^
Main.java:38: error: class, interface, or enum expected
cvSetCaptureProperty(
^
Main.java:40: error: class, interface, or enum expected
cvSetCaptureProperty(
^
Main.java:43: error: class, interface, or enum expected
if( capture )
^
Main.java:52: error: class, interface, or enum expected
cvSaveImage("/home/pi/Pictures/2030.jpeg",image,0);
^
Main.java:54: error: class, interface, or enum expected
qApp->installEventFilter(this);
^
Main.java:57: error: class, interface, or enum expected
cvConvertImage(image,image,CV_CVTIMG_SWAP_RB);
^
Main.java:58: error: class, interface, or enum expected
QImage img =QImage((uchar*)image->imageData, image->width, image->height, QImage::Format_RGB888);
^
Main.java:60: error: class, interface, or enum expected
ui->cameraPic->setPixmap(QPixmap::fromImage(img));
^
Main.java:62: error: class, interface, or enum expected
cvWaitKey(1000);
^
Main.java:64: error: class, interface, or enum expected
}
^
Main.java:67: error: class, interface, or enum expected
}
^
Main.java:70: error: class, interface, or enum expected
}
^
Main.java:89: error: class, interface, or enum expected
QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(event);
^
Main.java:90: error: class, interface, or enum expected
QPoint pt = mouseEvent->pos();
^
Main.java:91: error: class, interface, or enum expected
IplImage* image;
^
Main.java:94: error: class, interface, or enum expected
image = cvLoadImage("/home/pi/Pictures/2030.jpeg"); //??????
^
Main.java:101: error: class, interface, or enum expected
if (pt.x()>1 && pt.x()<=640 && pt.y()>1 && pt.y()<=480)
^
Main.java:104: error: class, interface, or enum expected
}
^
Main.java:108: error: class, interface, or enum expected
int green = s.val[1]; //????
^
Main.java:109: error: class, interface, or enum expected
int blue = s.val[0]; //????
^
Main.java:116: error: class, interface, or enum expected
if (event->type() == QEvent::MouseMove)
^
Main.java:119: error: class, interface, or enum expected
str = "MouseMove("+ QString::number(pt.x()) +", " + QString::number(pt.y())+") RGB("+ QString::number(red) +", " + QString::number(green)+", " + QString::number(blue)+")";
^
Main.java:120: error: class, interface, or enum expected
setWindowTitle(str); // ????
^
Main.java:121: error: class, interface, or enum expected
}
^
Main.java:125: error: class, interface, or enum expected
setWindowTitle(str);
^
Main.java:131: error: class, interface, or enum expected
}
^
Main.java:136: error: class, interface, or enum expected
return false;
^
Main.java:139: error: class, interface, or enum expected
}
^
Main.java:146: error: class, interface, or enum expected
}
^
46 errors