我正在尝试制作动态点云可视化工具.使用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) 假设我们有两个数字(不一定是整数)x1和x2.比如说,用户输入一个数字y.我想要找到的是一个y'接近的数字y,x1 % y'并且x2 % y'非常小(0.02例如,小于,但我们可以调用这个数字LIMIT).换句话说,我不需要最优算法,但需要很好的近似.
我感谢你们所有的时间和精力,非常友好!
让我解释一下我的应用程序中的问题:比如说,给出了一个屏幕尺寸,宽度screenWidth和高度screenHeight(以像素为单位).我用一个长度的正方形填充屏幕y'.比如说,用户想要的是方形大小y.如果y不是screenWidth和/或的除数,screenHeight屏幕两侧将有未使用的空间,不足以适合正方形.如果那个未使用的空间很小(例如一行像素),那就没那么糟糕了,但如果不是这样,它就不会好看.我如何才能找到共同的除数screenWidth和screenHeight?
我正在尝试使用新的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路径是好的.没有任何帮助
让我们说我有一个指向地板的kinect.
如果我在地板上放置3或4个物体,我如何确定这些物体所在的平面?
如何检测该地板上颜色鲜艳的物体?
在查看一些代码时,我发现了一段代码:
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文件上的那个信号的相应函数.这是尝试抓住真的需要吗?