fork download
  1. #include "widget.h"
  2. #include "ui_widget.h"
  3. #include <opencv2/opencv.hpp>
  4. #include <cv.h>
  5. #include <QEvent>
  6. #include <QKeyEvent>
  7.  
  8. Widget::Widget(QWidget *parent) :
  9. QWidget(parent),
  10. ui(new Ui::Widget)
  11. {
  12. ui->setupUi(this);
  13. timer = new QTimer(this);
  14. QObject::connect(timer,SIGNAL(timeout()),this,SLOT(readFrameSlot()));
  15. QObject::connect(ui->GrayCamBtn,SIGNAL(clicked()),this,SLOT(GrayCamaraSlot()));
  16. QObject::connect(ui->closeBtn,SIGNAL(clicked()),this,SLOT(closeSlot()));
  17. QObject::connect(ui->photoBtn,SIGNAL(clicked()),this,SLOT(takingPicturesSlot()));
  18. QObject::connect(ui->closeCamBtn,SIGNAL(clicked()),this,SLOT(closeCamaraSlot()));
  19. }
  20.  
  21. Widget::~Widget()
  22. {
  23. delete ui;
  24.  
  25. }
  26.  
  27.  
  28.  
  29.  
  30.  
  31. void Widget::GrayCamaraSlot()
  32. {
  33. //image header
  34. IplImage* image;
  35. CvCapture* capture = 0;
  36.  
  37. capture = cvCaptureFromCAM(0);
  38. cvSetCaptureProperty(
  39. capture,CV_CAP_PROP_FRAME_WIDTH,640);
  40. cvSetCaptureProperty(
  41. capture,CV_CAP_PROP_FRAME_HEIGHT,480);
  42.  
  43. if( capture )
  44. {
  45. //cvNamedWindow( "IMAGE", 1 );
  46. while(1)
  47. {
  48. image = cvQueryFrame( capture );
  49.  
  50.  
  51.  
  52. cvSaveImage("/home/pi/Pictures/2030.jpeg",image,0);
  53.  
  54. qApp->installEventFilter(this);
  55.  
  56.  
  57. cvConvertImage(image,image,CV_CVTIMG_SWAP_RB);
  58. QImage img =QImage((uchar*)image->imageData, image->width, image->height, QImage::Format_RGB888);
  59.  
  60. ui->cameraPic->setPixmap(QPixmap::fromImage(img));
  61.  
  62. cvWaitKey(1000);
  63.  
  64. }
  65.  
  66. cvDestroyWindow( "IMAGE" );
  67. }
  68. cvReleaseCapture( &capture );
  69.  
  70. }
  71.  
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85. bool Widget::eventFilter(QObject *obj, QEvent *event)
  86. {
  87.  
  88. QString str;
  89. QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(event);
  90. QPoint pt = mouseEvent->pos();
  91. IplImage* image;
  92.  
  93.  
  94. image = cvLoadImage("/home/pi/Pictures/2030.jpeg"); //讀取圖檔檔名
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101. if (pt.x()>1 && pt.x()<=640 && pt.y()>1 && pt.y()<=480)
  102. {
  103. s = cvGet2D( image,pt.y(),pt.x());
  104. }
  105.  
  106.  
  107. int red = s.val[2]; //取得紅色
  108. int green = s.val[1]; //取得綠色
  109. int blue = s.val[0]; //取得藍色
  110.  
  111.  
  112. //cvConvertImage(image,image,CV_CVTIMG_SWAP_RB);
  113. //QImage img =QImage((uchar*)image->imageData, image->width, image->height, QImage::Format_RGB888);
  114. //ui->cameraPic->setPixmap(QPixmap::fromImage(img));
  115.  
  116. if (event->type() == QEvent::MouseMove)
  117. {
  118. mouseEvent = static_cast<QMouseEvent*>(event);
  119. str = "MouseMove("+ QString::number(pt.x()) +", " + QString::number(pt.y())+") RGB("+ QString::number(red) +", " + QString::number(green)+", " + QString::number(blue)+")";
  120. setWindowTitle(str); // 顯示座標
  121. }
  122. else if(event->type() == QEvent::MouseButtonDblClick)
  123. {
  124. str = "MouseButtonRelease" + QString::number(pt.x()) +", " + QString::number(pt.y())+")RGB("+QString::number(red)+", "+QString::number(green)+", "+QString::number(blue)+")";
  125. setWindowTitle(str);
  126.  
  127.  
  128.  
  129.  
  130.  
  131. }
  132.  
  133.  
  134. cvReleaseImage(&image);//要釋放記憶體不然會當機
  135.  
  136. return false;
  137.  
  138.  
  139. }
  140.  
  141.  
  142.  
  143. void Widget::closeSlot()
  144. {
  145. this->close();
  146. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
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
stdout
Standard output is empty