我正在寻找一种在数组中查找对象模式的有效方法。 这是我必须解决的问题。我正在编写一个有形的界面应用程序,它从网络摄像头收集数据,将其转换为黑白图像,我从中创建一个数组。创建的数组类似于以下内容:
1111111111111111111111111111
1111110001111111111000111111
1111100000111111110000011111
1111100000111111110000011111
1111110001111111111000111111
1111111111111111111111111111
其中零代表图像中的黑色。我有大约 32 个(4 行,每行 8 个圆圈)圆圈,我需要找到一种有效的方法来找到它们的坐标。我不需要整个形状,只需要每个圆的一组坐标。
谢谢你的帮助。
问候, 特奥多·斯托亚诺夫
最佳答案
我可以立即看到的三个选项(元组用于表示矩阵中的坐标):
你可以使用 BitArray为了 矩阵中的每个点,如果坐标有 O,则设置位,成本为 O(row length x column length) 用于存储。如果您知道要检查的坐标,则检索为 O(1),否则为 O(n),如果您只想找到所有 O 的
你可以使用
List<Tuple<int,int>>
只存储坐标 矩阵中的每个 O,成本将是 O(m) 用于存储,m 是 O 的数量。检索也是O(m)除了选项 2,您还可以 使用
Dictionary<Tuple<int, int>, bool>
, 允许 O(1) 检索 时间如果你知道你的坐标 想检查一下。
关于c# - 在 C# 中查找数组中的对象模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4293336/