def charseg(self, line): """Segment a text line into potential character parts.""" assert mean(line) > 0.5 * amax(line) line0 = amax(line) - line ccuts = contourcuts(line0, maxdist=self.maxdist, minrange=self.minrange, mincdist=self.mincdist, sigma=self.sigma, r=self.rr, s=self.s) line = maximum(0, line0 - ccuts) # line = line+self.ledge*maximum(0,roll(line,-1,1)-line) tracks = dplineseg2(line, imweight=self.imweight, bweight=self.bweight, diagweight=self.diagweight, debug=self.debug, r=self.r) tracks = array(tracks < 0.5 * amax(tracks), 'i') tracks, _ = morph.label(tracks) self.tracks = tracks stracks = morph.spread_labels(tracks) rsegs = stracks * (line0 > 0.5 * amax(line0)) if self.debug: figure("temp") subplot(311) morph.showlabels(tracks) subplot(312) morph.showlabels(stracks) subplot(313) morph.showlabels(rsegs) raw_input() return morph.renumber_by_xcenter(rsegs)
def charseg(self, line): """Segment a text line into potential character parts.""" assert mean(line) > 0.5 * amax(line) line = amax(line) - line # line = line+self.ledge*maximum(0,roll(line,-1,1)-line) tracks = dplineseg2(line, imweight=self.imweight, bweight=self.bweight, diagweight=self.diagweight, debug=self.debug, r=self.r, threshold=self.threshold) tracks = array(tracks < 0.5 * amax(tracks), 'i') tracks, _ = morph.label(tracks) self.tracks = tracks # for debuggin stracks = morph.spread_labels(tracks) rsegs = stracks * (line > 0.5 * amax(line)) if 0: figure("temp") subplot(311) morph.showlabels(tracks) subplot(312) morph.showlabels(stracks) subplot(313) morph.showlabels(rsegs) raw_input() return morph.renumber_by_xcenter(rsegs)
def allchars(): count = 0 for fno,fname in enumerate(fnames): if fno%20==0: print fno,fname,count image = 1-ocrolib.read_image_gray(fname) try: seg = lineseg.ccslineseg(image) except: traceback.print_exc() continue seg = morph.renumber_by_xcenter(seg) for e in extract_chars(seg): count += 1 yield e
def allchars(): count = 0 for fno, fname in enumerate(fnames): if fno % 20 == 0: print fno, fname, count image = 1 - ocrolib.read_image_gray(fname) try: seg = lineseg.ccslineseg(image) except: traceback.print_exc() continue seg = morph.renumber_by_xcenter(seg) for e in extract_chars(seg): count += 1 yield e
def blxlimages(image,shapedict,bls,xls): image = (image>ocrolib.midrange(image)) if amax(image)==0: raise RecognitionError("empty line") seg = lineseg.ccslineseg(image) # ion(); subplot(311); imshow(image); subplot(312); morph.showlabels(seg); ginput(1,0.1); raw_input() seg = morph.renumber_by_xcenter(seg) blimage = zeros(image.shape) xlimage = zeros(image.shape) for sub,transform,itransform_add in extract_chars(seg): best = shapedict.predict1(sub) bli = bls[best].reshape(32,32) xli = xls[best].reshape(32,32) itransform_add(blimage,bli) itransform_add(xlimage,xli) return blimage,xlimage
def blxlimages(image, shapedict, bls, xls): image = (image > ocrolib.midrange(image)) if amax(image) == 0: raise RecognitionError("empty line") seg = lineseg.ccslineseg(image) # ion(); subplot(311); imshow(image); subplot(312); morph.showlabels(seg); ginput(1,0.1); raw_input() seg = morph.renumber_by_xcenter(seg) blimage = zeros(image.shape) xlimage = zeros(image.shape) for sub, transform, itransform_add in extract_chars(seg): best = shapedict.predict1(sub) bli = bls[best].reshape(32, 32) xli = xls[best].reshape(32, 32) itransform_add(blimage, bli) itransform_add(xlimage, xli) return blimage, xlimage
def charseg(self,line): """Segment a text line into potential character parts.""" assert mean(line)>0.5*amax(line) line = amax(line)-line # line = line+self.ledge*maximum(0,roll(line,-1,1)-line) tracks = dplineseg2(line,imweight=self.imweight,bweight=self.bweight, diagweight=self.diagweight,debug=self.debug,r=self.r, threshold=self.threshold) tracks = array(tracks<0.5*amax(tracks),'i') tracks,_ = morph.label(tracks) self.tracks = tracks # for debuggin stracks = morph.spread_labels(tracks) rsegs = stracks*(line>0.5*amax(line)) if 0: figure("temp") subplot(311); morph.showlabels(tracks) subplot(312); morph.showlabels(stracks) subplot(313); morph.showlabels(rsegs) raw_input() return morph.renumber_by_xcenter(rsegs)
def charseg(self,line): """Segment a text line into potential character parts.""" assert mean(line)>0.5*amax(line) line0 = amax(line)-line ccuts = contourcuts(line0,maxdist=self.maxdist,minrange=self.minrange, mincdist=self.mincdist,sigma=self.sigma,r=self.rr,s=self.s) line = maximum(0,line0-ccuts) # line = line+self.ledge*maximum(0,roll(line,-1,1)-line) tracks = dplineseg2(line,imweight=self.imweight,bweight=self.bweight, diagweight=self.diagweight,debug=self.debug,r=self.r) tracks = array(tracks<0.5*amax(tracks),'i') tracks,_ = morph.label(tracks) self.tracks = tracks stracks = morph.spread_labels(tracks) rsegs = stracks*(line0>0.5*amax(line0)) if self.debug: figure("temp") subplot(311); morph.showlabels(tracks) subplot(312); morph.showlabels(stracks) subplot(313); morph.showlabels(rsegs) raw_input() return morph.renumber_by_xcenter(rsegs)
def charseg(self,line): """Segment a text line into potential character parts.""" line = (line<0.5*(amax(line)+amin(line))) seg = ccslineseg(line) seg = morph.renumber_by_xcenter(seg) return seg