小编dal*_*tar的帖子

OpenCV + OpenGL + Qt

我正在设计自己的增强现实应用程序.我已经检测到我正在使用的模式的4个角.在以正确的顺序检测到4个角后,我将它们传递给cvFindExtrinsicCameraParams2.对于相机框架的旋转和平移,我得到了很好的结果.现在我必须把这些信息(旋转矢量和翻译矢量)放到OpenGL中来绘制一些东西.当然,我正在使用cvRodrigues2从旋转矢量中获取旋转矩阵.除此之外,我用这种方式用QGlWidget观看相机:

GLWidget.h

#ifndef _GLWIDGET_H
#define _GLWIDGET_H

#include <QtOpenGL/QGLWidget>
#include <cv.h>
#include <cxcore.h>

class GLWidget : public QGLWidget {

    Q_OBJECT // must include this if you use Qt signals/slots

public:
    GLWidget(QWidget *parent = NULL);
    IplImage *img;
    void setImage(IplImage *imagen);
protected:
    void initializeGL();
    void resizeGL(int w, int h);
    void paintGL();
};

#endif  /* _GLWIDGET_H */
Run Code Online (Sandbox Code Playgroud)

GLWidget.cpp

#include <QtGui/QMouseEvent>
#include "GLWidget.h"

GLWidget::GLWidget(QWidget *parent) : QGLWidget(parent) {
    this->img = 0;
}

void GLWidget::initializeGL() {
    glDisable(GL_TEXTURE_2D);
    glDisable(GL_DEPTH_TEST);
    glDisable(GL_COLOR_MATERIAL);
    glEnable(GL_BLEND);
    glEnable(GL_POLYGON_SMOOTH);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    glClearColor(0, 0, 0, …
Run Code Online (Sandbox Code Playgroud)

opengl qt opencv augmented-reality qglwidget

8
推荐指数
1
解决办法
4275
查看次数

QFileDialog :: DontUseNativeDialog不起作用

我有一个简单程序的问题.我这样打开一个QFileDialog:

QFileDialog fileDialog(this);
fileDialog.setAcceptMode(QFileDialog::AcceptOpen);
if (!fileDialog.exec())
return;
Run Code Online (Sandbox Code Playgroud)

但它显示的是Qt对话框,而不是本机Windows对话框.我使用的是Windows 7 x64,我确实更喜欢原生对话而不是Qt对话,因为它更加花哨.但是我读过,我发现可以通过以下方式更改:

fileDialog.setOption(QFileDialog::DontUseNativeDialog, false);
Run Code Online (Sandbox Code Playgroud)

事实是,我没有获得本机Windows对话框,而是Qt,因此该选项无效......任何人都知道如何在不使用静态成员的情况下解决此问题?

我真的不想使用静态成员,因为它们有一种内存泄漏问题或者某些东西,因为如果你用静态成员重复打开新对话框,程序使用的内存会增加和增加,但是,使用之前存储的对话框用指针没有这个问题.

所以,如果有人对这两件事都有答案(原生对话和内存泄漏问题),请告诉我.

谢谢.

qt qfiledialog

8
推荐指数
1
解决办法
5902
查看次数

OpenGL 透明度/半透明

我对 openGL 中的 alpha 混合有疑问...

我已经尝试了一些绘制透明对象的东西......通过在绘制透明面之前禁用 GL_DEPTH_TEST 并在绘制透明面后再次重新启用 GL_DEPTH_TEST ,我看到了一个不错的(理想的)结果......

显然我已经注意到,根据我绘制不同面孔的顺序,我得到了一个结果或另一个......

但是我决定首先在启用 GL_DEPTH_TEST 的情况下绘制实体面,然后在禁用 GL_DEPTH_TEST 的透明面之后...

所以,很明显,如果我在禁用 GL_DEPTH_TEST 的情况下绘制透明面,我会看到内部的透明面(例如立方体),然后

所以,我的问题是......这是正确的吗?OpenGL 是否有一种“神奇”的方式来自动排序不透明和透明的面?

opengl alphablending

4
推荐指数
1
解决办法
698
查看次数