如何检测多个附加图像并将其剪切掉?

时间:2017-07-26 21:51:33

标签: python image opencv image-processing cut

晚上好:)

我想创建一个能够逐个剪切大图像上的图像的脚本,所以我想剪掉9个不同的图像。

enter image description here

切出这些图像并不是那么困难,因为实际上只要剪掉好线并且转弯就足够了。那我的问题在哪里?

这个问题变得复杂,因为确实有很多伟大的图像变体;例如,我的脚本很可能属于enter image description here

等大图像

(这里,您可以看到8个不同的图像,因此要切割的线条不同)。

那我怎么去那儿?

我还是初学者,我不明白一切:(

我希望我尽可能地清楚。 非常感谢你提前!

1 个答案:

答案 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后,图像像素将horizo​​ntalArray中的值与图像高度和verticalArray中的值除以图像宽度。这个动作的结果现在让你有两个数组,包含你的图片中每个水平线和每条垂直线的平均相似度百分比,现在你可以选择一个任意的幻数,比如15%,并说每条线都少于15 %相似度是指您将执行剪切的行。

测试脚本并查看找到正确行的准确程度。

如果它不够灵敏,请增加你的魔法数字"的值,如果它过于敏感,并找到不应该减少这个幻数的值的行然后再试一次。

修改

我将我的建议编辑为颜色相似性公式,因为它有错误会导致不准确的结果。 相反,我添加了另一个处理颜色比较问题的答案,将其与算法的其余部分一起使用,它应该可行。