def segmentChannel(ch, log=None): clone = cv.CloneImage(ch) components = cap.findCCs(ch, erasecol=0) joiner = lambda rect1, rect2: (cap.rectsIntersectH(rect1, rect2) and cap.distV(rect1, rect2) <= 6) or \ (rect1[2] <= 10 and rect2[2] <= 10 and cap.distH(rect1, rect2) <= 6) or \ ((rect1[2] <= 6 or rect2[2] <= 6) and cap.distH(rect1, rect2) <= 6) components = cap.joinCCs(components, joiner) components = filtCCs(components, (15, 15), 200, 0.2) if log is not None: log.log(cap.drawComponents(clone, components)) return components
def segment(image, addr, extras): clone = cv.CloneImage(image) log = cap.logger(extras, image) components = cap.findCCs(image, erasecol=0, doContinue=None, doSkip=lambda comp: comp[0] <= 25) log.log(cap.drawComponents(clone, components)) if len(components) != nSegs: components = cap.joinCCs(components, cap.rectsIntersectH) log.log(cap.drawComponents(clone, components)) cap.processExtras(log.steps, addr, extras, cap.CAP_STAGE_SEGMENT) assert(len(components) == nSegs) segments = map(lambda comp: comp[3], components) return segments
def segment(image, addr, extras): clone = cv.CloneImage(image) log = cap.logger(extras, image) components = cap.findCCs(image, erasecol=0, doContinue=None, doSkip=lambda comp: comp[0] <= 25) log.log(cap.drawComponents(clone, components)) if len(components) != nSegs: components = cap.joinCCs(components, cap.rectsIntersectH) log.log(cap.drawComponents(clone, components)) cap.processExtras(log.steps, addr, extras, cap.CAP_STAGE_SEGMENT) assert (len(components) == nSegs) segments = map(lambda comp: comp[3], components) return segments
def segment(image, addr, extras): log = cap.logger(extras, image) clone = cv.CloneImage(image) components = cap.findCCs(image, 0, lambda col: col <= 128, lambda comp: comp[0] < 10) log.log(cap.drawComponents(clone, components), False) components = cap.joinCCs(components, cap.rectsIntersectH) log.log(cap.drawComponents(clone, components), False) assert(len(components) <= nSegs) parts = cap.partsFromnSegs5(components) components = cap.spltCCs(components, parts, projRadius=4, thresh=1) log.log(cap.drawComponents(clone, components), False) segments = map(lambda comp: comp[3], components) log.log(cap.joinImagesH(segments), False) cap.processExtras(log.steps, addr, extras, cap.CAP_STAGE_SEGMENT) return segments
def segment(image, addr, extras): clone = cv.CloneImage(image) log = cap.logger(extras, image) components = cap.findCCs(image, erasecol=255, doContinue=lambda col: col == 255, doSkip=lambda comp: comp[0] <= 20) #components = cap.spltCCs(components, cap.partsFromSegW(components, 20), projRadius=5, thresh=1) log.log(cap.drawComponents(clone, components)) while len(components) > nSegs: smallest = cap.argmin(components, itemgetter(0)) del(components[smallest]) assert(len(components) == nSegs) log.log(cap.drawComponents(clone, components)) segments = map(lambda comp: comp[3], components) log.log(cap.joinImagesH(segments)) segments = map(deRotate, segments) log.log(cap.joinImagesH(segments)) cap.processExtras(log.steps, addr, extras, cap.CAP_STAGE_SEGMENT) return segments
def segment(image, addr, extras): clone = cv.CloneImage(image) log = cap.logger(extras, image) components = cap.findCCs(image, erasecol=255, doContinue=lambda col: col == 255, doSkip=lambda comp: comp[0] <= 20) #components = cap.spltCCs(components, cap.partsFromSegW(components, 20), projRadius=5, thresh=1) log.log(cap.drawComponents(clone, components)) while len(components) > nSegs: smallest = cap.argmin(components, itemgetter(0)) del (components[smallest]) assert (len(components) == nSegs) log.log(cap.drawComponents(clone, components)) segments = map(lambda comp: comp[3], components) log.log(cap.joinImagesH(segments)) segments = map(deRotate, segments) log.log(cap.joinImagesH(segments)) cap.processExtras(log.steps, addr, extras, cap.CAP_STAGE_SEGMENT) return segments