我有一堆由黑白书页组成的 UIImages。我希望能够根据页面结束的位置(空白开始的位置)“裁剪”或“剪切”图像。为了说明我的意思,请看下面的图片。我想在“Sie”这个词之后以编程方式裁剪图像。
我不知道如何解决这个问题。然而,我已经考虑过它,也许检测黑色像素停止的位置,因为它总是黑白的,但不知道如何正确地做到这一点。谁能提供任何见解或告诉我如何做到这一点?
非常感谢!
我有一堆由黑白书页组成的 UIImages。我希望能够根据页面结束的位置(空白开始的位置)“裁剪”或“剪切”图像。为了说明我的意思,请看下面的图片。我想在“Sie”这个词之后以编程方式裁剪图像。
我不知道如何解决这个问题。然而,我已经考虑过它,也许检测黑色像素停止的位置,因为它总是黑白的,但不知道如何正确地做到这一点。谁能提供任何见解或告诉我如何做到这一点?
非常感谢!
这是我使用 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”,或根据自己的喜好更改值。
将图像转换为像素值。从像素的底线开始,寻找黑色像素。如果找到一些,则该行是图像的结尾。如果没有黑色像素,则继续下一行像素。
实际上,“黑色”像素可能过于简化了。一个好的解决方案是使用灰度限制(每个图像都有一些噪点),甚至更好的是,改变像素对比度。您还可以在开始检测算法之前应用图像过滤器(例如边缘检测或锐化)。