def init_camera(self): # create the device self._device = hg.cvCreateCameraCapture(self._index) # Set preferred resolution cv.SetCaptureProperty(self._device, cv.CV_CAP_PROP_FRAME_WIDTH, self.resolution[0]) cv.SetCaptureProperty(self._device, cv.CV_CAP_PROP_FRAME_HEIGHT, self.resolution[1]) # and get frame to check if it's ok frame = hg.cvQueryFrame(self._device) # Just set the resolution to the frame we just got, but don't use # self.resolution for that as that would cause an infinite recursion # with self.init_camera (but slowly as we'd have to always get a # frame). self._resolution = (int(frame.width), int(frame.height)) # get fps self.fps = cv.GetCaptureProperty(self._device, cv.CV_CAP_PROP_FPS) if self.fps <= 0: self.fps = 1 / 30. if not self.stopped: self.start()
def init_camera(self): # consts have changed locations between versions 2 and 3 if self.opencvMajorVersion in (3, 4): PROPERTY_WIDTH = cv2.CAP_PROP_FRAME_WIDTH PROPERTY_HEIGHT = cv2.CAP_PROP_FRAME_HEIGHT PROPERTY_FPS = cv2.CAP_PROP_FPS elif self.opencvMajorVersion == 2: PROPERTY_WIDTH = cv2.cv.CV_CAP_PROP_FRAME_WIDTH PROPERTY_HEIGHT = cv2.cv.CV_CAP_PROP_FRAME_HEIGHT PROPERTY_FPS = cv2.cv.CV_CAP_PROP_FPS elif self.opencvMajorVersion == 1: PROPERTY_WIDTH = cv.CV_CAP_PROP_FRAME_WIDTH PROPERTY_HEIGHT = cv.CV_CAP_PROP_FRAME_HEIGHT PROPERTY_FPS = cv.CV_CAP_PROP_FPS Logger.debug('Using opencv ver.' + str(self.opencvMajorVersion)) if self.opencvMajorVersion == 1: # create the device self._device = hg.cvCreateCameraCapture(self._index) # Set preferred resolution cv.SetCaptureProperty(self._device, cv.CV_CAP_PROP_FRAME_WIDTH, self.resolution[0]) cv.SetCaptureProperty(self._device, cv.CV_CAP_PROP_FRAME_HEIGHT, self.resolution[1]) # and get frame to check if it's ok frame = hg.cvQueryFrame(self._device) # Just set the resolution to the frame we just got, but don't use # self.resolution for that as that would cause an infinite # recursion with self.init_camera (but slowly as we'd have to # always get a frame). self._resolution = (int(frame.width), int(frame.height)) # get fps self.fps = cv.GetCaptureProperty(self._device, cv.CV_CAP_PROP_FPS) elif self.opencvMajorVersion in (2, 3, 4): # create the device self._device = cv2.VideoCapture(self._index) # Set preferred resolution self._device.set(PROPERTY_WIDTH, self.resolution[0]) self._device.set(PROPERTY_HEIGHT, self.resolution[1]) # and get frame to check if it's ok ret, frame = self._device.read() # source: # http://stackoverflow.com/questions/32468371/video-capture-propid-parameters-in-opencv # noqa self._resolution = (int(frame.shape[1]), int(frame.shape[0])) # get fps self.fps = self._device.get(PROPERTY_FPS) if self.fps == 0 or self.fps == 1: self.fps = 1.0 / 30 elif self.fps > 1: self.fps = 1.0 / self.fps if not self.stopped: self.start()