Numpy PIL Python : crop image on whitespace or crop text with histogram Thresholds
我该如何找到下图中数字周围的空白区域的边界框或窗口?:
原始图像:。
高度:762像素宽度:1014像素
目标:比如:
我曾想过将图像分割成硬编码的块大小,然后随机分析,但我认为这样做太慢了。
使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | from PIL import Image import numpy as np import matplotlib.pyplot as plt im = Image.open('/home/jmunsch/Pictures/Aet62.png') p = np.array(im) p = p[:,:,0:3] p = 255 - p lx,ly,lz = p.shape plt.plot(p.sum(axis=1)) plt.plot(p.sum(axis=0)) #I was thinking something like this #The image is a 3-dimensional ndarray [[x],[y],[color?]] #Set each value below an axes mean to 0 [item = 0 for item in p[axis=0] if item < p.mean(axis=0)] # and then some type of enumerated groupby for each axes #finding the mean index for each groupby(0) on axes plt.plot(p[mean_index1:mean_index2,mean_index3:mean_index4]) |
根据这些图,每个山谷都表示要绑定的位置。
- 第一个图表显示文本行的位置
- 第二张图显示了字符的位置
- 使用pil修剪空白
- 使用python和pil,如何在图像中获取文本块?
- 使用python/pil或类似方法缩小空白
- 在python中使用pil裁剪图像
- 使用python在单色图像中围绕斑点的矩形边界框
- 我怎样才能提高我的爪子检测能力?
- http://scipy-sessions.github.io/advanced/image_处理/
- http://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.html网站
小精灵绘图示例
氧化镁
绘图示例输出氧化镁
相关岗位/文件:
小精灵更新:Hyry解决方案
氧化镁
我认为你可以在
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | import pylab as pl import numpy as np from scipy import ndimage img = pl.imread("Aet62.png")[:, :, 0].astype(np.uint8) img2 = ndimage.binary_erosion(img, iterations=40) img3 = ndimage.binary_dilation(img2, iterations=40) labels, n = ndimage.label(img3) counts = np.bincount(labels.ravel()) counts[0] = 0 img4 = labels==np.argmax(counts) img5 = ndimage.binary_fill_holes(img4) result = ~img & img5 result = ndimage.binary_erosion(result, iterations=3) result = ndimage.binary_dilation(result, iterations=3) pl.imshow(result, cmap="gray") |
输出为:
。