给出一个30 x 30的红色和绿色像素图像,存储为0和1的数组,其中1为红色,0为绿色。
图像以绿色开始,随机的红色图案在顶部绘制。
图像的所有最外面的像素也涂成红色。
问题是如何填充每个绿色口袋没有连接到最大的绿色口袋和红色?
答案 0 :(得分:1)
获取/写入泛光填充算法,从某个像素开始,用不同的值填充所有连接的像素,并在此过程中计算像素。
拥有具有给定初始值的int biggestSize = 0
和Point biggestStartPoint = null
变量。
扫描图像。
当你得到一个绿色像素时,用蓝色填充。
如果洪水填充的数量大于biggestSize
,则用红色填充旧的最大区域(来自biggestStartPoint
)。将新计数和起始像素存储在biggestSize
和biggestStartPoint
。
如果计数不大,则用红色填充(现在为蓝色)区域,并保持变量不变。
最后,用绿色填充最大的区域。