def setScanStatus( self,\ idToken,\ status ): scanResult = ScanResult() scanResult.setIdToken( idToken ) scanResult.setStatus( status ) self.setScanResult( scanResult )
def setScanStatus( self,\ idToken,\ status ): scanResult = ScanResult() scanResult.setIdToken(idToken) scanResult.setStatus(status) self.setScanResult(scanResult)
def fromJSON( self,\ strParse ): size = len(strParse) for item in strParse: scanResult = ScanResult() #большой код bigQRCodeData = BigQRCodeData() bigQRCodeData.setDataFromJSON(item["m_BigQRCodeData"]) scanResult.setBigQRCodeData(bigQRCodeData) scanResult.setIdToken(item["m_IdToken"]) scanResult.setStatus(item["m_Status"]) #маленькие коды парсим smallQRCodeList = item["m_SmallQRCodeDataList"] for smallQRCode in smallQRCodeList: smallQRCodeData = SmallQRCodeData() smallQRCodeData.setData(smallQRCode["m_Title"]) lst = [] lst = smallQRCode["m_ResultList"] smallQRCodeData.setResultList(lst) scanResult.addSmallQRCodeData(smallQRCodeData) self.m_ScanResultList.append(scanResult)
def fromJSON( self,\ strParse ): size = len(strParse) for item in strParse: scanResult = ScanResult() #большой код bigQRCodeData = BigQRCodeData() bigQRCodeData.setDataFromJSON( item["m_BigQRCodeData"] ) scanResult.setBigQRCodeData(bigQRCodeData) scanResult.setIdToken( item["m_IdToken"] ) scanResult.setStatus(item["m_Status"]) #маленькие коды парсим smallQRCodeList = item["m_SmallQRCodeDataList"] for smallQRCode in smallQRCodeList: smallQRCodeData = SmallQRCodeData() smallQRCodeData.setData(smallQRCode["m_Title"]) lst = [] lst = smallQRCode["m_ResultList"] smallQRCodeData.setResultList(lst) scanResult.addSmallQRCodeData(smallQRCodeData) self.m_ScanResultList.append(scanResult)
def startScan( sourceImage,\ idToken ): imageWorker = ImageWorker( sourceImage,\ PIL_IMAGE ) # Заносим информацию о том, что распознавание НАЧАЛОСЬ # также, создаем объект scanResult, который будет содержать в себе # всю информацию по результату распознавания try: tokenFileWorker = TokenFileWorker() scanResult = ScanResult() scanResult.setIdToken( idToken ) scanResult.setStatus( IN_PROGRESS ) tokenFileWorker.setScanResult( scanResult ) #ВАРИАНТ ГРУБОЙ СИЛЫ coordinateOfQRCode, imageWorker, symData = thirdVariantOfAlgorithm( imageWorker ) #sourceImage.save( "check1.png" ) #coordinateOfQRCode, sourceImage, symData = thirdVariantOfAlgorithm( sourceImage, \ # WAS_ROTATED ) sourceImage = imageWorker.getPILImage() #sourceImage.save( "OnlyForm.jpg" ) #sourceImage.save( "check.png" ) if ( len( coordinateOfQRCode ) > 0 ): bootomLeftCorners = coordinateOfQRCode[ 1 ] bottomRightCorners = coordinateOfQRCode[ 2 ] start_x = bottomRightCorners[ x ] - int ( ( bottomRightCorners[ x ] - bootomLeftCorners[ x ] ) / 2 ) start_y = bottomRightCorners[ y ] listOfQRCodes, dataList = findAllQRCodeOnColumn( imageWorker, start_x, start_y ) if ( len ( listOfQRCodes ) > 0 ): #выводим и записываем большой QR bigQRCodeData = BigQRCodeData() bigQRCodeData.parseDataFromStr( str( symData ) ) scanResult.setBigQRCodeData( bigQRCodeData ) sys.stdout.write( str( symData ) + "\n" ) #print( symData ) #начинаем вырезать ячейки по каждому коду for i in range( 0, int( len( listOfQRCodes) / 2 ) ): #print( dataList[ i ] ) smallQRCodeData = SmallQRCodeData() smallQRCodeData.setData( str( dataList[ i ] ) ) sys.stdout.write( str( dataList[ i ] ) + "\n" ) listOfResult = [] #fileNameImageWithCells = FOLDER_IMAGE_WITH_CELLS + \ # str( i ) + \ # IMAGE_FILENAME_IMAGE_WITH_CELLS imgWithCells = getImageWithCells( sourceImage, listOfQRCodes[ i * 2 + 1 ] ) thresholdValue = 200 squares, imgWithCellsThresh = find_squares( imgWithCells, imageWorker, thresholdValue ) #imageWorker.copyOpenCVImageToPIL(imgWithCellsThresh, 1) #imgWithCells = imgWithCellsThresh #cv2.imwrite("NEW_image_with_cells.jpg", imgWithCells) countOfCells = len ( squares ) #3 ячейки! cells = [] listOfResult = [] if ( countOfCells == 3 ): #изображения с ячейками for k in range ( 0, countOfCells): #imgWithCells.save("image_with_cells.jpg") #imageWorker.copyPILImageToOpenCV(imgWithCells) cellImage = getImageByContour( squares[ k ],\ imgWithCellsThresh) #cv2.imwrite("test_cell.jpg", cellImage) imageWorker.copyOpenCVImageToPIL( cellImage, 1 ) image = prepareCell( imageWorker.getPILImage(), \ sourceImage ) cells.append( image ) #image.save( cellFileName ) #image.save("cell.jpg") listOfResult.append( checkImageOnMark( image ) ) sys.stdout.write( str( listOfResult ) + "\n" ) #print( listOfResult ) else: # Если вдруг, по результатам алгоритма поиска ячеек (по контурам), # их оказалось БОЛЕЕ 3-ех. Тогда вырезаем ВРУЧНУЮ (опираясь на # ИЗВЕСТНОЕ расстояние между ячейками в пикселях. cellsDetector = CellsDetector( sourceImage,\ imgWithCells ) firstCellImg, secondCellImg, thirdCellImg = cellsDetector.start() listOfResult.append( checkImageOnMark( firstCellImg ) ) listOfResult.append( checkImageOnMark( secondCellImg ) ) listOfResult.append( checkImageOnMark( thirdCellImg ) ) sys.stdout.write( str( listOfResult ) + "\n" ) smallQRCodeData.setResultList( listOfResult ) scanResult.addSmallQRCodeData( smallQRCodeData ) scanResult.setStatus( SUCCESS ) else: #print( "there is no something about small QR codes :("); sys.stderr.write( str( SMALL_QR_CODES_ARE_NOT_HERE ) ) scanResult.setStatus( FILED_SMALL_QR_CODE ) else: sys.stderr.write( str( FORM_NOT_FOUNDED ) ) # Не найден большой QR код. scanResult.setStatus( FAILED_BIG_QR_CODE ) except BaseException: scanResult.setStatus( FAILED ) return scanResult
def startScan( sourceImage,\ idToken ): imageWorker = ImageWorker( sourceImage,\ PIL_IMAGE ) # Заносим информацию о том, что распознавание НАЧАЛОСЬ # также, создаем объект scanResult, который будет содержать в себе # всю информацию по результату распознавания try: tokenFileWorker = TokenFileWorker() scanResult = ScanResult() scanResult.setIdToken(idToken) scanResult.setStatus(IN_PROGRESS) tokenFileWorker.setScanResult(scanResult) #ВАРИАНТ ГРУБОЙ СИЛЫ coordinateOfQRCode, imageWorker, symData = thirdVariantOfAlgorithm( imageWorker) #sourceImage.save( "check1.png" ) #coordinateOfQRCode, sourceImage, symData = thirdVariantOfAlgorithm( sourceImage, \ # WAS_ROTATED ) sourceImage = imageWorker.getPILImage() #sourceImage.save( "OnlyForm.jpg" ) #sourceImage.save( "check.png" ) if (len(coordinateOfQRCode) > 0): bootomLeftCorners = coordinateOfQRCode[1] bottomRightCorners = coordinateOfQRCode[2] start_x = bottomRightCorners[x] - int( (bottomRightCorners[x] - bootomLeftCorners[x]) / 2) start_y = bottomRightCorners[y] listOfQRCodes, dataList = findAllQRCodeOnColumn( imageWorker, start_x, start_y) if (len(listOfQRCodes) > 0): #выводим и записываем большой QR bigQRCodeData = BigQRCodeData() bigQRCodeData.parseDataFromStr(str(symData)) scanResult.setBigQRCodeData(bigQRCodeData) sys.stdout.write(str(symData) + "\n") #print( symData ) #начинаем вырезать ячейки по каждому коду for i in range(0, int(len(listOfQRCodes) / 2)): #print( dataList[ i ] ) smallQRCodeData = SmallQRCodeData() smallQRCodeData.setData(str(dataList[i])) sys.stdout.write(str(dataList[i]) + "\n") listOfResult = [] #fileNameImageWithCells = FOLDER_IMAGE_WITH_CELLS + \ # str( i ) + \ # IMAGE_FILENAME_IMAGE_WITH_CELLS imgWithCells = getImageWithCells(sourceImage, listOfQRCodes[i * 2 + 1]) thresholdValue = 200 squares, imgWithCellsThresh = find_squares( imgWithCells, imageWorker, thresholdValue) #imageWorker.copyOpenCVImageToPIL(imgWithCellsThresh, 1) #imgWithCells = imgWithCellsThresh #cv2.imwrite("NEW_image_with_cells.jpg", imgWithCells) countOfCells = len(squares) #3 ячейки! cells = [] listOfResult = [] if (countOfCells == 3): #изображения с ячейками for k in range(0, countOfCells): #imgWithCells.save("image_with_cells.jpg") #imageWorker.copyPILImageToOpenCV(imgWithCells) cellImage = getImageByContour( squares[ k ],\ imgWithCellsThresh) #cv2.imwrite("test_cell.jpg", cellImage) imageWorker.copyOpenCVImageToPIL(cellImage, 1) image = prepareCell( imageWorker.getPILImage(), \ sourceImage ) cells.append(image) #image.save( cellFileName ) #image.save("cell.jpg") listOfResult.append(checkImageOnMark(image)) sys.stdout.write(str(listOfResult) + "\n") #print( listOfResult ) else: # Если вдруг, по результатам алгоритма поиска ячеек (по контурам), # их оказалось БОЛЕЕ 3-ех. Тогда вырезаем ВРУЧНУЮ (опираясь на # ИЗВЕСТНОЕ расстояние между ячейками в пикселях. cellsDetector = CellsDetector( sourceImage,\ imgWithCells ) firstCellImg, secondCellImg, thirdCellImg = cellsDetector.start( ) listOfResult.append(checkImageOnMark(firstCellImg)) listOfResult.append(checkImageOnMark(secondCellImg)) listOfResult.append(checkImageOnMark(thirdCellImg)) sys.stdout.write(str(listOfResult) + "\n") smallQRCodeData.setResultList(listOfResult) scanResult.addSmallQRCodeData(smallQRCodeData) scanResult.setStatus(SUCCESS) else: #print( "there is no something about small QR codes :("); sys.stderr.write(str(SMALL_QR_CODES_ARE_NOT_HERE)) scanResult.setStatus(FILED_SMALL_QR_CODE) else: sys.stderr.write(str(FORM_NOT_FOUNDED)) # Не найден большой QR код. scanResult.setStatus(FAILED_BIG_QR_CODE) except BaseException: scanResult.setStatus(FAILED) return scanResult