小编Apa*_*ram的帖子

Kinect 红外视图是否与 Kinect 深度视图有偏移

我正在使用红外视图和深度视图进行 Kinect 项目。在红外视图中,使用 CVBlob 库,我能够提取一些二维兴趣点。我想找到这些二维点的深度。所以我想我可以直接使用深度视图,像这样:

coordinates3D[0] = coordinates2D[0];
coordinates3D[1] = coordinates2D[1];
coordinates3D[2] = (USHORT*)(LockedRect.pBits)
[(int)coordinates2D[1] * Width + (int)coordinates2D[0]] >> 3;
Run Code Online (Sandbox Code Playgroud)

我认为这不是获得深度的正确公式。我能够在深度视图中可视化感兴趣的 2D 点。如果我在红外视图中得到一个点 (x, y),然后我将它绘制为深度视图中 (x, y) 处的一个红点,
我注意到红点不在我期望的位置(在一个物体上) )。他们的位置存在系统性错误。

我认为深度视图和红外视图具有一一对应的关系,这与彩色视图和深度视图之间的对应关系不同。
这确实是真的还是 IR 和深度视图之间存在偏移?如果有偏移,我能以某种方式获得正确的深度值吗?

opencv kinect

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

当Mat的类型为CV_32S时,OpenCV MedianBlur函数崩溃

我正在努力将拜耳模式去马赛克到RGB图像,而不使用OpenCV的直接转换功能.我使用了Bilinear插值并使其工作,但我想通过使用Freeman方法来提高质量.此方法需要中值过滤器.OpenCV具有medianBlur功能,可以做到这一点.但是我在使用这个功能时遇到了麻烦.当我应用medianBlur的cv :: Mat是CV_8UC1类型然后它工作,但如果它是CV_32S类型,那么它不起作用.但这工作:

    redGreenMedian.create(input.size(), CV_32S);
    blueGreenMedian.create(input.size(), CV_32S);
    blueMinusGreen.create(input.size(), CV_32S);
    redMinusGreen.create(input.size(), CV_32S);
    for(int i = 1; i <= 3; i += 2)
    {
            cv::medianBlur(redMinusGreen, redGreenMedian, i);
            cv::medianBlur(blueMinusGreen, blueGreenMedian, i);
    }
Run Code Online (Sandbox Code Playgroud)

如果我将所有CV_32S更改为CV_8UC1,那么它可以工作.在调试时,我发现它在第二次迭代中崩溃,而不是在第一次迭代中崩溃.但是,我需要它来运行两次迭代.但这不是太分开写时工作:

    cv::medianBlur(redMinusGreen, redGreenMedian, 3);
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我不必使用CV_32S,但我需要能够在矩阵中存储负数.
注意:我已经尝试使矩阵中的所有数字都为正,然后使用medianBlur,但它仍然无效.
所有帮助表示赞赏.提前致谢.

opencv filtering image-processing computer-vision

3
推荐指数
1
解决办法
4049
查看次数

在单个调用C++ 11中启动多个线程

我理解在C++ 11中创建多个线程的典型方法是:

int num_threads = 10;
std::thread threads[num_threads];
for(int i = 0; i < num_threads; ++i)
{
    threads[i] = std::thread(doSomething);
}
// Call join if you need all threads completion
for(int i = 0; i < num_threads; ++i)
{
    threads[i].join();
}
Run Code Online (Sandbox Code Playgroud)

是否可以一次性启动线程,而不是使用循环来顺序启动每个线程.我知道在CUDA中,线程是同时启动的,没有必要单独启动每个线程.想知道C++ 11中是否有类似的东西可行.

c++ multithreading c++11

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