我的图像如下:
另一张图片:
我拍摄了激光线的图像。 我的目的是检查图像是否包含激光的直线。如果图像包含一条直线,则给出一条消息:"直线找到"否则"找不到直线"。我想在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();
}
}
由于激光颜色不完全是红色,这就是为什么它没有给出正确的结果。
答案 0 :(得分:1)
如果你的照片背景总是黑色,请尝试检测不是黑色,而不是未知的激光颜色。
if(pixels[(i*iWidth2)+j]!=Color.Black)
{
found++;
}
答案 1 :(得分:0)
图像中的线检测并不像检测单色像素那样微不足道。因为图像中的线条有多种颜色,并且线条的笔划可能不同。
我建议使用像OpenCV这样的图形库。还有version for Android。
查看Hough Line Transformation和Canny Edge Detection,这是检测直线的过程。