[Pycodeocr-main] SF.net SVN: pycodeocr:[68] branches/redesign
Status: Beta
Brought to you by:
drtrigon
|
From: <la...@us...> - 2014-08-27 06:55:59
|
Revision: 68
http://sourceforge.net/p/pycodeocr/code/68
Author: laserb
Date: 2014-08-27 06:55:49 +0000 (Wed, 27 Aug 2014)
Log Message:
-----------
Add options for source and recognition.
Modified Paths:
--------------
branches/redesign/PyCodeOCR.py
branches/redesign/Recognition/ESR.py
branches/redesign/Recognition/ImageRecognition.py
branches/redesign/Recognition/__init__.py
branches/redesign/Source/File.py
branches/redesign/Source/Scanner.py
branches/redesign/Source/SourceBase.py
branches/redesign/gtkGUI/ImagePreview.py
Modified: branches/redesign/PyCodeOCR.py
===================================================================
--- branches/redesign/PyCodeOCR.py 2014-08-26 18:12:03 UTC (rev 67)
+++ branches/redesign/PyCodeOCR.py 2014-08-27 06:55:49 UTC (rev 68)
@@ -107,17 +107,15 @@
def on_button_pressed(self, event):
# get image recognition and initialize
self.imageRecognition = self.recognitionChooser.getSelection()
- option = self.recognitionChooser.getOption()
- self.imageRecognition.setRotate([180])
+ recognitionProperties = self.recognitionChooser.getProperties()
# get source and initialize
self.source = self.sourceChooser.getSelection()
- self.source.setAddress(self.source.scanners[0][0])
- stdScannerData = Source.StdScannerData()
- scannerData = stdScannerData.getStdScannerData("180 deg")
+ sourceProperties = self.sourceChooser.getProperties()
# run recognition
- runRecognition = Recognition.RunRecognition(self.source, scannerData, self.imageRecognition)
+ self.progressbar.resetProgress("")
+ runRecognition = Recognition.RunRecognition(self.source, sourceProperties, self.imageRecognition, recognitionProperties)
runRecognition.connect("updateRecognition", self.onProgressUpdate)
runRecognition.connect("recognized", self.on_recognized)
t = threading.Thread(target=runRecognition)
Modified: branches/redesign/Recognition/ESR.py
===================================================================
--- branches/redesign/Recognition/ESR.py 2014-08-26 18:12:03 UTC (rev 67)
+++ branches/redesign/Recognition/ESR.py 2014-08-27 06:55:49 UTC (rev 68)
@@ -87,12 +87,9 @@
return str(uebertrag) == number[-1]
# @overwrite recognizeImage
- def recognizeImage(self, image, rotate = None):
- super(ESR,self).recognizeImage(image)
-
- # if no rotation is set, use default: [0, 90, 90, 90]
- if rotate == None:
- rotate = self.rotate
+ def recognizeImage(self, image, recognitionProperties):
+ rotate = self.rotate
+ super(ESR,self).recognizeImage(image, recognitionProperties)
# try all rotation and test if data is valid
for angle in rotate:
@@ -126,9 +123,6 @@
# return the data
return self.recognitionData.getContent()
- def activated(self):
- return ["0 deg", "90 deg", "180 deg", "270 deg"]
-
## Character correction after recogition (on basis that there should be numbers and few special chars).
#
# @test Add unittest to check correct operation of this important module/function.
Modified: branches/redesign/Recognition/ImageRecognition.py
===================================================================
--- branches/redesign/Recognition/ImageRecognition.py 2014-08-26 18:12:03 UTC (rev 67)
+++ branches/redesign/Recognition/ImageRecognition.py 2014-08-27 06:55:49 UTC (rev 68)
@@ -33,7 +33,7 @@
self.depth = 8
self.rotate = [0,90,90,90]
self.recognitionData = None
-
+
## Verify if data is valid.
# @pre image acquired and recognized
# @post information extracted
@@ -42,7 +42,7 @@
def verify(self):
(check, msg) = self.doVerification()
self.recognitionData.setValid(check)
- return (True, msg)
+ return (check, msg)
## get image and associated data
# @pre image recognized
@@ -55,13 +55,13 @@
# @param image
# @post information is extracted
# @return extracted information
- def recognizeImage(self,image):
+ def recognizeImage(self,image, recognitionProperties):
recognitionData = RecognitionData(image)
self.recognitionData = recognitionData
return self.recognitionData.getContent()
def activated(self):
- print "is activated"
+ return []
## get name
# @return name
@@ -153,10 +153,11 @@
## Run the recognition and verify the information
class RunRecognition(gobject.GObject):
## init
- def __init__(self, source, data, imageRecognition):
+ def __init__(self, source, sourceProperties, imageRecognition, recognitionProperties):
self.__gobject_init__()
self.source = source
- self.data = data
+ self.sourceProperties = sourceProperties
+ self.recognitionProperties = recognitionProperties
self.imageRecognition = imageRecognition
## call
@@ -164,7 +165,7 @@
# data if the acquired data is image, error-message otherwise
def __call__(self):
self.emit("updateRecognition","Get Image ...")
- image = self.source.getImage(self.data)
+ image = self.source.getImage(self.sourceProperties)
return self.recognize(image)
## recognize image
@@ -173,7 +174,7 @@
def recognize(self, image):
# do recognition
self.emit("updateRecognition","Recognize image ...")
- self.imageRecognition.recognizeImage(image)
+ self.imageRecognition.recognizeImage(image, self.recognitionProperties)
# verify data
self.emit("updateRecognition","Verify data ...")
@@ -187,7 +188,7 @@
return (True, self.imageRecognition.getRecognitionData().getContent())
# if data is invalid return error message
- self.emit("updateRecognition","Data is not valid.")
+ self.emit("updateRecognition","Data is not valid. "+msg)
return (False, msg)
gobject.type_register(RunRecognition)
Modified: branches/redesign/Recognition/__init__.py
===================================================================
--- branches/redesign/Recognition/__init__.py 2014-08-26 18:12:03 UTC (rev 67)
+++ branches/redesign/Recognition/__init__.py 2014-08-27 06:55:49 UTC (rev 68)
@@ -1,5 +1,3 @@
-from Recognition.ImageRecognition import ImageRecognitionBase
-from Recognition.ImageRecognition import RecognitionData
from Recognition.ImageRecognition import RunRecognition
from Recognition.Barcode import Barcode
from Recognition.DataMatrix import DataMatrix
Modified: branches/redesign/Source/File.py
===================================================================
--- branches/redesign/Source/File.py 2014-08-26 18:12:03 UTC (rev 67)
+++ branches/redesign/Source/File.py 2014-08-27 06:55:49 UTC (rev 68)
@@ -28,5 +28,9 @@
## get a new image from file
# @return image
- def getImage(self,data = None):
+ def getImage(self, data):
+ self.address = data[0]
return Image.open(self.address)
+
+ def activated(self):
+ return [["Filechooser",[]]]
Modified: branches/redesign/Source/Scanner.py
===================================================================
--- branches/redesign/Source/Scanner.py 2014-08-26 18:12:03 UTC (rev 67)
+++ branches/redesign/Source/Scanner.py 2014-08-27 06:55:49 UTC (rev 68)
@@ -50,18 +50,22 @@
def searchScanner(self):
sane.init()
self.scanners = sane.get_devices()
+
+ def getScanner(self,name):
+ for scanner in self.scanners:
+ if scanner[1] == name:
+ return scanner[0]
+ return None
## get a new image from a sane device
# @param size and position of the image
# @return image
- def getImage(self,scannerData = None):
- # if no data is given use predefined default.
- if not scannerData:
- stdScannerData = StdScannerData()
- scannerData = stdScannerData.getStdScannerData("default")
+ def getImage(self, properties):
+ name = properties[0]
+ scannerData = properties[1]
# open scanner
- self.scanner=sane.open(self.address)
+ self.scanner=sane.open(self.getScanner(name))
# get an image, return an error if it failed
try:
@@ -95,11 +99,12 @@
return sys.exc_info()[1]
+
def activated(self):
scanner_names = []
for scanner in self.scanners:
scanner_names.append(scanner[1])
- return scanner_names
+ return [["ListChooser",scanner_names],["Coordinates",["Bottom", "Left", "Top", "Right"]]]
##
@@ -120,6 +125,7 @@
self.size = [100,100]
self.color = 'gray'
self.resolution = 600
+ self.rotation = 0
## get name
# @return name
@@ -169,6 +175,12 @@
# @return resolution
def getResolution(self):
return self.resolution
+
+ def setRotation(self, rotation):
+ self.rotation = rotation
+
+ def getRotation(self):
+ return self.rotation
##
@@ -184,7 +196,7 @@
# init
def __init__(self):
## default scanning coordinates
- self.stdScannerData = [ScannerData("default"),ScannerData("0 deg"),ScannerData("90 deg"),ScannerData("180 deg"),ScannerData("270 deg"),ScannerData("A4")]
+ self.stdScannerData = [ScannerData("default"),ScannerData("Bottom"),ScannerData("Left"),ScannerData("Top"),ScannerData("Right"),ScannerData("A4")]
self.setInitialParameters()
## Generate a set of default scanning properties
@@ -192,14 +204,17 @@
def setInitialParameters(self):
self.getStdScannerData("default").setPosition(60,82)
self.getStdScannerData("default").setSize(155,20)
- self.getStdScannerData("0 deg").setPosition(60,82)
- self.getStdScannerData("0 deg").setSize(155,20)
- self.getStdScannerData("90 deg").setPosition(82,1)
- self.getStdScannerData("90 deg").setSize(20,150)
- self.getStdScannerData("180 deg").setPosition(1,3)
- self.getStdScannerData("180 deg").setSize(150,20)
- self.getStdScannerData("270 deg").setPosition(3,60)
- self.getStdScannerData("270 deg").setSize(20,150)
+ self.getStdScannerData("Bottom").setPosition(60,82)
+ self.getStdScannerData("Bottom").setSize(155,20)
+ self.getStdScannerData("Left").setPosition(82,1)
+ self.getStdScannerData("Left").setSize(20,150)
+ self.getStdScannerData("Left").setRotation(90)
+ self.getStdScannerData("Top").setPosition(1,3)
+ self.getStdScannerData("Top").setSize(150,20)
+ self.getStdScannerData("Top").setRotation(180)
+ self.getStdScannerData("Right").setPosition(3,60)
+ self.getStdScannerData("Right").setSize(20,150)
+ self.getStdScannerData("Right").setRotation(270)
# scan whole range (A4: http://www.cl.cam.ac.uk/~mgk25/iso-paper.html)
self.getStdScannerData("A4").setPosition(0,0)
self.getStdScannerData("A4").setSize(215,296)
Modified: branches/redesign/Source/SourceBase.py
===================================================================
--- branches/redesign/Source/SourceBase.py 2014-08-26 18:12:03 UTC (rev 67)
+++ branches/redesign/Source/SourceBase.py 2014-08-27 06:55:49 UTC (rev 68)
@@ -36,7 +36,7 @@
return image
def activated(self):
- print "is activated"
+ return []
## return name of source
# @return name
Modified: branches/redesign/gtkGUI/ImagePreview.py
===================================================================
--- branches/redesign/gtkGUI/ImagePreview.py 2014-08-26 18:12:03 UTC (rev 67)
+++ branches/redesign/gtkGUI/ImagePreview.py 2014-08-27 06:55:49 UTC (rev 68)
@@ -86,6 +86,24 @@
pixbuf = self.image_to_pixbuf(image)
image = gtk.Image()
image.set_from_pixbuf(pixbuf)
+
+ width = pixbuf.get_width()
+ height = pixbuf.get_height()
+
+ target_width = 300
+ target_height = 50
+
+ # get current width and height
+ width, height = pixbuf.get_width(), pixbuf.get_height()
+
+ # get scale for width and height
+ scale_width, scale_height = float(target_width)/width, float(target_height)/height
+
+ # target scale is minimum scale for width and height
+ scale = min(scale_width,scale_height)
+
+ # scale pixbuf
+ pixbuf = pixbuf.scale_simple(int(width*scale), int(height*scale), gtk.gdk.INTERP_BILINEAR)
self.main_image.set_from_pixbuf( pixbuf )
self.on_image_resize(self.main_image, "", "")
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|