android中的直线检测

时间:2014-04-25 06:29:48

标签: android

我的图像如下:

另一张图片:

我拍摄了激光线的图像。 我的目的是检查图像是否包含激光的直线。如果图像包含一条直线,则给出一条消息:"直线找到"否则"找不到直线"。我想在android中做到这一点。我将从SD卡输入图像并输出消息。我提供的1stimage应该给出消息"找到直线"  第二张图片应该给出消息"找不到直线" 。我尝试过类似的东西,但无法实现我的目标:

         int iWidth2 = bmp.getWidth();  

           for(int i=0;i<bmp.getHeight();i++)
           {
               int found=0;

               for(int j=0;j<bmp.getWidth();j++)
               {

                   if(pixels[(i*iWidth2)+j]==Color.Red)
                   {
                       found++;
                   }

                }

                if(((found*100)/bmp.getWidth())>80)
                {
                    Toast.makeText(getApplicationContext(), " Straight ",  Toast.LENGTH_SHORT).show();

                }

           }

由于激光颜色不完全是红色,这就是为什么它没有给出正确的结果。

2 个答案:

答案 0 :(得分:1)

如果你的照片背景总是黑色,请尝试检测不是黑色,而不是未知的激光颜色。

if(pixels[(i*iWidth2)+j]!=Color.Black)
{
  found++;
}

答案 1 :(得分:0)

图像中的线检测并不像检测单色像素那样微不足道。因为图像中的线条有多种颜色,并且线条的笔划可能不同。

我建议使用像OpenCV这样的图形库。还有version for Android

查看Hough Line TransformationCanny Edge Detection,这是检测直线的过程。