小编Ian*_*ros的帖子

使用顶点缓冲区对象(VBO)渲染Kinect点云

我正在尝试制作动态点云可视化工具.使用Kinect传感器每帧更新点数.为了抓住帧我使用OpenCV和GLUT来显示.对于点xyz位置,OpenCV API返回640 x 480(float*),对于rgb颜色数据,返回640 x 480(int*).为了获得最大性能,我尝试在流模式下使用顶点缓冲区对象而不是简单的顶点阵列.我能够使用Vertex Array渲染它,但是我的VBO实现没有渲染任何东西.我在声明中尝试了一堆不同的命令,但我找不到我所遗漏的东西.有人可以试着指出我正确的方向吗?以下是简化的代码:(我已经重写了Christian Rau提出的错误版本,所以你们可以理解我的错误)

int main()
{
    //Delaring variables, inittiating glut, setting camera and checking the compatibility as http://www.songho.ca/opengl/gl_vbo.html
    glutDisplayFunc(displayCB);
    glutIdleFunc(displayCB); 
    ... 
    //Inittiating the vertex buffers
    if(vboSupported)
    {
        glGenBuffers(1, &vertex_buffer);
        glBindBuffer(GL_ARRAY_BUFFER_ARB, buffer);
        glBufferData(GL_ARRAY_BUFFER_ARB, (sizeof(GLfloat) * 640 * 480 * 3), 0, GL_STREAM_DRAW_ARB);
        glBufferSubData(GL_ARRAY_BUFFER_ARB, 0,  (sizeof(float) * 640 * 480 * 3), point_cloud.points_position); 

        glGenBuffers(2, &color_buffer);
        glBindBuffer(GL_ARRAY_BUFFER_ARB, buffer);
        glBufferData(GL_ARRAY_BUFFER_ARB, (sizeof(GLbyte) * 640 * 480 * 3), 0, GL_STREAM_DRAW_ARB);
        glBufferSubData(GL_ARRAY_BUFFER_ARB, 0,  (sizeof(char) * 640 * 480 * 3), point_cloud.points_color); …
Run Code Online (Sandbox Code Playgroud)

c++ opengl stream vbo kinect

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

最接近某个值的公约数的近似值?

假设我们有两个数字(不一定是整数)x1x2.比如说,用户输入一个数字y.我想要找到的是一个y'接近的数字y,x1 % y'并且x2 % y'非常小(0.02例如,小于,但我们可以调用这个数字LIMIT).换句话说,我不需要最优算法,但需要很好的近似.

我感谢你们所有的时间和精力,非常友好!


让我解释一下我的应用程序中的问题:比如说,给出了一个屏幕尺寸,宽度screenWidth和高度screenHeight(以像素为单位).我用一个长度的正方形填充屏幕y'.比如说,用户想要的是方形大小y.如果y不是screenWidth和/或的除数,screenHeight屏幕两侧将有未使用的空间,不足以适合正方形.如果那个未使用的空间很小(例如一行像素),那就没那么糟糕了,但如果不是这样,它就不会好看.我如何才能找到共同的除数screenWidthscreenHeight

algorithm math geometry

7
推荐指数
1
解决办法
592
查看次数

使用OpenCV块设置Cinder项目

我正在尝试使用新的OpenCV Block和Cinder 0.8.2.我使用TinderBox在我的用户目录中的某个地方设置项目,并且刚刚尝试设置基本的视频捕获例程.我将OpenCv Block作为一个组添加到项目中.

cv::Mat input( toOcv( capture.getSurface() ) )
Run Code Online (Sandbox Code Playgroud)

当我添加此代码时,我收到以下错误

Undefined symbols:
  "cv::fastFree(void*)", referenced from:
      cv::Mat::release()    in ColourDanceApp.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

我把上面的代码分解成了

Surface frame; 
frame = mCap.getSurface(); 
cv::Mat matrix; 
matrix = toOcv( frame ); 
cv::Mat input( matrix );
Run Code Online (Sandbox Code Playgroud)

并发现我收到此错误:

cv::Mat matrix; (and a whole bunch of errors)
Run Code Online (Sandbox Code Playgroud)

自从我完成任何C++以来已经有一段时间了,但我从这里得出结论,它的项目设置问题是它主要来自OpenCV示例的代码.它走得那么远的事实告诉我Cinder路径是好的.没有任何帮助

c++ opencv cinder

5
推荐指数
1
解决办法
2153
查看次数

使用Kinect检测地板上的物体

让我们说我有一个指向地板的kinect.

如果我在地板上放置3或4个物体,我如何确定这些物体所在的平面?

如何检测该地板上颜色鲜艳的物体?

geometry opencv computer-vision kinect openni

5
推荐指数
1
解决办法
4251
查看次数

发射Qt信号时是否有可能抛出异常?

在查看一些代码时,我发现了一段代码:

struct MyFooStructure
{
  //Nothing unusual, just basic types
}

class Foo : public QObject
{
   Q_Object

public:
   void fooMethod(const MyStructure &s);

signals:
   void fooSignal(const MyStructure &);
}

void Foo::fooMethod(const MyStructure &s)
{
   try
   {
      emit fooSignal(s)
   }
   catch(const std::exception &e)
   {
      qDebug() << "An exception!";
   }
}
Run Code Online (Sandbox Code Playgroud)

有没有可能进入这里的渔获?据我所知,没有抛出可能的异常:emit只是一个宏来创建一个表来调用连接到*.moc文件上的那个信号的相应函数.这是尝试抓住真的需要吗?

c++ qt

2
推荐指数
1
解决办法
882
查看次数

标签 统计

c++ ×3

geometry ×2

kinect ×2

opencv ×2

algorithm ×1

cinder ×1

computer-vision ×1

math ×1

opengl ×1

openni ×1

qt ×1

stream ×1

vbo ×1