android中的直线检测

android中的直线检测,android,Android,我有这样一个形象: 另一幅图: 我拍了一张激光线的照片。 我的目的是检查图像是否包含激光的直线。如果图像包含直线,则给出“找到直线”的消息,否则“找不到直线”。我想在安卓系统中做到这一点。我将输入一个从SD卡和输出图像将是信息。我提供的1时间应给出信息“找到直线” 第二张图片应该给出信息“找不到直线”。我尝试过这样的事情,但没有达到我的目标: int iWidth2 = bmp.getWidth(); for(int i=0;i<bmp.g

我有这样一个形象:

另一幅图:

我拍了一张激光线的照片。 我的目的是检查图像是否包含激光的直线。如果图像包含直线,则给出“找到直线”的消息,否则“找不到直线”。我想在安卓系统中做到这一点。我将输入一个从SD卡和输出图像将是信息。我提供的1时间应给出信息“找到直线” 第二张图片应该给出信息“找不到直线”。我尝试过这样的事情,但没有达到我的目标:

         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();

                }

           }
int-iWidth2=bmp.getWidth();

对于(int i=0;i如果图片的背景始终为黑色,则尝试检测非黑色,但不是未知的激光颜色

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

图像中的线条检测并不像检测单色像素那么简单。因为图像中的线条有多种颜色,并且线条的笔划可以不同

我建议使用像OpenCV这样的图形库来实现这一点


查看和,这是检测直线的过程。

您的代码基于针点精度!您检测的是一组完全水平对齐的相等像素。但是您需要在颜色和选择的扫描路径方面为该算法增加一点灵活性。或者更好的是,您不应该尝试重新反转nt方向盘!如果这不仅仅是为了好玩,请使用现有的图像扫描库。您使用的颜色常量太精确了(请参见此处红色的实际值:)请使用“红色”范围,找到的颜色必须在该范围内。