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

标签 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 组成)。我只需要水平线的第一脚。

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

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

3 0 3 4

非常感谢您的帮助。

最佳答案

您必须将 header 提取到结构中,并将数据提取到数组中,例如 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

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

关于c - 在 C 中的位图图像中查找水平线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20443372/

相关文章:

使用 fcntl 从 stdout 创建新文件描述符在文件中失败

c - 如何将 typedef 结构传递给函数?

c++ - 从原始字节创建 bmp 文件的可移植函数?

C# aforge 颜色检测

matplotlib - 在绘图上创建带标签的水平线

html - 更改 HTML 页面中的 hr 样式

c - C 中的反转函数不起作用。按位运算符

android - GNU make - 使用通配符从父目录查找源代码

Android创建一个圆形位图而不在 Canvas 上绘制它