晚上好:)
我想创建一个能够逐个剪切大图像上的图像的脚本,所以我想剪掉9个不同的图像。
切出这些图像并不是那么困难,因为实际上只要剪掉好线并且转弯就足够了。那我的问题在哪里?
这个问题变得复杂,因为确实有很多伟大的图像变体;例如,我的脚本很可能属于
等大图像(这里,您可以看到8个不同的图像,因此要切割的线条不同)。
那我怎么去那儿?
我还是初学者,我不明白一切:(
我希望我尽可能地清楚。 非常感谢你提前!
答案 0 :(得分:1)
创建两个数组,一个在图像宽度的长度,一个在图像高度的长度,并用零初始化它们。
由于您尝试测试水平线和垂直线的相似性,您应该遍历图像像素,并将位置(x,y)
中的每个像素与位置(x+1,y)
和{{}中的像素进行比较1}}意味着每个像素与它右边的像素和它下面的像素进行比较。
每次比较的结果应该产生相似性百分比。
要计算两个像素的相似百分比,您可以按照此问题的答案: Algorithm to check similarity of colors
位置(x,y)中每个像素水平比较的百分比结果应该添加到位置(x,y+1)
中水平数组中的值。
例如,如果:
x
以类似的方式计算垂直比较的值:
pixel(3,0) compare to pixel(4,0) = 80%
horizontalArray[3] += 80% (80)
pixel(3,1) compare to pixel(4,1) = 72%
horizontalArray[3] += 72% (152)
pixel(3,2) compare to pixel(4,2) = 95%
horizontalArray[3] += 95% (247)
...
在遍历所有pf后,图像像素将horizontalArray中的值与图像高度和verticalArray中的值除以图像宽度。这个动作的结果现在让你有两个数组,包含你的图片中每个水平线和每条垂直线的平均相似度百分比,现在你可以选择一个任意的幻数,比如15%,并说每条线都少于15 %相似度是指您将执行剪切的行。
测试脚本并查看找到正确行的准确程度。
如果它不够灵敏,请增加你的魔法数字"的值,如果它过于敏感,并找到不应该减少这个幻数的值的行然后再试一次。
修改强>
我将我的建议编辑为颜色相似性公式,因为它有错误会导致不准确的结果。 相反,我添加了另一个处理颜色比较问题的答案,将其与算法的其余部分一起使用,它应该可行。