给出下面的图片,我们的目标是,确定出图中前景图片的上下左右边界,以便于切割出这个图片,去掉多余的边框。
工具/原料
电脑
python3
方法/步骤
1、观察图片的第一行,全部都是白色:fromskimageimportioa=io.imread('0.jpg')print(a[0])
2、分离图片的第一个通道:b=a[:,:,0]print(b)
3、保存b为图片:io.imsave('00.png',b)
4、这样,b的第一行的每一个像素的值都接近255:print(set(b[0]))
5、但是第100行就不是了。
6、这样,可以判断出b里声矜檠鹣面,第51行开始出现黑色像素,到第312行之后又没有黑色像素了。u=[]foriinrange((b.sha禊诬娱飑pe)[0]):ifset(b[i])!=set(b[0]):u.append(i)print(max(u),min(u))
7、同样的,列方向也可以判断:箪滹埘麽v=[]foriinrange((b.shape)[1]):ifset(b[:,i])!=set(b[:荑樊综鲶,0]):v.append(i)print(max(v),min(v))
8、这样,大体上可以实现宀窜褓沙截图了:c=a[min(u):max(u),min(v):max(v)]io.imsave('00.png',c)洹彭岣啬而出图之所以看起来有白边,那是因为,没有二值化的缘故。
9、经过二值化处理之后,效果就如下图。