我必须制作一个应用程序,在黑白图像中识别用户提供的一块俄罗斯方块。我读了图像以分析成数组。
我怎样才能使用C做这样的事情?
答案 0 :(得分:1)
您可能不想从头开始实现(当然除非必要)...我建议您寻找合适的库。我听说OpenCV很好,但我从未做过机器视觉方面的任何工作,所以我没有测试过。
答案 1 :(得分:1)
搜索连接的组件(即使用深度优先搜索;如果效率问题,您可能希望避免递归;请改用自己的堆栈)。最大的连接组件应该是您的俄罗斯方块。然后,您可以进一步分析它(使用形状,大小或某种边界描述)
答案 2 :(得分:1)
假设您已经将图像加载到数组中,那么使用正则表达式呢? 你不需要精确的形状匹配,但是为什么不试试呢!
编辑:我下载了您的doc文件。你必须在2D数组中的随机数字中识别随机模式,因此正则表达式不适合这个问题,让我们说这是坏消息。好消息是你的作业不是完全图像处理,而且更容易。
这是你的功课,所以我不会为你创建代码,但我可以给你指示。
由于必须使用并行性,因此可以创建4个线程并为每个线程分配不同的旋转以进行搜索。
答案 3 :(得分:1)
看看维基百科中给出的俄罗斯方块的形状,称为“I,J,L,O,S,T,Z”,它似乎是边界框边的比例(给定二进制文件很容易找到)图像和C)显示你是否有我(4:1)或O(1:1);其他形状是2:3。
要检测您拥有的其余形状(J,L,S,T或Z),看起来您可以收集落在边界框边缘的形状边缘的长度和位置。因此,T沿3边显示3和1,沿2边显示1和1。跟踪位置有助于区分J与L,S和Z.