diff --git a/src/core.py b/src/core.py --- a/src/core.py +++ b/src/core.py @@ -1,4 +1,3 @@ -import os import multiprocessing import threading import logging @@ -27,10 +26,7 @@ class Core: self._guiMessages=MsgQueue() self._vidMessages=MsgQueue() - self._imgs=sorted(os.listdir(cfg.misc.imgDir)) - self._imgIndex=cfg.misc.defaultImage - imgPath=os.path.join(cfg.misc.imgDir,self._imgs[self._imgIndex]) - self._frame=PIL.Image.open(imgPath) + self._frame=None self._guiProc=multiprocessing.Process(name="gui", target=gui, args=(self._guiMessages,self._ownMessages)) self._guiProc.start() @@ -41,42 +37,23 @@ class Core: ) self._vidProc.start() - def setCorners(self,corners): - self.detector.setGridCorners(corners) - self.analyze() - - def setTresholds(self,tresB=None,tresW=None): - if tresB is not None: self.detector.tresB=tresB - if tresW is not None: self.detector.tresW=tresW - self.preview() - - def relativeFrame(self,step): - self._imgIndex=(self._imgIndex+step)%len(self._imgs) - imgPath=os.path.join(cfg.misc.imgDir,self._imgs[self._imgIndex]) - self._frame=PIL.Image.open(imgPath) - self._guiMessages.send("setCurrentFrame",(self._frame.copy(),gui.PREVIEW)) - self.preview() + def showFrame(self,key): + frame=self._cache.get(key) + if frame is None: + (key,frame)=self._cache.getRelative(10) + self._guiMessages.send("setCurrentFrame", (frame.copy(), gui.PREVIEW, key)) def putFrame(self,frame): - img=PIL.Image.fromarray(frame) - self._cache.put(img) - self._guiMessages.send("setCurrentFrame",(img,gui.PREVIEW)) # !! RECORDING - # self.analyze() + self._frame=PIL.Image.fromarray(frame) + k=self._cache.put(self._frame) + self._guiMessages.send("setCurrentFrame", (self._frame, gui.RECORDING, k)) + self.analyze() def sendParams(self): - params={ - "tresB": self.detector.tresB, - "tresW": self.detector.tresW - } - self._guiMessages.send("setParams",tuple(),params) + self._guiMessages.send("setParams",(self.detector.params.copy(),)) - def setParams(self,tresB=0,tresW=0): - self.detector.tresB=tresB - self.detector.tresW=tresW - - def preview(self): - if self.detector.analyze(self._frame): - self._guiMessages.send("setGameState", (self.detector.board,[])) + def setParams(self,params): + self.detector.setParams(params) def analyze(self): if self.detector.analyze(self._frame): @@ -105,8 +82,6 @@ class Core: def _handleEvent(self,e): actions={ - "setCorners": self.setCorners, - "setTresholds": self.setTresholds, "prevFrame": lambda: self.relativeFrame(-1), "nextFrame": lambda: self.relativeFrame(1), "putFrame": self.putFrame,