def takeNewImage(self): if cv != None: frame = cv.QueryFrame(self._cam) cv.CvtColor(frame, frame, cv.CV_BGR2RGB) self._bitmap = wx.BitmapFromBuffer(frame.width, frame.height, frame.imageData) elif win32vidcap != None: buffer, width, height = self._cam.getbuffer() wxImage = wx.EmptyImage(width, height) wxImage.SetData(buffer[::-1]) if self._bitmap != None: del self._bitmap self._bitmap = wxImage.ConvertToBitmap() del wxImage del buffer if self._doTimelaps: filename = os.path.normpath( os.path.join( os.path.split(__file__)[0], "../__tmp_snap", "__tmp_snap_%04d.jpg" % (self._snapshotCount))) self._snapshotCount += 1 self._bitmap.SaveFile(filename, wx.BITMAP_TYPE_JPEG) return self._bitmap
def takeNewImage(self, withOverlay=True): if not self._openCam(): return if cv is not None: frame = cv.QueryFrame(self._cam) cv.CvtColor(frame, frame, cv.CV_BGR2RGB) bitmap = wx.BitmapFromBuffer(frame.width, frame.height, frame.imageData) elif win32vidcap is not None: buffer, width, height = self._cam.getbuffer() try: wxImage = wx.EmptyImage(width, height) wxImage.SetData(buffer[::-1]) wxImage = wxImage.Mirror() if self._bitmap is not None: del self._bitmap bitmap = wxImage.ConvertToBitmap() del wxImage del buffer except: pass if withOverlay: dc = wx.MemoryDC() dc.SelectObject(bitmap) dc.DrawBitmap( self._overlayImage, bitmap.GetWidth() - self._overlayImage.GetWidth() - 5, 5, True) if profile.getMachineSetting('machine_type').startswith( 'ultimaker'): dc.DrawBitmap( self._overlayUltimaker, (bitmap.GetWidth() - self._overlayUltimaker.GetWidth()) / 2, bitmap.GetHeight() - self._overlayUltimaker.GetHeight() - 5, True) dc.SelectObject(wx.NullBitmap) self._bitmap = bitmap if self._doTimelapse: filename = os.path.normpath( os.path.join( os.path.split(__file__)[0], "../__tmp_snap", "__tmp_snap_%04d.jpg" % (self._snapshotCount))) self._snapshotCount += 1 bitmap.SaveFile(filename, wx.BITMAP_TYPE_JPEG) return self._bitmap