diff --git a/src/core.py b/src/core.py --- a/src/core.py +++ b/src/core.py @@ -9,6 +9,7 @@ from analyzer import ImageAnalyzer from analyzer.framecache import FrameCache from go.core import Go, isLegalPosition from statebag import StateBag +from video import capVideo import config as cfg log=logging.getLogger(__name__) @@ -24,6 +25,7 @@ class Core: self._ownMessages=MsgQueue(self._handleEvent) self._guiMessages=MsgQueue() + self._vidMessages=MsgQueue() self._imgs=sorted(os.listdir(cfg.misc.imgDir)) self._imgIndex=cfg.misc.defaultImage @@ -32,7 +34,12 @@ class Core: self._guiProc=multiprocessing.Process(name="gui", target=gui, args=(self._guiMessages,self._ownMessages)) self._guiProc.start() - self.relativeFrame(0) + self._vidProc=multiprocessing.Process( + name="video", + target=capVideo, + args=(cfg.misc.video, self._vidMessages,self._ownMessages) + ) + self._vidProc.start() def setCorners(self,corners): self.detector.setGridCorners(corners) @@ -50,6 +57,12 @@ class Core: self._guiMessages.send("setCurrentFrame",(self._frame.copy(),gui.PREVIEW)) self.preview() + def putFrame(self,frame): + img=PIL.Image.fromarray(frame) + self._cache.put(img) + self._guiMessages.send("setCurrentFrame",(img,gui.PREVIEW)) # !! RECORDING + # self.analyze() + def sendParams(self): params={ "tresB": self.detector.tresB, @@ -67,7 +80,6 @@ class Core: def analyze(self): if self.detector.analyze(self._frame): - self._cache.put(self._frame) if isLegalPosition(self.detector.board): state=self.states.pushState(self.detector.board) rec=[] @@ -85,8 +97,10 @@ class Core: listenerThread=threading.Thread(target=lambda: self._ownMessages.listen()) listenerThread.start() - def joinGui(self): + def joinChildren(self): self._guiProc.join() + self._vidMessages.send("shutDown") + self._vidProc.join() self._ownMessages.send("!kill",("core",)) def _handleEvent(self,e): @@ -95,6 +109,7 @@ class Core: "setTresholds": self.setTresholds, "prevFrame": lambda: self.relativeFrame(-1), "nextFrame": lambda: self.relativeFrame(1), + "putFrame": self.putFrame, "fetchParams": self.sendParams, "setParams": self.setParams } @@ -102,9 +117,12 @@ class Core: return actions[actionName](*args,**kwargs) -core=Core() -core.listen() -core.joinGui() +if __name__=="__main__": + core=Core() + core.listen() + log.info("OneEye started.") + core.joinChildren() + log.info("Exited correctly.") """ core