使用图算法计算一张图片内有多少个包围图形

一个涂色游戏需要根据图片的透明度来计算有多少个区域可以进行涂色,用的是洪水填充算法,然后进行计数,算法看起来没什么问题,但是计算出来的区域是错误的,辛苦大佬们帮忙看看呐


test_pixels.zip (1.9 MB)

1赞

额,为啥,就是单纯的找不到问题,想找人帮忙看看呢 :flushed:

我找了一天了 :sob:

主要确实没找到 :sob:

为啥会这么想,这是上班遇到的需求,不是自己闲着没事干弄的 :sweat_smile:

没有这句呀,是初始化那里嘛

计算在buffer中的下标用的

Hash标记,Stack模拟递归,挺标准!

感觉下面4个分支,会重复被压,你没做标记

感觉一次就填充完了,好像确实是哪里没有被标记上 :thinking:

谢谢大佬夸奖,我再检查下这里 :smile:

按道理还有一个状态标记,已遍历过,
其实可以共用visited,你可设个其他值,
1,已遍历,透明
2,己遍历,不透明

1赞

这个下一步应该要用到,我先把现在的问题解决,谢谢大佬 :smile:

算法没问题,效率可优化,结果不对是图的原因。这个算法是查找连续不透明区的数量。图按算法走应该是黑线是透明的,其它区域是有颜色的

对了,或者把算法的透明判定取反也行。

这就是es6,es7的写法,没什么花的。。

没懂你的点在哪里?难道你是楼主的同事?

并不是,我不认识这位老哥 :joy:

取反是可以的!!!但是还要看看细节,我用简单的形状拼了张图算出来的色块是对的,但是美术给的图复杂一点算出来就会多出来一些

效率确实是可以优化的,我先把功能实现 :smiley: