2

我坚持我的评估。我得到了一个位图,其尺寸(行和列)如下所示:

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

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

我已将位图放入一维数组中,但我不知道下一步。

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

3 0 3 4

非常感谢您的帮助。

4

1 回答 1

1

您必须将标头提取到结构中,并将数据提取到 a[] 之类的数组中。

令 R 和 C 为图像的行数和列数。对于给定的数组 a[],图像的每一行都从 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

我还没有完全修改这个。如果有任何错误请评论..

于 2013-12-07T16:42:59.523 回答