检测图像结束

时间:2013-07-12 17:15:54

标签: ios objective-c

我有一堆由黑白书页组成的UIImages。我希望能够根据页面结束的位置(白色空间开始处)“裁剪”或“剪切”图像。为了说明我的意思,请看下面的图片。我想在“Sie”之后立即以编程方式裁剪图像。

enter image description here

我不确定如何解决这个问题。不过我已经考虑过了一些问题,也许会检测到黑色像素停在哪里,因为它总是黑白但不知道如何正确地做到这一点。任何人都可以提供任何见解或告诉我如何做到这一点?

非常感谢你!

2 个答案:

答案 0 :(得分:1)

这是我使用Python Imaging Library编写的一些python代码。它找到最低的黑色像素,然后将图像从该y值向下裁剪五个像素。

import Image

img = Image.open("yourimage.fileformat")
width,_ = img.size
lowestblacky = 0
for i, px in enumerate(img.getdata()):
    if px[:3] == (0, 0, 0):
        y = i/width
        if y > lowestblacky:
            lowestblacky = y
img.crop((0,0,width,lowestblacky+5)).save("yourimagecropped.fileformat")

Python几乎适用于所有操作系统,因此我希望您能够使用它。如果您想在最后一个黑色像素后立即裁剪图像,只需从最后一行中删除“+5”,或根据您的喜好更改值。

答案 1 :(得分:0)

将图像转换为像素值。从底部像素线开始,查找黑色像素。如果找到一些,则该行是图像的结尾。如果没有黑色像素,请继续下一行像素。

实际上,“黑色”像素可能过于简化了。一个好的解决方案是使用灰度限制(每个图像都有一些噪声)或甚至更好,像素对比度的变化。您也可以在启动检测算法之前应用图像过滤器(例如边缘检测或锐化)。