예제 #1
0
파일: webcam.py 프로젝트: CNCBASHER/Cura
    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
예제 #2
0
    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