diff --git a/src/analyzer/__init__.py b/src/analyzer/__init__.py --- a/src/analyzer/__init__.py +++ b/src/analyzer/__init__.py @@ -6,13 +6,28 @@ from util import BLACK,WHITE,EMPTY, expo log=logging.getLogger(__name__) +class Params: + def __init__(self): + self.tresB=30 + self.tresW=60 + self.corners=[] + + def copy(self): + res=Params() + res.tresB=self.tresB + res.tresW=self.tresW + res.corners=[p*1 for p in self.corners] # *1 forces copy + return res + + class ImageAnalyzer: def __init__(self,tresB=30,tresW=60): self.board=[[EMPTY]*19 for r in range(19)] self.grid=None - self.tresB=tresB - self.tresW=tresW + self.params=Params() + self.params.tresB=tresB + self.params.tresW=tresW # let's not concern ourselves with sizecoef and shift here anymore. we want corners to come already properly recomputed def analyze(self,image): @@ -43,8 +58,8 @@ class ImageAnalyzer: I=(red+green+blue)/255/3 m=min(red,green,blue) S=1-m/I if I!=0 else 0 - if 100*Iself.tresW: w+=1 + if 100*Iself.params.tresW: w+=1 else: e+=1 log.debug("(%d,%d) ... (b=%d,w=%d,e=%d)", row, col, b, w, e) @@ -53,7 +68,13 @@ class ImageAnalyzer: if w>=b and w>=e: return WHITE return EMPTY - def setGridCorners(self,corners): + def setParams(self,params): + self.params=params.copy() + if len(params.corners)==4: + self.grid=Grid(self.params.corners) + + def setCorners(self,corners): + self.params.corners=[p*1 for p in corners] self.grid=Grid(corners)