class ToWords(object): segmenter=Segmenter() def __init__(self): ''' constructor ''' self.segmenter=Segmenter() def segment(self,image): transImg=cv.CreateImage((image.height,image.width), cv.IPL_DEPTH_8U, 1) cv.Transpose(image, transImg) 'returns Number of available line segments' return self.segmenter.segmentHorizontally(transImg) def getWordSegment(self,wordNumber): 'returns line segment Image' image=self.segmenter.getSegment(wordNumber) return image def getReadableWordSegment(self,wordNumber): 'returns transposed form of line segment Image' image=self.segmenter.getSegment(wordNumber) transImg=cv.CreateImage((image.height,image.width), cv.IPL_DEPTH_8U, 1) cv.Transpose(image, transImg) return transImg
class ToCharacters(object): segmenter = Segmenter() def __init__(self): ''' constructor ''' self.segmenter = Segmenter() def segment(self, image): 'returns Number of available character segments in a line' return self.segmenter.segmentHorizontally(image) #returns the same but manipulated line Image def splitDika(self, image): segmentLine = ToLines() totalLines = segmentLine.segment(image) pixelCounter = PixelCounter() for lineNum in range(totalLines): lineImg = segmentLine.getLineSegment(lineNum) lineRowRange = segmentLine.getCoordinatesOfLineSegment(lineNum) countArr = pixelCounter.getCountArr_V(lineImg, 0) #print countArr min = pixelCounter.getMin(countArr) #dika width is min vertically and it is most occurred horizontally for x in pixelCounter.getOccurredPositionList(countArr, min): for height in range(lineRowRange[0], (lineRowRange[1] + lineRowRange[0]) / 2): cv.Set2D(image, height, x, 255) return image
class ToWords(object): segmenter = Segmenter() def __init__(self): ''' constructor ''' self.segmenter = Segmenter() def segment(self, image): transImg = cv.CreateImage((image.height, image.width), cv.IPL_DEPTH_8U, 1) cv.Transpose(image, transImg) 'returns Number of available line segments' return self.segmenter.segmentHorizontally(transImg) def getWordSegment(self, wordNumber): 'returns line segment Image' image = self.segmenter.getSegment(wordNumber) return image def getReadableWordSegment(self, wordNumber): 'returns transposed form of line segment Image' image = self.segmenter.getSegment(wordNumber) transImg = cv.CreateImage((image.height, image.width), cv.IPL_DEPTH_8U, 1) cv.Transpose(image, transImg) return transImg
class ToCharacters(object): segmenter=Segmenter() def __init__(self): ''' constructor ''' self.segmenter=Segmenter() def segment(self,image): 'returns Number of available character segments in a line' return self.segmenter.segmentHorizontally(image) #returns the same but manipulated line Image def splitDika(self,image): segmentLine=ToLines() totalLines=segmentLine.segment(image) pixelCounter = PixelCounter() for lineNum in range(totalLines): lineImg=segmentLine.getLineSegment(lineNum) lineRowRange=segmentLine.getCoordinatesOfLineSegment(lineNum) countArr=pixelCounter.getCountArr_V(lineImg, 0) #print countArr min=pixelCounter.getMin(countArr) #dika width is min vertically and it is most occurred horizontally for x in pixelCounter.getOccurredPositionList(countArr, min): for height in range(lineRowRange[0],(lineRowRange[1]+lineRowRange[0])/2): cv.Set2D(image,height,x,255) return image
class ToLines(object): segmenter=Segmenter() def __init__(self): ''' constructor ''' self.segmenter=Segmenter() def segment(self,image): 'returns Number of available line segments' return self.segmenter.segmentHorizontally(image) def getLineSegment(self,lineNumber): 'returns line segment Image' return self.segmenter.getSegment(lineNumber) def getCoordinatesOfLineSegment(self,lineNumber): return self.segmenter.getRowRange(lineNumber) def getPixelCountsOfLineSegment(self,lineNumber): #print self.segmenter.getPixelCountsOfSegment(lineNumber) return self.segmenter.getPixelCountsOfSegment(lineNumber)