chiark
/
gitweb
/
~ianmdlvl
/
cura.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
dfc9eff
)
Do not open the webcam connection permenatly till a webcam feature is used, only...
author
daid
<daid303@gmail.com>
Sun, 11 Aug 2013 09:02:08 +0000
(11:02 +0200)
committer
daid
<daid303@gmail.com>
Sun, 11 Aug 2013 09:02:08 +0000
(11:02 +0200)
Cura/gui/util/webcam.py
patch
|
blob
|
history
diff --git
a/Cura/gui/util/webcam.py
b/Cura/gui/util/webcam.py
index 6046e4c5c356d22f19e5e90117babb97ba96b5f8..a02e9673c68794109e6f405a52523fd9cc7bafdf 100644
(file)
--- a/
Cura/gui/util/webcam.py
+++ b/
Cura/gui/util/webcam.py
@@
-45,37
+45,57
@@
def getFFMPEGpath():
class webcam(object):
def __init__(self):
self._cam = None
class webcam(object):
def __init__(self):
self._cam = None
+ self._hasCamera = False
self._overlayImage = wx.Bitmap(getPathForImage('cura-overlay.png'))
self._overlayUltimaker = wx.Bitmap(getPathForImage('ultimaker-overlay.png'))
self._overlayImage = wx.Bitmap(getPathForImage('cura-overlay.png'))
self._overlayUltimaker = wx.Bitmap(getPathForImage('ultimaker-overlay.png'))
- if cv != None:
- self._cam = highgui.cvCreateCameraCapture(-1)
- elif win32vidcap != None:
- try:
- self._cam = win32vidcap.new_Dev(0, False)
- except:
- pass
+
+ #open the camera and close it to check if we have a camera, then open the camera again when we use it for the
+ # first time.
+ self._hasCamera = True
+ self._openCam()
+ if self._cam is not None:
+ print "detected camera"
+ del self._cam
+ self._cam = None
+ self._hasCamera = True
+ else:
+ self._hasCamera = False
self._doTimelapse = False
self._bitmap = None
def hasCamera(self):
self._doTimelapse = False
self._bitmap = None
def hasCamera(self):
- return self._cam != None
+ return self._hasCamera
+
+ def _openCam(self):
+ print "open camera"
+ if not self._hasCamera:
+ return False
+ if self._cam is not None:
+ return True
+
+ if cv is not None:
+ self._cam = highgui.cvCreateCameraCapture(-1)
+ elif win32vidcap is not None:
+ try:
+ self._cam = win32vidcap.new_Dev(0, False)
+ except:
+ pass
+ return self._cam is not None
def propertyPages(self):
def propertyPages(self):
- if self._cam == None:
- return []
- if cv != None:
+ if cv is not None:
#TODO Make an OpenCV property page
return []
#TODO Make an OpenCV property page
return []
- elif win32vidcap
!=
None:
+ elif win32vidcap
is not
None:
return ['Image properties', 'Format properties']
def openPropertyPage(self, pageType=0):
return ['Image properties', 'Format properties']
def openPropertyPage(self, pageType=0):
- if
self._cam == None
:
+ if
not self._openCam()
:
return
return
- if cv
!=
None:
+ if cv
is not
None:
pass
pass
- elif win32vidcap
!=
None:
+ elif win32vidcap
is not
None:
if pageType == 0:
self._cam.displaycapturefilterproperties()
else:
if pageType == 0:
self._cam.displaycapturefilterproperties()
else:
@@
-86,18
+106,18
@@
class webcam(object):
self._cam = tmp
def takeNewImage(self):
self._cam = tmp
def takeNewImage(self):
- if
self._cam == None
:
+ if
not self._openCam()
:
return
return
- if cv
!=
None:
+ 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)
frame = cv.QueryFrame(self._cam)
cv.CvtColor(frame, frame, cv.CV_BGR2RGB)
bitmap = wx.BitmapFromBuffer(frame.width, frame.height, frame.imageData)
- elif win32vidcap
!=
None:
+ elif win32vidcap
is not
None:
buffer, width, height = self._cam.getbuffer()
try:
wxImage = wx.EmptyImage(width, height)
wxImage.SetData(buffer[::-1])
buffer, width, height = self._cam.getbuffer()
try:
wxImage = wx.EmptyImage(width, height)
wxImage.SetData(buffer[::-1])
- if self._bitmap
!=
None:
+ if self._bitmap
is not
None:
del self._bitmap
bitmap = wxImage.ConvertToBitmap()
del wxImage
del self._bitmap
bitmap = wxImage.ConvertToBitmap()
del wxImage
@@
-127,7
+147,7
@@
class webcam(object):
return self._bitmap
def startTimelapse(self, filename):
return self._bitmap
def startTimelapse(self, filename):
- if
self._cam == None
:
+ if
not self._openCam()
:
return
self._cleanTempDir()
self._timelapseFilename = filename
return
self._cleanTempDir()
self._timelapseFilename = filename