def splitimage(image):
dpmm = min(image.shape[0:2]) / DOCSIZE[0]
sizethresh = SIZE_THRESH_MM * dpmm
uprightimg = makeupright(image)
grayimg = getgrayimage(uprightimg)
# top line
top = grayimg[0,:]
sepx = [0,]
ret, binimg = cv2.threshold(top,0,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)
nlabels, labels, stats, centroids = cv2.connectedComponentsWithStats(binimg)
for i in range(1,nlabels):
if stats[i,cv2.CC_STAT_AREA] >= sizethresh:
sepx.append(centroids[i][1])
# left line
left = grayimg[:,0]
sepy = [0,]
ret, binimg = cv2.threshold(left,0,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)
nlabels, labels, stats, centroids = cv2.connectedComponentsWithStats(binimg)
for i in range(1,nlabels):
if stats[i,cv2.CC_STAT_AREA] >= sizethresh:
sepy.append(centroids[i][1])
# divide into images
imgs = []
for iy in range(len(sepy)):
for ix in range(len(sepx)):
if iy == len(sepy) - 1:
if ix == len(sepx) - 1:
#right-bottom corner
imgs.append(uprightimg[int(sepy[iy]):,int(sepx[ix]):])
else:
#bottom end
imgs.append(uprightimg[int(sepy[iy]):,int(sepx[ix]):int(sepx[ix+1])])
else:
if ix == len(sepx) - 1:
#right end
imgs.append(uprightimg[int(sepy[iy]):int(sepy[iy+1]),int(sepx[ix]):])
else:
#others
imgs.append(uprightimg[int(sepy[iy]):int(sepy[iy+1]),int(sepx[ix]):int(sepx[ix+1])])
return imgs
评论列表
文章目录