#include "glwidget.h"
#include <QMutexLocker>
setMinimumSize(320,240);
}
void GLWidget::initializeGL() {
glClearColor(0.0f,0.0f,0.0f,1.0f);
}
void GLWidget::paintGL() {
glClear (GL_COLOR_BUFFER_BIT);
glClearColor (0.0,0.0,0.0,1.0);
if (!qframe.isNull()) {
qframe = qframe.scaled(this->size(), Qt::KeepAspectRatio,Qt::SmoothTransformation);
glDisable(GL_DEPTH_TEST);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0,qframe.width(),qframe.height(),0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glEnable(GL_TEXTURE_2D);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexImage2D( GL_TEXTURE_2D, 0, 4, qframe.width(), qframe.height(), 0, GL_RGBA, GL_UNSIGNED_BYTE, qframe.bits() );
glBegin(GL_QUADS);
glTexCoord2f(0,0); glVertex2f(0,qframe.height());
glTexCoord2f(0,1); glVertex2f(0,0);
glTexCoord2f(1,1); glVertex2f(qframe.width(),0);
glTexCoord2f(1,0); glVertex2f(qframe.width(),qframe.height());
glEnd();
glDisable(GL_TEXTURE_2D);
glFlush();
}
// qDebug() << "Drawing...";
}
void GLWidget::resizeGL(int w, int h) {
glViewport (0, 0, (GLsizei)w, (GLsizei)h);
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
gluPerspective (60, (GLfloat)w / (GLfloat)h, 1.0, 100.0);
glMatrixMode (GL_MODELVIEW);
// qDebug() << "Resizing...";
}
void GLWidget::sendImage(Mat* img) {
cvtColor(*img, *img, CV_GRAY2RGB);
imwrite("ki.png", *img);
qframe
= QImage((const unsigned char*)(img
->data
), img
->cols, img
->rows, img
->step,
QImage::Format_RGB888).
rgbSwapped();
qframe
= QGLWidget::convertToGLFormat(qframe
);
this->updateGL();
}
#include "glwidget.h"
#include <QMutexLocker>
GLWidget::GLWidget() : QGLWidget(QGLFormat(QGL::SampleBuffers)) {
setMinimumSize(320,240);
}
void GLWidget::initializeGL() {
glClearColor(0.0f,0.0f,0.0f,1.0f);
}
void GLWidget::paintGL() {
glClear (GL_COLOR_BUFFER_BIT);
glClearColor (0.0,0.0,0.0,1.0);
if (!qframe.isNull()) {
qframe = qframe.scaled(this->size(), Qt::KeepAspectRatio,Qt::SmoothTransformation);
glDisable(GL_DEPTH_TEST);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0,qframe.width(),qframe.height(),0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glEnable(GL_TEXTURE_2D);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexImage2D( GL_TEXTURE_2D, 0, 4, qframe.width(), qframe.height(), 0, GL_RGBA, GL_UNSIGNED_BYTE, qframe.bits() );
glBegin(GL_QUADS);
glTexCoord2f(0,0); glVertex2f(0,qframe.height());
glTexCoord2f(0,1); glVertex2f(0,0);
glTexCoord2f(1,1); glVertex2f(qframe.width(),0);
glTexCoord2f(1,0); glVertex2f(qframe.width(),qframe.height());
glEnd();
glDisable(GL_TEXTURE_2D);
glFlush();
}
// qDebug() << "Drawing...";
}
void GLWidget::resizeGL(int w, int h) {
glViewport (0, 0, (GLsizei)w, (GLsizei)h);
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
gluPerspective (60, (GLfloat)w / (GLfloat)h, 1.0, 100.0);
glMatrixMode (GL_MODELVIEW);
// qDebug() << "Resizing...";
}
void GLWidget::sendImage(Mat* img) {
QMutexLocker l(&mutex);
cvtColor(*img, *img, CV_GRAY2RGB);
imwrite("ki.png", *img);
qframe = QImage((const unsigned char*)(img->data), img->cols, img->rows, img->step, QImage::Format_RGB888).rgbSwapped();
qframe = QGLWidget::convertToGLFormat(qframe);
this->updateGL();
}
To copy to clipboard, switch view to plain text mode
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
using namespace cv;
MainWindow
::MainWindow(QWidget *parent
) : ui(new Ui::MainWindow)
{
ui->setupUi(this);
layout = new BorderLayout;
leftToolbar->setOrientation(Qt::Vertical);
leftToolbar->addAction("Hello");
rightToolbar->setOrientation(Qt::Vertical);
rightToolbar->addAction("Hello");
rightToolbar->addAction("Heo");
layout->addWidget(leftToolbar, BorderLayout::West);
layout->addWidget(rightToolbar, BorderLayout::East);
rightImage = new BorderLayout();
leftImage = new BorderLayout();
lgl = new GLWidget();
rgl = new GLWidget();
box1->addWidget(lgl);
box2->addWidget(rgl);
leftImage->add(box1, BorderLayout::Center);
rightImage->add(box2, BorderLayout::Center);
lslider
= new QSlider(Qt
::Horizontal);
rslider
= new QSlider(Qt
::Horizontal);
connect(lslider,SIGNAL(valueChanged(int)),this, SLOT(refresh(int)));
leftImage->addWidget(lslider,BorderLayout::South);
rightImage->addWidget(rslider, BorderLayout::South);
centralLayout->addLayout(leftImage);
centralLayout->addLayout(rightImage);
layout->add(centralLayout, BorderLayout::Center);
ui->centralWidget->setLayout(layout);
left.beolvas("airjet.hdr");
lslider->setRange(0,left.numReteg()-1);
/*for(int i = 0; i<59; i++){
qDebug() << sum(left[i]).val[0];
}
imshow("kep",left[20]);*/
}
MainWindow::~MainWindow()
{
delete ui;
delete layout;
delete centralLayout;
delete leftToolbar;
delete rightToolbar;
delete rightImage;
delete leftImage;
delete box1;
delete box2;
delete lgl;
delete rgl;
delete lslider;
delete rslider;
}
void MainWindow::refresh(int n){
if(sender()==lslider){
Mat a = left[n];
lgl->sendImage(&a);
Mat b = left[n];
rgl->sendImage(&b);
}else{
Mat a = right[n];
rgl->sendImage(&a);
}
}
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
using namespace cv;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
layout = new BorderLayout;
leftToolbar = new QToolBar;
leftToolbar->setOrientation(Qt::Vertical);
leftToolbar->addAction("Hello");
rightToolbar = new QToolBar;
rightToolbar->setOrientation(Qt::Vertical);
rightToolbar->addAction("Hello");
rightToolbar->addAction("Heo");
layout->addWidget(leftToolbar, BorderLayout::West);
layout->addWidget(rightToolbar, BorderLayout::East);
centralLayout = new QHBoxLayout();
rightImage = new BorderLayout();
leftImage = new BorderLayout();
lgl = new GLWidget();
rgl = new GLWidget();
box1 = new QHBoxLayout();
box2 = new QHBoxLayout();
box1->addWidget(lgl);
box2->addWidget(rgl);
leftImage->add(box1, BorderLayout::Center);
rightImage->add(box2, BorderLayout::Center);
lslider = new QSlider(Qt::Horizontal);
rslider = new QSlider(Qt::Horizontal);
connect(lslider,SIGNAL(valueChanged(int)),this, SLOT(refresh(int)));
leftImage->addWidget(lslider,BorderLayout::South);
rightImage->addWidget(rslider, BorderLayout::South);
centralLayout->addLayout(leftImage);
centralLayout->addLayout(rightImage);
layout->add(centralLayout, BorderLayout::Center);
ui->centralWidget->setLayout(layout);
left.beolvas("airjet.hdr");
lslider->setRange(0,left.numReteg()-1);
/*for(int i = 0; i<59; i++){
qDebug() << sum(left[i]).val[0];
}
imshow("kep",left[20]);*/
}
MainWindow::~MainWindow()
{
delete ui;
delete layout;
delete centralLayout;
delete leftToolbar;
delete rightToolbar;
delete rightImage;
delete leftImage;
delete box1;
delete box2;
delete lgl;
delete rgl;
delete lslider;
delete rslider;
}
void MainWindow::refresh(int n){
if(sender()==lslider){
Mat a = left[n];
lgl->sendImage(&a);
Mat b = left[n];
rgl->sendImage(&b);
}else{
Mat a = right[n];
rgl->sendImage(&a);
}
}
To copy to clipboard, switch view to plain text mode
Bookmarks