def selectiveSearch(image):
segments = felzenszwalb(image, scale=kFelzenszwalbScale)
numRegions = segments.max()
rectangles = []
for regionTag in range(numRegions):
selectedRegion = segments == regionTag
regionPixelIndices = np.transpose(np.nonzero(selectedRegion))
rectangle = aabb(regionPixelIndices)
rectangles.append(rectangle)
# Implement similarities, neighbourhood merging.
# Felzenszwalb's segmentation is ridiculously good already.
def debug():
marked = np.zeros(image.shape, dtype=np.uint8)
for rectangle in rectangles:
rr, cc = rectangle.pixels(marked.shape)
randcolor = randint(0, 255), randint(0, 255), randint(0, 255)
marked[rr, cc] = randcolor
print(image.shape, segments.shape, marked.shape)
io.imshow_collection([image, segments, marked])
io.show()
# debug()
return rectangles
评论列表
文章目录