Beispiel #1
0
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  
Beispiel #2
0
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
Beispiel #3
0
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
Beispiel #4
0
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 
Beispiel #5
0
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)