给出下面的图片,我们的目标是,确定出图中前景图片的上下左右边界,以便于切割出这个图片,去掉多余的边框。
工具/原料
1
电脑
2
python3
方法/步骤
1
观察图片的第一行,全部都是白色:from skimage import ioa=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=[]for i in range((b.shape)[0]): if set(b[i])!=set(b[0]): u.append(i)print(max(u),min(u))
7
同样的,列方向也可以判断:v=[]for i in range((b.shape)[1]): if set(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
经过二值化处理之后,效果就如下图。
注意事项
大爱吗下载地址pan.baidu.com/s/1zmQlyB3PlfjnDKjro4fGlA,密码: ycn4。示例图片,自己画一个就行了。
上一篇:Matlab如何画折线图?