making progress

This commit is contained in:
Jared Bruni
2020-01-23 15:28:26 -08:00
parent 310e6a455b
commit ce54722901
7 changed files with 59 additions and 14 deletions

View File

@@ -12,6 +12,7 @@ public:
bool checkEdit(QLineEdit *edit); bool checkEdit(QLineEdit *edit);
void setEditFromColor(int val, QColor color); void setEditFromColor(int val, QColor color);
void enableKey(bool op); void enableKey(bool op);
void showGL();
public slots: public slots:
void openColorSelectRange(); void openColorSelectRange();
void openColorSelectTolerance(); void openColorSelectTolerance();

View File

@@ -13,17 +13,24 @@ DisplayWindow::DisplayWindow(QWidget *parent) : QDialog(parent) {
setWindowFlags(Qt::Window | Qt::WindowTitleHint | Qt::CustomizeWindowHint | Qt::WindowMinimizeButtonHint | Qt::WindowMaximizeButtonHint); setWindowFlags(Qt::Window | Qt::WindowTitleHint | Qt::CustomizeWindowHint | Qt::WindowMinimizeButtonHint | Qt::WindowMaximizeButtonHint);
setWindowTitle(tr("Acid Cam v2 - Display Window")); setWindowTitle(tr("Acid Cam v2 - Display Window"));
hide(); hide();
gl_display = new glDisplayWindow();
gl_display->setAnimating(true);
} }
void DisplayWindow::showMax() { void DisplayWindow::showMax() {
showFullScreen(); showFullScreen();
} }
void DisplayWindow::showGL() {
gl_display->show();
}
void DisplayWindow::createControls() { void DisplayWindow::createControls() {
img_label = new QLabel(this); img_label = new QLabel(this);
img_label->setGeometry(0,0,640, 480); img_label->setGeometry(0,0,640, 480);
} }
void DisplayWindow::displayImage(const QImage &img) { void DisplayWindow::displayImage(const QImage &img) {
gl_display->setNewFrame(img);
QRect src(QPoint(0, 0), size()); QRect src(QPoint(0, 0), size());
QPixmap p = QPixmap::fromImage(img).scaled(size(),Qt::KeepAspectRatio, Qt::FastTransformation); QPixmap p = QPixmap::fromImage(img).scaled(size(),Qt::KeepAspectRatio, Qt::FastTransformation);
QRect dst(QPoint(0,0),p.size()); QRect dst(QPoint(0,0),p.size());
@@ -32,7 +39,6 @@ void DisplayWindow::displayImage(const QImage &img) {
img_label->setPixmap(p); img_label->setPixmap(p);
} }
void DisplayWindow::paintEvent(QPaintEvent *) { void DisplayWindow::paintEvent(QPaintEvent *) {
QPainter painter(this); QPainter painter(this);
painter.fillRect(QRect(QPoint(0, 0), size()), QColor(0,0,0)); painter.fillRect(QRect(QPoint(0, 0), size()), QColor(0,0,0));

View File

@@ -9,7 +9,7 @@
#define __DISPLAY_WINDOW_H__ #define __DISPLAY_WINDOW_H__
#include"qtheaders.h" #include"qtheaders.h"
#include "gl_display.h"
class DisplayWindow : public QDialog { class DisplayWindow : public QDialog {
Q_OBJECT Q_OBJECT
@@ -21,8 +21,12 @@ public:
void keyPressEvent(QKeyEvent *ke); void keyPressEvent(QKeyEvent *ke);
void keyReleaseEvent(QKeyEvent *ke); void keyReleaseEvent(QKeyEvent *ke);
void showMax(); void showMax();
void showGL();
glDisplayWindow *gl_display;
private: private:
QLabel *img_label; QLabel *img_label;
}; };
#endif #endif

View File

@@ -5,6 +5,9 @@
#include <QtGui/QOpenGLContext> #include <QtGui/QOpenGLContext>
#include <QtGui/QOpenGLPaintDevice> #include <QtGui/QOpenGLPaintDevice>
#include <QtGui/QPainter> #include <QtGui/QPainter>
#include <iostream>
glDisplayWindow::glDisplayWindow(QWindow *parent) glDisplayWindow::glDisplayWindow(QWindow *parent)
: QWindow(parent) : QWindow(parent)
@@ -24,18 +27,44 @@ void glDisplayWindow::render(QPainter *painter) {
} }
void glDisplayWindow::initialize() { void glDisplayWindow::initialize() {
resize(1280, 720); glClearDepth(1.0f);
glClearColor(0, 0, 0, 0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, width(), height(), 0, -1.0, 1.0);
glEnable (GL_DEPTH_TEST);
} }
void glDisplayWindow::setNewFrame(const QImage &new_one) {
frame_copy = new_one;
}
unsigned int texID;
void glDisplayWindow::render() { void glDisplayWindow::render() {
if (!m_device) if (!m_device)
m_device = new QOpenGLPaintDevice; m_device = new QOpenGLPaintDevice;
if(frame_copy.width()>100 && isVisible()) {
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
float aspect=(float)width()/(float)height();
if(width() <= height())
glOrtho ( -5.0, 5.0, -5.0/aspect, 5.0/aspect, -5.0, 5.0);
else
glOrtho (-5.0*aspect, 5.0*aspect, -5.0, 5.0, -5.0, 5.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
if(frame_copy.width() > 25 && frame_copy.height() > 25) {
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glDrawPixels(frame_copy.width(), frame_copy.height(), GL_RGB,GL_UNSIGNED_BYTE,(unsigned char*)frame_copy.bits());
glFlush();
}
}
m_device->setPaintFlipped(true);
m_device->setSize(size() * devicePixelRatio()); m_device->setSize(size() * devicePixelRatio());
m_device->setDevicePixelRatio(devicePixelRatio()); m_device->setDevicePixelRatio(devicePixelRatio());
QPainter painter(m_device); QPainter painter(m_device);
render(&painter); render(&painter);
} }

View File

@@ -1,4 +1,8 @@
#ifndef __GL_DISPLAY___H
#define __GL_DISPLAY___H
#include <QtGui/QWindow> #include <QtGui/QWindow>
#include <QtGui/QOpenGLFunctions> #include <QtGui/QOpenGLFunctions>
@@ -17,11 +21,11 @@ public:
virtual void render(QPainter *painter); virtual void render(QPainter *painter);
virtual void render(); virtual void render();
virtual void initialize(); virtual void initialize();
void setAnimating(bool animating); void setAnimating(bool animating);
void setNewFrame(const QImage &image);
public slots: public slots:
void renderLater(); void renderLater();
void renderNow(); void renderNow();
@@ -33,8 +37,10 @@ protected:
private: private:
bool m_animating; bool m_animating;
QImage frame_copy;
QOpenGLContext *m_context; QOpenGLContext *m_context;
QOpenGLPaintDevice *m_device; QOpenGLPaintDevice *m_device;
}; };
#endif

View File

@@ -150,8 +150,7 @@ AC_MainWindow::AC_MainWindow(QWidget *parent) : QMainWindow(parent) {
define_window = new DefineWindow(this); define_window = new DefineWindow(this);
define_window->hide(); define_window->hide();
define_window->main_window = this; define_window->main_window = this;
gl_display = new glDisplayWindow(); /*
/*
QString arg = "http://lostsidedead.com/ac/version.txt"; QString arg = "http://lostsidedead.com/ac/version.txt";
QUrl url = QUrl::fromEncoded(arg.toLocal8Bit()); QUrl url = QUrl::fromEncoded(arg.toLocal8Bit());
dl.doDownload(url); dl.doDownload(url);
@@ -1304,10 +1303,11 @@ void AC_MainWindow::setFrameIndex(int index) {
frame_index = index; frame_index = index;
} }
void AC_MainWindow::updateFrame(QImage img) { void AC_MainWindow::updateFrame(QImage img) {
if(playback->isStopped() == false) { if(playback->isStopped() == false) {
disp->displayImage(img); disp->displayImage(img);
disp2->displayImage(img); //disp2->displayImage(img);
frame_index++; frame_index++;
QString frame_string; QString frame_string;
QTextStream frame_stream(&frame_string); QTextStream frame_stream(&frame_string);
@@ -1764,5 +1764,5 @@ void AC_MainWindow::prev_filter() {
} }
void AC_MainWindow::showGLDisplay() { void AC_MainWindow::showGLDisplay() {
gl_display->show(); disp->showGL();
} }

View File

@@ -148,7 +148,6 @@ private:
DefineWindow *define_window; DefineWindow *define_window;
ImageWindow *image_window; ImageWindow *image_window;
GotoWindow *goto_window; GotoWindow *goto_window;
glDisplayWindow *gl_display;
OptionsWindow *pref_window; OptionsWindow *pref_window;
cv::VideoCapture capture_camera, capture_video; cv::VideoCapture capture_camera, capture_video;
cv::VideoWriter writer; cv::VideoWriter writer;