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

How is it possible to detect multiple attached images, and cut them off?

晚上好:)

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

剪掉这些图像并没有那么难,因为实际上只要剪掉好的台词就可以了。所以我的问题在哪里?

这个问题变得复杂了,因为确实存在好几种不同的图片;比如我的脚本很可能落在了

这样的大图上

(这里可以看到8张不同的图片,所以要剪的线是不一样的)

那我怎么去那里呢?

我还是个初学者,不是什么都懂:(

我希望我已经尽可能清楚了。 非常感谢您!

创建两个数组,一个长度为图像宽度,一个长度为图像高度,并用零初始化它们。

由于您正在尝试测试水平线和垂直线的相似性,因此您应该遍历图像像素并将位置 (x,y) 中的每个像素与位置 (x+1,y) 中的像素进行比较,并且(x,y+1) 表示每个像素都与它右边的像素和它下面的像素进行比较。 每次比较的结果应该有一个相似度百分比。

要计算两个像素的相似度百分比,你可以按照这个问题的答案: Algorithm to check similarity of colors

位置(x,y)中像素的每次水平比较的百分比结果应添加到位置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)
...

并以类似的方式计算垂直比较的值:

pixel(0,3) compare to pixel(0,4) = 22%
verticalArray[3] += 80% (22)
pixel(1,3) compare to pixel(1.4) = 10%
verticalArray[3] += 72% (32)
pixel(2,3) compare to pixel(2,4) = 76%
verticalArray[3] += 95% (108)
...

在遍历所有 pf 后,图像像素将 horizo​​ntalArray 中的值除以图像高度,将 verticalArray 中的值除以图像宽度。这个动作的结果现在给你留下了两个数组,其中包含你图片中每条水平线和每条垂直线的平均相似度百分比,现在你可以选择一个任意的幻数,比如说 15% 并且每条线都小于 15 % similarity 是一条线,您将根据它进行切割。

测试脚本,看看它找到正确行的准确度。

如果它不够敏感,请增加您的 "magic number" 的值,如果它太敏感,请找到不应降低此幻数值的行,然后重试。

编辑

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