MouseTrap Status
Please state the versions and OS you are currently working with so that versioning errors can be ruled out.
Team Member Name | Installed packages | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Amber |
| ||||||||||||||||||||||||||
Logan |
| ||||||||||||||||||||||||||
John |
| ||||||||||||||||||||||||||
Nicole |
|
Please enter the status of the ongoing project below
Amber Status
12.10.2012
Full install of mousetrap complete. Config file was manipulated to include failed dependency on 'python-opencv' which has been updated and the package is now referred to as 'cv'. Other dependencies are outdated or the names have been changed as well (xlib-python, etc). New errors with 'gobject' have been identified. Here is the recorded error when running mousetrap:
ImportError: could not import gobject (error was: ImportError('When using gi.repository you must not import static modules like "gobject". Please change all occurrences of "import gobject" to "from gi.repository import GObject".',)) ^C[amber@localhost src]$ Traceback (most recent call last) File "<string>", line 1, in <module> File "mousetrap/app/main.py", line 50, in <module> from lib import httpd, dbusd, settings File "mousetrap/app/lib/httpd.py", line 31, in <module> import mouse File "mousetrap/app/lib/mouse.py", line 30, in <module> import pyatspi File "/usr/lib/python2.7/site-packages/pyatspi/__init__.py", line 17, in <module> from gi.repository import Atspi File "/usr/lib/python2.7/site-packages/gi/__init__.py", line 23, in <module> from ._gi import _API, Repository
Fix: changed import gobject to from gi.repository import GObject like suggested and changed all instances of gobject to GObject
Changed these files: mousetrap/app/main.py mousetrap/app/addons/recalc.py mousetrap/app/addons/cpu.py mousetrap/app/ui/widgets.py mousetrap/ocvfw/dev/camera.py
12.11.2012
New error is present:
/usr/lib/python2.7/site-packages/gobject/constants.py:24: Warning: g_boxed_type_register_static: assertion `g_type_from_name(name) == 0' failed import gobject._gobject Traceback (most recent call last): File "<string>", line 1, in <module> File "mousetrap/app/main.py", line 91, in start idm = pocv.get_idm(self.cfg.get("main", "algorithm")) File "mousetrap/ocvfw/pocv.py", line 43, in get_idm []) File "mousetrap/ocvfw/idm/forehead.py", line 32, in <module> from mousetrap.ocvfw.dev.camera import Capture, Point File "mousetrap/ocvfw/dev/camera.py", line 34, in <module> from mousetrap.ocvfw import _ocv as ocv File "mousetrap/ocvfw/_ocv.py", line 282, in <module> class OcvfwPython(OcvfwBase): File "mousetrap/ocvfw/_ocv.py", line 293, in OcvfwPython []) ImportError: No module named opencv.cv /usr/lib/python2.7/site-packages/gobject/constants.py:24: Warning: g_boxed_type_register_static: assertion `g_type_from_name (name) == 0' failed import gobject._gobject ^CTraceback (most recent call last): File "<string>", line 1, in <module> File "mousetrap/app/main.py", line 91, in start idm = pocv.get_idm(self.cfg.get("main", "algorithm")) File "mousetrap/ocvfw/pocv.py", line 43, in get_idm []) File "mousetrap/ocvfw/idm/forehead.py", line 32, in <module> from mousetrap.ocvfw.dev.camera import Capture, Point File "mousetrap/ocvfw/dev/camera.py", line 34, in <module> from mousetrap.ocvfw import _ocv as ocv File "mousetrap/ocvfw/_ocv.py", line 282, in <module> class OcvfwPython(OcvfwBase): File "mousetrap/ocvfw/_ocv.py", line 293, in OcvfwPython [])
Will attempt to remove instances of broken dependency opencv to the newer cv
12.17.2012
Bug for pygobject is here: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=649861
- The fix is to upgrade to version 3 of gtk?
- Changed line in configure.in file to AM_CHECK_PYMOD(cv,,,[AC_MSG_ERROR(Could not find python module cv)]) to fix opencv problem when creating make files
- Highgui no longer exists in the new API for cv (once known as opencv) and it should just be called as cv.whatever.
- cvCreateCameraCapture() no longer exists, replaced with cv.CaptureFromCAM().
New Error
/usr/lib/python2.7/site-packages/gobject/constants.py:24: Warning: g_boxed_type_register_static: assertion `g_type_from_name (name) == 0' failed import gobject._gobject DEBUG: mousetrap.ocvfw.idm -> Starting Forehead idm INFO: mousetrap.ocvfw.idm -> Forhead Algorithm loaded DEBUG: mousetrap.ocvfw.idm -> Setting Capture DEBUG: Commons -> New Singleton Add (mousetrap.ocvfw.dev.camera.Camera) VIDIOC_QUERYMENU: Invalid argument VIDIOC_QUERYMENU: Invalid argument VIDIOC_QUERYMENU: Invalid argument DEBUG: ocvfw -> cmStartCamera: Camera Started DEBUG: Camera -> Loaded backend OcvfwPython DEBUG: OcvfwBase -> Changed lk_swap value to True INFO: mousetrap - Idm loaded and started Traceback (most recent call last): File "<string>", line 1, in <module> File "mousetrap/app/main.py", line 101, in start self.itf = MainGui(self) File "mousetrap/app/ui/main.py", line 54, in __init__ self.script = self.ctr.script() File "mousetrap/app/main.py", line 229, in script return get_script_class(self.cfg.get("scripts", "name"))() File "mousetrap/app/ui/scripts/__init__.py", line 45, in get_script_class script = __import__(script_name, globals(), locals()) File "mousetrap/app/ui/scripts/joystick.py", line 36, in <module> from ..widgets import Mapper File "mousetrap/app/ui/widgets.py", line 236, in <module> GObject.type_register(Mapper) TypeError: argument must be a GObject subclass
Will look into gtk and GObject for error
12.19.2012
- In this particular file: widgets.py, we actually want to import gobject directly and type_register the Mapper using gobject. After doing this, I have the Window pop up and now a new error has come up.
New Error
/usr/lib/python2.7/site- packages/gobject/constants.py:24: Warning: g_boxed_type_register_static: assertion `g_type_from_name (name) == 0' failed import gobject._gobject DEBUG: mousetrap.ocvfw.idm -> Starting Forehead idm INFO: mousetrap.ocvfw.idm -> Forhead Algorithm loaded DEBUG: mousetrap.ocvfw.idm -> Setting Capture DEBUG: Commons -> New Singleton Add (mousetrap.ocvfw.dev.camera.Camera) VIDIOC_QUERYMENU: Invalid argument VIDIOC_QUERYMENU: Invalid argument VIDIOC_QUERYMENU: Invalid argument DEBUG: ocvfw -> cmStartCamera: Camera Started DEBUG: Camera -> Loaded backend OcvfwPython DEBUG: OcvfwBase -> Changed lk_swap value to True INFO: mousetrap - Idm loaded and started DEBUG: ui.main - Interface Built DEBUG: ui.main - Addons loaded INFO: mousetrap - MouseTrap's Interface Built and Loaded Traceback (most recent call last): File "mousetrap/ocvfw/dev/camera.py", line 116, in sync Camera.query_image() File "mousetrap/ocvfw/_ocv.py", line 125, in query_image frame = co.hg.cvQueryFrame( self.capture ) AttributeError: 'module' object has no attribute 'cvQueryFrame' Traceback (most recent call last): File "mousetrap/app/main.py", line 238, in update_frame self.itf.update_frame(self.idm.get_capture(), self.idm.get_pointer()) File "mousetrap/ocvfw/idm/forehead.py", line 128, in get_capture self.get_forehead() File "mousetrap/ocvfw/idm/forehead.py", line 148, in get_forehead face = self.cap.get_area(commons.haar_cds['Face']) File "mousetrap/ocvfw/dev/camera.py", line 373, in get_area return Camera.get_haar_points(haar_csd) File "mousetrap/ocvfw/_ocv.py", line 335, in get_haar_points cascade = co.cv.cvLoadHaarClassifierCascade( haarCascade, self.imgSize ) AttributeError: 'module' object has no attribute 'cvLoadHaarClassifierCascade' /usr/local/bin/mousetrap: line 139: 6073 Segmentation fault (core dumped) /usr/bin/python -c "import mousetrap.app.main as mousetrap; mousetrap.Controller().start();" "$ARGS"
- hg no longer exists. _ocv.py should be looked over for inconsistencies with new api
- Changed line 125 in _ocv.py to frame = co.hg.QueryFrame( self.capture )
_ocv needs to change many dependencies for the new api
- Changed import in widgets.py to 'import gobject' and changed to 'gobject.register_type(Mapper)'
I have no other error besides this:
/usr/lib/python2.7/site- packages/gobject/constants.py:24: Warning: g_boxed_type_register_static: assertion `g_type_from_name (name) == 0' failed import gobject._gobject
and this:
(mousetrap:19550): Gtk-WARNING **: Unable to locate theme engine in module_path: "clearlooks",
I believe this is explained in this reported bug: https://bugs.launchpad.net/bzr-gtk/+bug/923824
- There is a whole big issue with dependencies surrounding pygobject, pygtk, and gtk that are causing errors.
12.20.2012
Looked into error with pygobject, gtk and pygtk and found that the import gi must be the first import in main.py
1.7.2013
New error
/usr/lib/python2.7/site-packages/gobject/constants.py:24: Warning: g_boxed_type_register_static: assertion `g_type_from_name (name) == 0' failed import gobject._gobject DEBUG: mousetrap.ocvfw.idm -> Starting Forehead idm INFO: mousetrap.ocvfw.idm -> Forhead Algorithm loaded DEBUG: mousetrap.ocvfw.idm -> Setting Capture DEBUG: Commons -> New Singleton Add (mousetrap.ocvfw.dev.camera.Camera) CvCapture_OpenNI::CvCapture_OpenNI : Failed to enumerate production trees: Can't create any node of the requested type! DEBUG: ocvfw -> cmStartCamera: Camera Started DEBUG: Camera -> Loaded backend OcvfwPython DEBUG: OcvfwBase -> Changed lk_swap value to True INFO: mousetrap - Idm loaded and started DEBUG: ui.main - Interface Built DEBUG: ui.main - Addons loaded INFO: mousetrap - MouseTrap's Interface Built and Loaded /usr/local/bin/mousetrap: line 139: 3335 Segmentation fault (core dumped) /usr/bin/python -c "import mousetrap.app.main as mousetrap; mousetrap.Controller().start();" "$ARGS"
1.8.2013
Error:
File "mousetrap/ocvfw/_ocv.py", line 332, in get_haar_points cascade = co.cv.CvLoadHaarClassifierCascade( haarCascade, self.imgSize ) AttributeError: 'module' object has no attribute 'CvLoadHaarClassifierCascade'
Fix::
- LoadHaarClassifier -> Load
Error:
File "mousetrap/ocvfw/_ocv.py", line 332, in get_haar_points cascade = co.cv.Load( haarCascade, self.imgSize ) AttributeError: Camera instance has no attribute 'imgSize'
Fix:
- imgSize -> removed
Error:
File "mousetrap/ocvfw/_ocv.py", line 337, in get_haar_points co.cv.Resize( self.img, self.small_img, co.cv.CV_INTER_LINEAR ) AttributeError: Camera instance has no attribute 'small_img'
Fix:
- Resize -> cvResize | cvResize -> OK
Receiving new error (same as Logan)
/usr/lib/python2.7/site-packages/gobject/constants.py:24: Warning: g_boxed_type_register_static: assertion `g_type_from_name (name) == 0' failed import gobject._gobject DEBUG: mousetrap.ocvfw.idm -> Starting Forehead idm INFO: mousetrap.ocvfw.idm -> Forhead Algorithm loaded DEBUG: mousetrap.ocvfw.idm -> Setting Capture DEBUG: Commons -> New Singleton Add (mousetrap.ocvfw.dev.camera.Camera) VIDIOC_QUERYMENU: Invalid argument VIDIOC_QUERYMENU: Invalid argument VIDIOC_QUERYMENU: Invalid argument DEBUG: ocvfw -> cmStartCamera: Camera Started DEBUG: Camera -> Loaded backend OcvfwPython DEBUG: OcvfwBase -> Changed lk_swap value to True INFO: mousetrap - Idm loaded and started DEBUG: ui.main - Interface Built DEBUG: ui.main - Addons loaded Problems loading mousetrap.ocvfw.idm.eyes INFO: mousetrap - MouseTrap's Interface Built and Loaded Traceback (most recent call last): File "mousetrap/ocvfw/dev/camera.py", line 116, in sync Camera.query_image() File "mousetrap/ocvfw/_ocv.py", line 127, in query_image self.img = co.cv.cvCreateImage ( self.imgSize, 8, 3 ) AttributeError: 'module' object has no attribute 'cvCreateImage' Traceback (most recent call last): File "mousetrap/app/main.py", line 238, in update_frame self.itf.update_frame(self.idm.get_capture(), self.idm.get_pointer()) File "mousetrap/ocvfw/idm/forehead.py", line 128, in get_capture self.get_forehead() File "mousetrap/ocvfw/idm/forehead.py", line 148, in get_forehead face = self.cap.get_area(commons.haar_cds['Face']) File "mousetrap/ocvfw/dev/camera.py", line 373, in get_area return Camera.get_haar_points(haar_csd) File "mousetrap/ocvfw/_ocv.py", line 337, in get_haar_points co.cv.Resize( self.img, self.small_img, co.cv.CV_INTER_LINEAR ) AttributeError: Camera instance has no attribute 'small_img' /usr/local/bin/mousetrap: line 139: 8105 Segmentation fault (core dumped) /usr/bin/python -c "import mousetrap.app.main as mousetrap; mousetrap.Controller().start();" "$ARGS"
1.9.2013
Looks like there are some inconsistencies with opencv. Going through and removing outdated methods. I was also looking to see how the camera is initiated, reading through code.
1.11.2013
Was able to get rid of the small_img error after trying several adaptations of opencv methods.
- cvSize no longer exists and the python tuple (int, int) should be used instead.
Have new error:
Traceback (most recent call last): File "mousetrap/app/main.py", line 238, in update_frame self.itf.update_frame(self.idm.get_capture(), self.idm.get_pointer()) File "mousetrap/ocvfw/idm/forehead.py", line 128, in get_capture self.get_forehead() File "mousetrap/ocvfw/idm/forehead.py", line 148, in get_forehead face = self.cap.get_area(commons.haar_cds['Face']) File "mousetrap/ocvfw/dev/camera.py", line 373, in get_area return Camera.get_haar_points(haar_csd) File "mousetrap/ocvfw/_ocv.py", line 350, in get_haar_points co.cv.ClearMemStorage( self.storage ) AttributeError: 'module' object has no attribute 'ClearMemStorage' /usr/local/bin/mousetrap: line 139: 6550 Segmentation fault (core dumped) /usr/bin/python -c "import mousetrap.app.main as mousetrap; mousetrap.Controller().start();" "$ARGS"
- ClearMemStorage does not need to be performed because of upgrades to opencv api. See http://opencv-users.1802565.n2.nabble.com/Why-is-cvClearMemStorage-not-exposed-through-the-Python-interface-td7229752.html
New error:
Traceback (most recent call last): File "mousetrap/app/main.py", line 238, in update_frame self.itf.update_frame(self.idm.get_capture(), self.idm.get_pointer()) File "mousetrap/app/ui/main.py", line 186, in update_frame self.cap_image.set_from_pixbuf(cap.to_gtk_buff().scale_simple(200, 160, gtk.gdk.INTERP_BILINEAR)) File "mousetrap/ocvfw/dev/camera.py", line 194, in to_gtk_buff buff = gtk.gdk.pixbuf_new_from_data(img.imageData, AttributeError: 'cv2.cv.iplimage' object has no attribute 'imageData' DEBUG: ocvfw -> <iplimage(nChannels=1 width=640 height=480 widthStep=640 )> DEBUG: ocvfw -> <iplimage(nChannels=1 width=640 height=480 widthStep=640 )> DEBUG: ocvfw -> <iplimage(nChannels=1 width=640 height=480 widthStep=640 )> DEBUG: ocvfw -> <iplimage(nChannels=1 width=640 height=480 widthStep=640 )> /usr/local/bin/mousetrap: line 139: 6816 Segmentation fault (core dumped) /usr/bin/python -c "import mousetrap.app.main as mousetrap; mousetrap.Controller().start();" "$ARGS"
1.14.2013
New error:
/usr/lib/python2.7/site-packages/gobject/constants.py:24: Warning: g_boxed_type_register_static: assertion `g_type_from_name (name) == 0' failed import gobject._gobject DEBUG: Ocvfw -> <module 'mousetrap.ocvfw.idm.forehead' from 'mousetrap/ocvfw/idm/forehead.pyc'> DEBUG: mousetrap.ocvfw.idm -> Starting Forehead idm INFO: mousetrap.ocvfw.idm -> Forhead Algorithm loaded DEBUG: mousetrap.ocvfw.idm -> Setting Capture DEBUG: Commons -> New Singleton Add (mousetrap.ocvfw.dev.camera.Camera) CvCapture_OpenNI::CvCapture_OpenNI : Failed to enumerate production trees: Can't create any node of the requested type! ^^^^^^^^^^^^^^^^^^^^^^^^ DEBUG: ocvfw -> cmStartCamera: Camera Started DEBUG: Camera -> Loaded backend OcvfwPython DEBUG: ocvfw -> None DEBUG: OcvfwBase -> Changed lk_swap value to True INFO: mousetrap - Idm loaded and started DEBUG: ui.main - Interface Built DEBUG: ui.main - Addons loaded INFO: mousetrap - MouseTrap's Interface Built and Loaded /usr/local/bin/mousetrap: line 139: 5613 Segmentation fault (core dumped) /usr/bin/python -c "import mousetrap.app.main as mousetrap; mousetrap.Controller().start();" "$ARGS"
New error:
/usr/lib/python2.7/site- packages/gobject/constants.py:24: Warning: g_boxed_type_register_static: assertion `g_type_from_name (name) == 0' failed import gobject._gobject DEBUG: mousetrap.ocvfw.idm -> Starting Forehead idm INFO: mousetrap.ocvfw.idm -> Forhead Algorithm loaded DEBUG: mousetrap.ocvfw.idm -> Setting Capture DEBUG: Commons -> New Singleton Add (mousetrap.ocvfw.dev.camera.Camera) VIDIOC_QUERYMENU: Invalid argument VIDIOC_QUERYMENU: Invalid argument VIDIOC_QUERYMENU: Invalid argument DEBUG: ocvfw -> cmStartCamera: Camera Started DEBUG: Camera -> Loaded backend OcvfwPython DEBUG: OcvfwBase -> Changed lk_swap value to True INFO: mousetrap - Idm loaded and started DEBUG: ui.main - Interface Built DEBUG: ui.main - Addons loaded INFO: mousetrap - MouseTrap's Interface Built and Loaded Help on iplimage object: class iplimage(__builtin__.object) Methods defined here: __delitem__(...) x.__delitem__(y) <==> del x[y] __getitem__(...) x.__getitem__(y) <==> x[y] __repr__(...) x.__repr__() <==> repr(x) __setitem__(...) x.__setitem__(i, y) <==> x[i]=y tostring(...) ---------------------------------------------------------------------- Data descriptors defined here: channels nChannels depth depth height height nChannels nChannels origin origin width width ---------------------------------------------------------------------- Data and other attributes defined here: __new__ = <built-in method __new__ of type object> T.__new__(S, ...) -> a new object with type S, a subtype of T DEBUG: ui.main - None DEBUG: ui.main -> None Traceback (most recent call last): File "mousetrap/app/main.py", line 238, in update_frame self.itf.update_frame(self.idm.get_capture(), self.idm.get_pointer()) File "mousetrap/app/ui/main.py", line 186, in update_frame self.cap_image.set_from_pixbuf(cap.to_gtk_buff().sc ale_simple(200, 160, gtk.gdk.INTERP_BILINEAR)) File "mousetrap/ocvfw/dev/camera.py", line 195, in to_gtk_buff buff = gtk.gdk.pixbuf_new_from_data(img.data, AttributeError: 'cv2.cv.iplimage' object has no attribute 'data' /usr/local/bin/mousetrap: line 139: 2209 Segmentation fault (core dumped) /usr/bin/python -c "import mousetrap.app.main as mousetrap; mousetrap.Controller().start();" "$ARGS"
- Fix: replaced imageData with tostring()
1.15.2013
New error:
Traceback (most recent call last): File "mousetrap/app/main.py", line 238, in update_frame self.itf.update_frame(self.idm.get_capture(), self.idm.get_pointer()) File "mousetrap/app/ui/main.py", line 186, in update_frame self.cap_image.set_from_pixbuf(cap.to_gtk_buff().scale_simple(200, 160, gtk.gdk.INTERP_BILINEAR)) File "mousetrap/ocvfw/dev/camera.py", line 198, in to_gtk_buff img.widthStep ) AttributeError: 'cv2.cv.iplimage' object has no attribute 'widthStep' /usr/local/bin/mousetrap: line 139: 3991 Segmentation fault (core dumped) /usr/bin/python -c "import mousetrap.app.main as mousetrap; mousetrap.Controller().start();" "$ARGS"
- Fix widthStep does not exist, use width
1.16.2013
New Error:
Traceback (most recent call last): File "mousetrap/app/main.py", line 238, in update_frame self.itf.update_frame(self.idm.get_capture(), self.idm.get_pointer()) File "mousetrap/ocvfw/idm/forehead.py", line 127, in get_capture self.get_forehead() File "mousetrap/ocvfw/idm/forehead.py", line 147, in get_forehead face = self.cap.get_area(commons.haar_cds['Face']) File "mousetrap/ocvfw/dev/camera.py", line 373, in get_area return Camera.get_haar_points(haar_csd) File "mousetrap/ocvfw/_ocv.py", line 350, in get_haar_points for r in points] AttributeError: 'module' object has no attribute 'Point' /usr/local/bin/mousetrap: line 139: 4940 Segmentation fault (core dumped) /usr/bin/python -c "import mousetrap.app.main as mousetrap; mousetrap.Controller().start();" "$ARGS"
- Point no longer exists in the python version of the api. Now tuples are used. Looking into how the points are used in the program to see if it can be changed.
1.17.2013
- Mousetrap has its own internal class for Point, so it could be used instead of cvPoint.
- Definition and explanation of optical flow: http://centeye.com/technology/optical-flow/
- Found a good tutorial of optical flow here: http://dasl.mem.drexel.edu/~noahKuntz/openCVTut9.html
- Mousetrap uses the Lucas-kanade method of detection (even though it is incorrect in the comments)
- Here is the docs on motion detecting: http://docs.opencv.org/modules/video/doc/motion_analysis_and_object_tracking.html
1.21.2013
- Fixed most of the Point errors; make sure cvPoint is just a python tuple
- Load() is the new cvLoadHaarClassifierCascade()
- The points variable in _ocv.py looks like this: ((173, 130, 145, 145), 15) but it is used as if it was a series of points, so that was changed to r[0][0] and so forth.
Some examples of point errors/changes:
Error
Traceback (most recent call last): File "mousetrap/app/main.py", line 238, in update_frame self.itf.update_frame(self.idm.get_capture(), self.idm.get_pointer()) File "mousetrap/ocvfw/idm/forehead.py", line 127, in get_capture self.get_forehead() File "mousetrap/ocvfw/idm/forehead.py", line 163, in get_forehead areas = [ (pt[1].x - pt[0].x)*(pt[1].y - pt[0].y) for pt in eyes ]
Changes
if eyes: areas = [ (pt[1][0] - pt[0][0])*(pt[1][1] - pt[0][1]) for pt in eyes ] #replaced x with [0] and y with [1]
1.23.2013
New Error:
OpenCV Error: Incorrect size of input array () in cvGetSubRect, file /builddir/build/BUILD/OpenCV-2.3.1/modules/core/src/array.cpp, line 1262 Traceback (most recent call last): File "mousetrap/app/main.py", line 238, in update_frame self.itf.update_frame(self.idm.get_capture(), self.idm.get_pointer()) File "mousetrap/ocvfw/idm/forehead.py", line 127, in get_capture self.get_forehead() File "mousetrap/ocvfw/idm/forehead.py", line 160, in get_forehead "height" : endF[1] - startF[1]}, (startF[0], startF[1]) )# replaced x and y File "mousetrap/ocvfw/dev/camera.py", line 378, in get_area return Camera.get_haar_roi_points(haar_csd, roi, orig) File "mousetrap/ocvfw/_ocv.py", line 378, in get_haar_roi_points imageROI = co.cv.GetSubRect(self.img, rect) cv2.error * had to change some of the code for points, so this could have resulted from that, but I'm not sure what it's particularly building...any ideas?
The parameters of the self.image are: <iplimage(nChannels=3 width=640 height=480 widthStep=1920 )>
The rect parameters are: (318, 190, 205, 333)
- Maybe we can use the built in opencv method for tracking features? http://opencv.willowgarage.com/documentation/python/imgproc_feature_detection.html#goodfeaturestotrack
Getting Closer...
- It is detecting objects and I have it printing the specs, so it's finding some..
DEBUG: ocvfw -> cmGetHaarPoints: detected some matches DEBUG: ocvfw -> <iplimage(nChannels=3 width=640 height=480 widthStep=1920 )> DEBUG: ocvfw -> (243, 192, 229, 280) DEBUG: ocvfw -> cmGetHaarPoints: detected some matches DEBUG: ocvfw -> <iplimage(nChannels=3 width=640 height=480 widthStep=1920 )> DEBUG: ocvfw -> (237, 184, 243, 296) DEBUG: ocvfw -> cmGetHaarPoints: detected some matches DEBUG: ocvfw -> <iplimage(nChannels=3 width=640 height=480 widthStep=1920 )> DEBUG: ocvfw -> (240, 186, 240, 294) DEBUG: ocvfw -> cmGetHaarPoints: detected some matches DEBUG: ocvfw -> <iplimage(nChannels=3 width=640 height=480 widthStep=1920 )> DEBUG: ocvfw -> (243, 190, 234, 287) DEBUG: ocvfw -> cmGetHaarPoints: detected some matches DEBUG: ocvfw -> <iplimage(nChannels=3 width=640 height=480 widthStep=1920 )> DEBUG: ocvfw -> (240, 189, 238, 289) DEBUG: ocvfw -> cmGetHaarPoints: detected some matches DEBUG: ocvfw -> <iplimage(nChannels=3 width=640 height=480 widthStep=1920 )> DEBUG: ocvfw -> (241, 190, 234, 285) DEBUG: ocvfw -> ((46, 71, 93, 43), 3) DEBUG: ocvfw -> cmGetHaarROIPoints: detected some matches
Current error with optical flow:
optical_flow = co.cv.CalcOpticalFlowPyrLK ( self.prevGrey, self.grey, self.prevPyramid, self.pyramid, self.img_lkpoints["last"], len( self.img_lkpoints["last"] ), (20, 20), 3, len( self.img_lkpoints["last"] ), None, (co.cv.CV_TERMCRIT_ITER|co.cv.CV_TERMCRIT_EPS, 20, 0.03), 0)
1.24.2013
- TermCriteria doesn't exist, and there's little documentation on the method on how to create the calculation for optical flow for the new version of cv.
Description of CalcOpticalFlowPyrLK()
- Does not have an example or descriptive errors when fails.
Parameters: prevImg – first 8-bit input image or pyramid constructed by buildOpticalFlowPyramid(). nextImg – second input image or pyramid of the same size and the same type as prevImg. prevPts – vector of 2D points for which the flow needs to be found; point coordinates must be single-precision floating-point numbers. nextPts – output vector of 2D points (with single-precision floating-point coordinates) containing the calculated new positions of input features in the second image; when OPTFLOW_USE_INITIAL_FLOW flag is passed, the vector must have the same size as in the input. status – output status vector; each element of the vector is set to 1 if the flow for the corresponding features has been found, otherwise, it is set to 0. err – output vector of errors; each element of the vector is set to an error for the corresponding feature, type of the error measure can be set in flags parameter; if the flow wasn’t found then the error is not defined (use the status parameter to find such cases). winSize – size of the search window at each pyramid level. maxLevel – 0-based maximal pyramid level number; if set to 0, pyramids are not used (single level), if set to 1, two levels are used, and so on; if pyramids are passed to input then algorithm will use as many levels as pyramids have but no more than maxLevel. criteria – parameter, specifying the termination criteria of the iterative search algorithm (after the specified maximum number of iterations criteria.maxCount or when the search window moves by less than criteria.epsilon. flags – operation flags: OPTFLOW_USE_INITIAL_FLOW uses initial estimations, stored in nextPts; if the flag is not set, then prevPts is copied to nextPts and is considered the initial estimate. OPTFLOW_LK_GET_MIN_EIGENVALS use minimum eigen values as an error measure (see minEigThreshold description); if the flag is not set, then L1 distance between patches around the original and a moved point, divided by number of pixels in a window, is used as a error measure. minEigThreshold – the algorithm calculates the minimum eigen value of a 2x2 normal matrix of optical flow equations (this matrix is called a spatial gradient matrix in [Bouguet00]), divided by number of pixels in a window; if this value is less than minEigThreshold, then a corresponding feature is filtered out and its flow is not processed, so it allows to remove bad points and get a performance boost
1.25.2013
New Error:
Traceback (most recent call last): File "mousetrap/app/main.py", line 238, in update_frame self.itf.update_frame(self.idm.get_capture(), self.idm.get_pointer()) File "mousetrap/ocvfw/idm/forehead.py", line 127, in get_capture self.get_forehead() File "mousetrap/ocvfw/idm/forehead.py", line 171, in get_forehead self.cap.add( Point("point", "forehead", ( X, Y ), parent=self.cap, follow=True) ) File "mousetrap/ocvfw/dev/camera.py", line 333, in add Camera.set_lkpoint(graphic) File "mousetrap/ocvfw/_ocv.py", line 166, in set_lkpoint (co.cv.CV_TERMCRIT_ITER | co.cv.CV_TERMCRIT_EPS, 20, 0.03)) TypeError: CvSize argument 'zero_zone' expects two integers Traceback (most recent call last): File "mousetrap/ocvfw/dev/camera.py", line 131, in sync Camera.show_lkpoints() File "mousetrap/ocvfw/_ocv.py", line 205, in show_lkpoints (co.cv.CV_TERMCRIT_ITER|co.cv.CV_TERMCRIT_EPS, 20, 0.03), 0) TypeError: Expected tuple for CvPoint2D32f argument 'prev_features'
/usr/local/bin/mousetrap: line 139: 4335 Segmentation fault (core dumped) /usr/bin/python -c "import mousetrap.app.main as mousetrap; mousetrap.Controller().start();" "$ARGS"
- The structure for CalcOpticalFlowPyrLK() is exactly from: https://code.ros.org/trac/opencv/browser/trunk/opencv/tests/python/test.py?rev=3187
Which is testing the actual method, and it still shows an error.
1.28.2013
- I've been playing around with cv2 and trying to get a test file running and encountered a possible future error with the api.
Apparently, it cannot work for all video drivers, and might potentially not work for mine. It's discussed here in this thread: http://stackoverflow.com/questions/11420748/setting-camera-parameters-in-opencv-python
Error:
[root@amber src]# python testcv.py VIDIOC_QUERYMENU: Invalid argument VIDIOC_QUERYMENU: Invalid argument VIDIOC_QUERYMENU: Invalid argument VIDIOC_QUERYMENU: Invalid argument VIDIOC_QUERYMENU: Invalid argument VIDIOC_QUERYMENU: Invalid argument HIGHGUI ERROR: V4L: Property Exposure(15) not supported by device VIDIOC_QUERYMENU: Invalid argument VIDIOC_QUERYMENU: Invalid argument VIDIOC_QUERYMENU: Invalid argument libv4l2: error setting pixformat: Device or resource busy HIGHGUI ERROR: libv4l unable to ioctl S_FMT libv4l2: error setting pixformat: Device or resource busy libv4l1: error setting pixformat: Device or resource busy HIGHGUI ERROR: libv4l unable to ioctl VIDIOCSPICT CvCapture_OpenNI::CvCapture_OpenNI : Failed to enumerate production trees: Can't create any node of the requested type!
It has something to do with the exposure times (so the camera will endlessly capture video)
- Here is a little program that will capture video from the webcam and display it (endlessly unless you CTRL+C)
""" This module is used for testing the opencv2 capabilities """ import cv2 #get webcam feed capture = cv2.VideoCapture(0) while True: #combines VideoCapture.grab() and VideoCapture.retrieve() retrieval_value, image = capture.read() #shows captured image in a window cv2.imshow("webcam", image) #will stop capture with capatible webcam if cv2.waitKey(10) == 27: break
1.29.2013
- found a good source for samples to change to cv2 http://fossies.org/dox/OpenCV-2.4.3/interoperability__with__OpenCV__1_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627
- I believe the entire project uses a framework surrounding opencv called ctypes_opencv... http://code.google.com/p/ctypes-opencv/ (ONLY SUPPORTS V 1.0 and V 1.1 of opencv)
* this is the new version (completely remodeled) pyopencv: http://code.google.com/p/pyopencv/
1.31.2013
- This proved to be helpful in looking at the cv2 error I encountered, I think it is either a iplimage not being excepted in GetSubRect() or it has wrong dimensions for the rectangle. http://stackoverflow.com/questions/11637523/is-there-a-difference-between-opencvs-cv-getsubrect-and-pils-crop
2.4.2013
Now I have a repeating line and nothing happens. It could be that my webcam isn't compatible. Here's the error.
DEBUG: ocvfw -> cmGetHaarPoints: detected some matches
- I noticed that the blank window that always appears is a gtk window object and should be displaying a menu, so I started using the command line python utility to fuss around with gtk and see if I can replicate something and try to fix the code in MT.
Logan Status
12/15/12
- Was successfully able to fix opencv issue by changing the single line "import opencv" in "configure" to be "import cv".
- When trying to run mousetrap receiving error "ImportError: No module named mousetrap.app.main"
- As Amber had mentioned, must be in the src directory before running the "mousetrap" command. Thank you =]
- >> Fix: Are you in the src directory when you run the command 'mousetrap', for the moustrap.app.main error? (Amber)
- As Amber had mentioned, must be in the src directory before running the "mousetrap" command. Thank you =]
12/16/12
- ImportError: could not import gobject (error was: ImportError('When using gi.repository you must not import static modules like "gobject". Please change all occurrences of "import gobject" to "from gi.repository import GObject".',))
- Changed all instances by running
grep -rl 'import gobject' ./ | xargs sed -i 's/import gobject/from gi.repository import GObject/g
- Then changed all instances of gobject to GObject with command
grep -rl 'gobject' ./ | xargs sed -i 's/gobject/GObject/g
12/19/12
- New Error:
/usr/lib64/python2.7/site-packages/gobject/constants.py:24: Warning: g_boxed_type_register_static: assertion `g_type_from_name (name) == 0' failed import gobject._gobject [foss2serve@foss2serve src]$ Traceback (most recent call last): File "<string>", line 1, in <module> File "mousetrap/app/main.py", line 91, in start idm = pocv.get_idm(self.cfg.get("main", "algorithm")) File "mousetrap/ocvfw/pocv.py", line 43, in get_idm []) File "mousetrap/ocvfw/idm/forehead.py", line 32, in <module> from mousetrap.ocvfw.dev.camera import Capture, Point File "mousetrap/ocvfw/dev/camera.py", line 34, in <module> from mousetrap.ocvfw import _ocv as ocv File "mousetrap/ocvfw/_ocv.py", line 282, in <module> class OcvfwPython(OcvfwBase): File "mousetrap/ocvfw/_ocv.py", line 298, in OcvfwPython []) ImportError: No module named highgui
- Changed "opencv.highgui" in mousetrap/ocvfw/backends/OcvfwPython.py to "cv"
- Another error:
/usr/lib64/python2.7/site-packages/gobject/constants.py:24: Warning: g_boxed_type_register_static: assertion `g_type_from_name (name) == 0' failed import gobject._gobject [foss2serve@foss2serve src]$ DEBUG: mousetrap.ocvfw.idm -> Starting Forehead idm INFO: mousetrap.ocvfw.idm -> Forhead Algorithm loaded DEBUG: mousetrap.ocvfw.idm -> Setting Capture DEBUG: Commons -> New Singleton Add (mousetrap.ocvfw.dev.camera.Camera) Traceback (most recent call last): File "<string>", line 1, in <module> File "mousetrap/app/main.py", line 93, in start self.idm.set_capture(self.cfg.getint("cam", "inputDevIndex")) File "mousetrap/ocvfw/idm/forehead.py", line 108, in set_capture self.cap = Capture(async=True, idx=cam, backend="OcvfwPython") File "mousetrap/ocvfw/dev/camera.py", line 71, in __init__ Camera.start_camera() File "mousetrap/ocvfw/_ocv.py", line 111, in start_camera self.capture = co.hg.cvCreateCameraCapture( int(self.idx) ) AttributeError: 'module' object has no attribute 'cvCreateCameraCapture'
- As Amber mentioned, 'cvCreateCameraCapture' no longer exhists. Replaced the line "self.capture = co.hg.cvCreateCameraCapture( int(self.idx) )" with self.capture = co.hg.CaptureFromCAM( int(self.idx) ) in mousetrap/ocvfw/backends/OcvfwBase.py and mousetrap/ocvfw/_ocv.py.
- Now receiving the same GObject error as Amber:
Warning: g_boxed_type_register_static: assertion `g_type_from_name (name) == 0' failed import gobject._gobject [foss2serve@foss2serve src]$ DEBUG: mousetrap.ocvfw.idm -> Starting Forehead idm INFO: mousetrap.ocvfw.idm -> Forhead Algorithm loaded DEBUG: mousetrap.ocvfw.idm -> Setting Capture DEBUG: Commons -> New Singleton Add (mousetrap.ocvfw.dev.camera.Camera) VIDIOC_QUERYMENU: Invalid argument VIDIOC_QUERYMENU: Invalid argument VIDIOC_QUERYMENU: Invalid argument DEBUG: ocvfw -> cmStartCamera: Camera Started DEBUG: Camera -> Loaded backend OcvfwPython DEBUG: OcvfwBase -> Changed lk_swap value to True INFO: mousetrap - Idm loaded and started Traceback (most recent call last): File "<string>", line 1, in <module> File "mousetrap/app/main.py", line 101, in start self.itf = MainGui(self) File "mousetrap/app/ui/main.py", line 54, in __init__ self.script = self.ctr.script() File "mousetrap/app/main.py", line 229, in script return get_script_class(self.cfg.get("scripts", "name"))() File "mousetrap/app/ui/scripts/__init__.py", line 45, in get_script_class script = __import__(script_name, globals(), locals()) File "mousetrap/app/ui/scripts/joystick.py", line 36, in <module> from ..widgets import Mapper File "mousetrap/app/ui/widgets.py", line 237, in <module> GObject.type_register(Mapper) TypeError: argument must be a GObject subclass
- As Amber mentioned, widget.py must use gobject and not GObject.
12/20/12
- New error when running. Window pops up for a momment and then this error appears.
Mousetrap - MouseTrap's Interface Built and Loaded Traceback (most recent call last): File "mousetrap/ocvfw/dev/camera.py", line 116, in sync Camera.query_image() File "mousetrap/ocvfw/_ocv.py", line 125, in query_image frame = co.hg.cvQueryFrame( self.capture ) AttributeError: 'module' object has no attribute 'cvQueryFrame' Traceback (most recent call last): File "mousetrap/app/main.py", line 238, in update_frame self.itf.update_frame(self.idm.get_capture(), self.idm.get_pointer()) File "mousetrap/ocvfw/idm/forehead.py", line 128, in get_capture self.get_forehead() File "mousetrap/ocvfw/idm/forehead.py", line 148, in get_forehead face = self.cap.get_area(commons.haar_cds['Face']) File "mousetrap/ocvfw/dev/camera.py", line 373, in get_area return Camera.get_haar_points(haar_csd) File "mousetrap/ocvfw/_ocv.py", line 335, in get_haar_points cascade = co.cv.cvLoadHaarClassifierCascade( haarCascade, self.imgSize ) AttributeError: 'module' object has no attribute 'cvLoadHaarClassifierCascade' /usr/local/bin/mousetrap: line 139: 9390 Segmentation fault (core dumped) /usr/bin/python -c "import mousetrap.app.main as mousetrap; mousetrap.Controller().start();" "$ARGS"
- Changed "cvLoadHaarClassifierCascade" to "CascadeClassifier" on line 335 of _ocv.py
- Changed "cvQueryFrame" to "QueryFrame" on line 125 of _ocv.py
- Changed "cvResize" to "Resize" on line 341
- Removed cv.cvXXX in _ocv.py to cv.XXXX (Methods no longer start with cvXXX)
- Now have error of
Camera instance has no attribute 'small_img'
1/4/12
- It appears that the error is appearing becuase there is no image being captured from the webcam. I am working on trying to figure out why that is.
John Status
12/29/12
- Noted that mousetrap and gnome-mousetrap are in the Ubuntu repository. Ignoring this and following instructions provided by the MouseTrap GNOME Live! project page…
- Installation went as expected. Ran into every issue in the 'Troubleshooting' table, but that seems to be expected behavior.
- Running MouseTrap with command 'mousetrap'. Expected errors due to lack of webcam. Otherwise seems to run without issue (preferences window pops up when button clicked, and so forth).
- Quits without issue.
Thoughts on Install Process:
- Noted that it might be nice if they add the commands for the RPM package manager to the instructions.
- "Troubleshooting" should be a link to the Troubleshooting section for user-friendliness.
- 'Dependency hell' is tedious. Due to the fact that MouseTrap is in the Ubuntu repositories suggests it might be in others as well. It might be useful to include this fact in the install instructions.
- Else it might be useful for the autogen.sh shell file to automatically detect if a package is installed (it already does this) and installs them if they are not. This will run into an issue with different package management systems. A different shell file for the popular ones (APT and RPM)?
- A GUI installer would be the most user-friendly, but that's not the Linux MO.
1/13/13
- Webcam received and set up. Seems to be recognized OOTB on Ubuntu -- the light goes on when in use, etc.
- When running Mousetrap, it shows a blank window (most of the time) or a frozen video frame (only seen this once). In the terminal, it repeatedly displays errors similar to this;
Corrupt JPEG data: 1 extraneous bytes before marker 0xd9
- When running again with webcam unplugged, it runs fine.
- A quick Google got me this, https://bugs.launchpad.net/ubuntu/+source/mousetrap/+bug/685777 which is similar but not exactly (in my case the program gets stuck instantly).
1/25/13
Replaced Ubuntu with Fedora 18 on system. Webcam works out of the box. Everything works nicely. Except for the new UI for Anaconda, but I digress. Had issues installing Mousetrap. Full details below...
Installing Fedora:
I downloaded the ISO image for the Fedora 18 Network Install CD from here http://fedoraproject.org/en/get-fedora-options#formats. This is good if you have fast internet access. This is ideal since a) it's a small(er) download, and b) dd takes a while (see below).
Instead of a CD/DVD, I decided to use a USB stick. I used the Fedora-suggested LiveUSB tool, but it produced a USB stick that either a) is not recognized as bootable, or b) freezes at or after the "Secure boot not enabled" screen. So I used dd instead (a nifty tool, which should already be installed if you're using a UNIX-based OS, that copies a disk image to a destination byte-for-byte). To put the .iso image onto my USB stick, I used the command,
# dd if=./Fedora-18-x86_64-netinst.iso of=/etc/rdisk1
I had to be root to do this (hence the # above). Note that I also put "r" before the device name (in the above example, I used rdisk1 instead of disk1). This enables direct access, which speeds things up considerably. I used
$ fdisk -l
to find out the location of the USB drive.
Once I executed the dd command, it sat there seemingly doing nothing. dd can take a while (hence the reason I didn't use the Live DVD ISO!).
After it was done, booted from the USB drive, followed the (horrid) Anaconda installation process (beware of the terrifying partitioning part!).
After that's done, booted up and installed the b43 driver for my wireless card using the guide here, http://linuxwireless.org/en/users/Drivers/b43#Fedora. Everything works great, including the webcam.
Installing Mousetrap:
I attempted to install all the dependencies listed on the Mousetrap GNOME Live! site using the usual yum install <package>. However pygtk, python-pyspi and libglib2.0 are not in the repos.
Install method Install Dependencies: * gnome-common * glib2-devel * intltool * python-devel * opencv-python * change configure.in file to look for cv instead of opencv Run Commands: -> run ./autogen.sh -> make -> make install -> run mousetrap from /src (let me know if this works for you --Amber)
Nicole's Status
1.25.2013
Fedora 18 was successfully installed. Instructions are now on the "Getting Started" page.
2.5.2013
MouseTrap was fully installed. Instructions are now on the "Getting Started" page. I encountered the same first error:
ImportError: could not import gobject (error was: ImportError('When using gi.repository you must not import static modules like "gobject". Please change all occurrences of "import gobject" to "from gi.repository import GObject".',))
- Amber, have you put up your latest fork onto your github yet?