在C中查找位图图像中的水平线

时间:2013-12-07 15:59:27

标签: c bitmap horizontal-line

我被困在我的评估中。我给它一个位图,其尺寸(行和列)如下:

4 5
0 0 1 1 1
0 0 1 0 1
1 0 1 1 1
1 1 1 1 1

任务是找到水平和垂直最长的线和一个正方形(全部由1组成)。我只需要第一次用水平线踢。

我已将位图放在1D数组中,我不知道下一步。

上图的输出是最长水平线的坐标:

3 0 3 4

非常感谢帮助。

1 个答案:

答案 0 :(得分:1)

您必须将标题提取到结构和数据中,如同[]。

一样

设R和C为图像的行数和列数。对于给定的数组a [],每行图像从[C * i]开始,其中i是行号。因此,您可以使用i索引该行,并使用C * i + j访问该行中的每个位,其中j小于C.接下来,您需要为每行执行processing以查找最长水平线的长度。对此的小改动可用于索引列j并找到最长的垂直线。

要进行上述处理,请创建一个点结构

struct point 
{
  int x;
  int y;

}p1, p2;

还创建一个名为lenh的变量,该变量将包含找到的水平线的长度。用户变量llenh也用于存储最长的长度。对于由(5i + j)索引的行(i,j)中的每个顶点。将llenh设置为0.从行开始,看到1更新lenh,然后查看它是否大于llenh。如果是,则更新p1点。看到0更新p2点并将lenh设置为0并同时更新llenh

我没有完全修改过这个问题。如有任何错误请评论..