Пример #1
0
    def snapshot(self, timeout=1):
        self.__imageCache = Queue.Queue(64)
        self.burstCount = 2
        self.openCapture()
        ret = self.__cam.StartDevice()
        if ret != fg.FCE_NOERROR:
            raise AVTCameraError(ret)
        frame = fg.FGFRAME()
        for i in xrange(2):
            ret = self.__cam.GetFrame(frame)
            if ret != fg.FCE_NOERROR:
                raise AVTCameraError(ret)
            if i != 1:
                ret = self.__cam.PutFrame(frame)
                if ret != fg.FCE_NOERROR:
                    raise AVTCameraError(ret)
                continue

            try:
                rc = self.roi
                w = rc[2]
                h = rc[3]
                flagInvalid = frame.Flags & fg.FGF_INVALID
                flagLast = frame.Flags & fg.FGF_LAST
                flagDMAHalted = frame.Flags & fg.FGF_DMAHALTED
                flagForcePost = frame.Flags & fg.FGF_FORCEPOST
                tsl = frame.RxTime.Low
                tsh = frame.RxTime.High
                if self.deinterlace is None:
                    # No deinterlace
                    rawData = fg.cdata(frame.pData, frame.Length)
                else:
                    rawData = fg.Deinterlace(frame, self.deinterlace, w, h, w,
                                             w * h)
                snapshotData = {
                    'RawData': rawData,
                    'ROI': rc,
                    'FrameId': frame.Id,
                    'Invalid': bool(flagInvalid),
                    'Last': bool(flagLast),
                    'DMAHalted': bool(flagDMAHalted),
                    'ForcePost': bool(flagForcePost),
                    'TimeStamp': tsl,
                    'BufferLength': frame.Length,
                    'Depth': 8
                }
            except Queue.Full:
                logging.debug('Queue full')
                pass
            finally:
                ret = self.__cam.PutFrame(frame)
                if ret != fg.FCE_NOERROR:
                    raise AVTCameraError(ret)

        self.__cam.StopDevice()
        self.__cam.CloseCapture()
        return snapshotData
Пример #2
0
    def snapshot(self, timeout=1):
        self.__imageCache = Queue.Queue(64)
        self.burstCount = 2
        self.openCapture()
        ret = self.__cam.StartDevice()
        if ret != fg.FCE_NOERROR:
            raise AVTCameraError(ret)
        frame = fg.FGFRAME()
        for i in xrange(2):
            ret = self.__cam.GetFrame(frame)
            if ret != fg.FCE_NOERROR:
                raise AVTCameraError(ret)
            if i != 1:
                ret = self.__cam.PutFrame(frame)
                if ret != fg.FCE_NOERROR:
                    raise AVTCameraError(ret)
                continue

            try:
                rc = self.roi
                w = rc[2]
                h = rc[3]
                flagInvalid = frame.Flags & fg.FGF_INVALID
                flagLast = frame.Flags & fg.FGF_LAST
                flagDMAHalted = frame.Flags & fg.FGF_DMAHALTED
                flagForcePost = frame.Flags & fg.FGF_FORCEPOST
                tsl = frame.RxTime.Low
                tsh = frame.RxTime.High
                if self.deinterlace is None:
                    # No deinterlace
                    rawData = fg.cdata(frame.pData, frame.Length)
                else:
                    rawData = fg.Deinterlace(frame, self.deinterlace, w, h, w, w * h)
                snapshotData = {
                    "RawData": rawData,
                    "ROI": rc,
                    "FrameId": frame.Id,
                    "Invalid": bool(flagInvalid),
                    "Last": bool(flagLast),
                    "DMAHalted": bool(flagDMAHalted),
                    "ForcePost": bool(flagForcePost),
                    "TimeStamp": tsl,
                    "BufferLength": frame.Length,
                    "Depth": 8,
                }
            except Queue.Full:
                logging.debug("Queue full")
                pass
            finally:
                ret = self.__cam.PutFrame(frame)
                if ret != fg.FCE_NOERROR:
                    raise AVTCameraError(ret)

        self.__cam.StopDevice()
        self.__cam.CloseCapture()
        return snapshotData
Пример #3
0
 def frameMonitor():
     for cnt in xrange(frameCnt):
         if self.__stopFlag:
             break
         frame = fg.FGFRAME()
         timeout = 1000
         ret = self.__cam.GetFrame(frame, timeout)
         if ret == fg.FCE_NOERROR:
             try:
                 w = rc[2]
                 h = rc[3]
                 flagInvalid = frame.Flags & fg.FGF_INVALID
                 flagLast = frame.Flags & fg.FGF_LAST
                 flagDMAHalted = frame.Flags & fg.FGF_DMAHALTED
                 flagForcePost = frame.Flags & fg.FGF_FORCEPOST
                 tsh = frame.RxTime.High
                 tsl = frame.RxTime.Low
                 if self.deinterlace is None:
                     # No deinterlace
                     rawData = fg.cdata(frame.pData, frame.Length)
                 else:
                     rawData = fg.Deinterlace(frame, self.deinterlace,
                                              w, h, w, w * h)
                 self.__imageCache.put_nowait({
                     'RawData':
                     rawData,
                     'ROI':
                     rc,
                     'FrameId':
                     frame.Id,
                     'Invalid':
                     bool(flagInvalid),
                     'Last':
                     bool(flagLast),
                     'DMAHalted':
                     bool(flagDMAHalted),
                     'ForcePost':
                     bool(flagForcePost),
                     'TimeStamp':
                     tsh * 2**32 + tsl,
                     'BufferLength':
                     frame.Length,
                     'Depth':
                     8
                 })
             except Queue.Full:
                 #                        logging.debug('Queue full')
                 pass
             finally:
                 ret = self.__cam.PutFrame(frame)
                 if ret != fg.FCE_NOERROR:
                     raise AVTCameraError(ret)
         else:
             raise AVTCameraError(ret)
Пример #4
0
 def frameMonitor():
     for cnt in xrange(frameCnt):
         if self.__stopFlag:
             break
         frame = fg.FGFRAME()
         timeout = 1000
         ret = self.__cam.GetFrame(frame, timeout)
         if ret == fg.FCE_NOERROR:
             try:
                 w = rc[2]
                 h = rc[3]
                 flagInvalid = frame.Flags & fg.FGF_INVALID
                 flagLast = frame.Flags & fg.FGF_LAST
                 flagDMAHalted = frame.Flags & fg.FGF_DMAHALTED
                 flagForcePost = frame.Flags & fg.FGF_FORCEPOST
                 tsh = frame.RxTime.High
                 tsl = frame.RxTime.Low
                 if self.deinterlace is None:
                     # No deinterlace
                     rawData = fg.cdata(frame.pData, frame.Length)
                 else:
                     rawData = fg.Deinterlace(frame, self.deinterlace, w, h, w, w * h)
                 self.__imageCache.put_nowait(
                     {
                         "RawData": rawData,
                         "ROI": rc,
                         "FrameId": frame.Id,
                         "Invalid": bool(flagInvalid),
                         "Last": bool(flagLast),
                         "DMAHalted": bool(flagDMAHalted),
                         "ForcePost": bool(flagForcePost),
                         "TimeStamp": tsh * 2 ** 32 + tsl,
                         "BufferLength": frame.Length,
                         "Depth": 8,
                     }
                 )
             except Queue.Full:
                 #                        logging.debug('Queue full')
                 pass
             finally:
                 ret = self.__cam.PutFrame(frame)
                 if ret != fg.FCE_NOERROR:
                     raise AVTCameraError(ret)
         else:
             raise AVTCameraError(ret)