eyetracker-ng 0.1-1 documentation



Source code for eyetracker.camera.camera

# -*- coding: utf-8 -*-

#    This file is part of eyetracker-ng.
#    eyetracker-ng is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation, either version 3 of the License, or
#    (at your option) any later version.
#    eyetracker-ng is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    GNU General Public License for more details.
#    You should have received a copy of the GNU General Public License
#    along with eyetracker-ng. If not, see <http://www.gnu.org/licenses/>.

# authors: Sasza Kijek, Karol Augustin, Tomasz Spustek
# e-mails: saszasasha@gmail.com karol@augustin.pl tomasz@spustek.pl
# University of Warsaw 2013

from cv2 import VideoCapture
from glob import iglob

[docs]def lookForCameras(): ''' Function looks for cameras available cameras. Returns -------- dic : {Camera_i , index} where i is the 1,2,3 etc. and index is an int corresponding to the camera that should be passed on to cv2.VideoCapture or to class Camera from eyetracker.camera.camera. ''' listOfCameras = {''.join(['Camera_', str(i+1)]) : int(i) for i, cam in enumerate(iglob('/dev/video*'))} return listOfCameras
[docs]class Camera(object): ''' Communicate with the camera. Class governing the communication with the camera. Parameters ----------- camera : int the index of the camera, best taken from func lookForCameras, from eyetracker.camera.capture dic : dic{propID value} to check corresponding propIDs check opencv documentation under the term VideoCapture. They will be set in the moment of object creation. Defines -------- self.camera : index of the camera self.cap : capturing object self.frame : returns a frame from camera self.close : closes cap self.reOpen : reopens cap ''' def __init__(self, camera, dic=None): self.camera = int(camera) self.cap = VideoCapture(self.camera) if dic: for propID, value in dic.iteritems(): self.cap.set(propID, value) first_frame = self.frame()
[docs] def frame(self): ''' Read frame from camera. Returns -------- frame : np.array frame from camera ''' if self.cap.isOpened: return self.cap.read()[1] else: print 'Cap is not opened.' return None
[docs] def set(self, **kwargs): ''' Set camera parameters. Parameters ----------- kwargs : {propID : value} ''' for propID, value in kwargs.iteritems(): self.cap.set(propID, value)
[docs] def close(self): ''' Closes cap, you can reopen it with self.reOpen. ''' self.cap.release()
[docs] def reOpen(self, cameraIndex): ''' Reopens cap. ''' self.cap.open(self.camera) first_frame = self.frame()