Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OpenCv-深度贴图_Opencv_Camera_Depth_Vision - Fatal编程技术网

OpenCv-深度贴图

OpenCv-深度贴图,opencv,camera,depth,vision,Opencv,Camera,Depth,Vision,各位好,飞越者 我目前的任务包括寻找金属坯料(原木)是否由一个或两个部分组成。我的第一个尝试是寻找一条黑色的垂直线,表示两个原木之间的间隔。如果我找不到一个分离点,我断定它是一个整体 这个程序一直工作到。。。。黑暗的火舌出现了。。。 所以我决定使用另一个参数,我知道它永远是真的,深度。坯料和间隙之间的深度总是不同的 所以我决定尝试两个平行安装的摄像头,有人有什么建议如何正确设置吗 还是有人知道另一种方法来完成我的任务 提前谢谢 将在以下方面发挥最佳作用: 使用便宜的激光线(在工具/五金店大

各位好,飞越者

我目前的任务包括寻找金属坯料(原木)是否由一个或两个部分组成。我的第一个尝试是寻找一条黑色的垂直线,表示两个原木之间的间隔。如果我找不到一个分离点,我断定它是一个整体

这个程序一直工作到。。。。黑暗的火舌出现了。。。

所以我决定使用另一个参数,我知道它永远是真的,深度。坯料和间隙之间的深度总是不同的

所以我决定尝试两个平行安装的摄像头,有人有什么建议如何正确设置吗

还是有人知道另一种方法来完成我的任务

提前谢谢

将在以下方面发挥最佳作用: 使用便宜的激光线(在工具/五金店大约20美元),在图像中搜索激光。如果这些线贯穿整个钢坯,那么它就是一个整体。如果生产线出现断裂或严重断裂,则有2个钢坯

我的想法是:

glm::vec3 laserColor(1,0,0); //red
glm::vec3 currentColor;
float maximum_color_distance = 0.1;
for(int a = 0; a < image.rows;a++)
{
     for(int b = 0; b < image.rows;b++)
     { 
        currentColor = image.at(a,b);
        float current_distance = glm::distance(laserColor, currentColor);
        if(current_distance > maximum_color_distance)
        {
           image.at(a,b) = 0;
        }
     }
}

glm::vec2 leftPixel = getMostLeftLaserPixel(image);
glm::vec2 rightPixel = getMostRightLaserPixel(image);

 Line line = calculateLine (leftPixel,rightPixel);

line.hasHoles(image, laserColor); //checks for 3x3 pxiel blocks which are on the line, returns false if all pixels in a 3x3 block have an other color then the laser. 3x3 to take small erros to serious
glm::vec3激光颜色(1,0,0)//红色
glm::vec3 currentColor;
浮动最大颜色距离=0.1;
for(int a=0;a最大颜色距离)
{
图像。在(a,b)=0;
}
}
}
glm::vec2 leftPixel=getMostLeftLaserPixel(图像);
glm::vec2 rightPixel=getMostRightLaserPixel(图像);
Line=计算线(leftPixel,rightPixel);
行。hasHoles(图像,激光彩色)//检查线上的3x3 pxiel块,如果3x3块中的所有像素都有其他颜色,则返回false,然后返回激光器。3x3将小错误转化为严重错误
如果钢坯距离足够远,也许可以在适当的距离使用kinect。立体图像在极线上使用的时间块匹配最多。这意味着取3x3像素,从左到右,并尝试找到看起来相似的3x3像素。这可能是一个问题,使用金属。首先,你有重复的模式。第二,你有反射,这将是不同的每个摄像头,因为他们有一个稍微不同的视角

kinect在金属反射性方面也可能存在同样的问题,但在重复模式方面则不然:

这取决于用来制作物体的材料。如果物体是由金属、玻璃制成的,或者是有光泽的,那么深度相机将难以准确地捕捉图像


OpenCV提供了整流器(或类似的东西)功能,当您使用两个摄像头时,它会有很大帮助

也许本教程可以帮助您使用openCV进行立体成像,谢谢您的帮助!我得到了一个临时解决方案,使用HSV而不是RGB,到目前为止,它似乎工作完美。非常感谢!首先,非常感谢您花时间撰写此详细说明。我目前使用HSV而不是RGB。但我已经订购了5台Bosch line激光器。明天我将开始测试这个方法,但仔细想想,它似乎是一个完美的解决方案。再次非常感谢!我会让你知道它是如何工作的。我希望这会起作用,我只是一个学生(正如我的名字所说),但我认为它应该起作用:)。