Python 修剪灰度图像的空白

Python 修剪灰度图像的空白,python,image,numpy,deep-learning,Python,Image,Numpy,Deep Learning,我有一组图像,图像是这样的 如何使用python删除图像的白色下方部分,因为它不包含任何有用的内容 我用python将图像读取到numpy数组 我的代码如下: data_dir = "/Users/leon/Projects/inpainting/data/" images = [] files = glob.glob (data_dir + "*.jpg") for file in files: image = cv2.imread(file, 0) images.append

我有一组图像,图像是这样的

如何使用python删除图像的白色下方部分,因为它不包含任何有用的内容

我用python将图像读取到numpy数组

我的代码如下:

data_dir = "/Users/leon/Projects/inpainting/data/"
images = []
files = glob.glob (data_dir + "*.jpg")
for file in files:
    image = cv2.imread(file, 0)
    images.append(image)

这会在上方和下方按行修剪空白,实际上它会修剪任何完整的空白行:

trimmed = image[np.where(~np.all(image == 255, axis=1))]
如果只需要修剪上下页边距,可以执行以下操作:

empty_row_mask = np.all(image == 255, axis=1)
top = np.searchsorted(~empty_row_mask, True)
bottom = np.searchsorted(empty_row_mask, True)
trimmed = image[top:bottom]

我找到了一种使用openCV3和python3.6的方法

image_neg = cv2.bitwise_not(image) # invert the root to white
coords = cv2.findNonZero(image_neg) # find all the non-zero points (root)
x, y, w, h = cv2.boundingRect(coords) # find minimum spanning bounding box
rect = image[y:y+h, x:x+w]

到目前为止你尝试了什么?我正在考虑使用两个for循环来检查像素元素,但我得到了5000张这样的图像,这样做会不会太慢?可能会重复看到最后一部分谢谢大家,但我找到了更好的方法,看到我的答案。谢谢,我找到了一种方法,可以找到最合适的窗口来修剪两侧不想要的白色部分