Python中图像的裁剪前景

Python中图像的裁剪前景,python,image-processing,Python,Image Processing,我已经操纵了一个jpg图像,这样我的前景被隔离,所有的黑色像素无处不在。 我希望能够裁剪图像,使其上下没有全黑的行,或前景左右没有全黑的列。 我想我可以通过Numpy数组循环得到我需要的4个索引,但我想知道是否有更直接和/或快速的方法 import numpy as np import matplotlib.pyplot as plt im=np.array( [[0,0,0,0,0,0,0], [0,0,1,1,1,0,0], [0,1,1,1,0,0,0], [0

我已经操纵了一个jpg图像,这样我的前景被隔离,所有的黑色像素无处不在。 我希望能够裁剪图像,使其上下没有全黑的行,或前景左右没有全黑的列。 我想我可以通过Numpy数组循环得到我需要的4个索引,但我想知道是否有更直接和/或快速的方法

import numpy as np
import matplotlib.pyplot as plt


im=np.array(    
[[0,0,0,0,0,0,0],
[0,0,1,1,1,0,0],    
[0,1,1,1,0,0,0],    
[0,0,1,1,0,0,0],    
[0,0,0,0,0,0,0]])

plt.imshow(im, cmap=plt.cm.gray,interpolation='nearest')

然后这里发生了一些事情,我得到:


im[~np.all(im==0,axis=1)]
可以删除所有为零的行<代码>轴=2将删除列。这对你有用吗?

在所有像素上循环没有问题。你从每个方向只做一次,一找到什么就停下来,所以速度应该很快。