cmauri / eviacam Goto Github PK
View Code? Open in Web Editor NEWwebcam based mouse emulator
License: GNU General Public License v3.0
webcam based mouse emulator
License: GNU General Public License v3.0
Error while compiling "Invalid conversion from char** to void**"
I edited the file src/viacamcontroller.cpp and changed the line 233 from:
(char**)NULL, wxDEFAULT_DIALOG_STYLE | wxOK | wxCANCEL | wxCENTRE);
to:
(void**)NULL, wxDEFAULT_DIALOG_STYLE | wxOK | wxCANCEL | wxCENTRE);
Compilation worked flawlessly but when I run the app I get the message:
[libwebcam] Unknown V4L2 private control ID encountered: 0x08000000 (V4L2_CID_PRIVATE_BASE + 0) [libwebcam] Unknown V4L2 private control ID encountered: 0x08000001 (V4L2_CID_PRIVATE_BASE + 1) [libwebcam] Unknown V4L2 private control ID encountered: 0x08000002 (V4L2_CID_PRIVATE_BASE + 2) [libwebcam] Unknown V4L2 private control ID encountered: 0x08000003 (V4L2_CID_PRIVATE_BASE + 3) [ WARN:0] global /build/opencv/src/opencv-4.5.2/modules/videoio/src/videoio_c.cpp (15) cvCreateCameraCapture cvCreateCameraCapture doesn't support legacy API anymore.
Thank you
On arch linux I'm getting:
In file included from /usr/include/gtk-3.0/gdk/gdkapplaunchcontext.h:30,
from /usr/include/gtk-3.0/gdk/gdk.h:32,
from /usr/include/gtk-3.0/gdk/gdkx.h:28,
from wxappbar.cpp:46:
/usr/include/gtk-3.0/gdk/gdktypes.h:143:39: error: conflicting declaration ‘typedef struct _GdkWindow GdkWindow’
143 | typedef struct _GdkWindow GdkWindow;
| ^~~~~~~~~
In file included from /usr/include/wx-3.0/wx/wxprec.h:12,
from wxappbar.cpp:24:
/usr/include/wx-3.0/wx/defs.h:3466:33: note: previous declaration as ‘typedef struct _GdkDrawable GdkWindow’
The problem remains after removing arch's package wxgtk3 and leaving only 2. I can't remove gtk3 without wrecking my box.
checking gtk version... 3.24.13
checking wxWidgets version... 3.0.4
checking opencv version... 4.2.0
The situation, i have 3 webcam and 1 FakeCam. This devices working fine in OBS and in other apps.
When i started eviacamloader and select any other cam instead default (video0), the eviacam cannot starting. (my suggestion is that there should be an error window here, because now there is nothing)
Example for reporcedure error:
My devices:
ls /dev/video*
/dev/video0 /dev/video1 /dev/video2 /dev/video20 /dev/video3 /dev/video4 /dev/video5
After selected "FakeCam" which 'video20' the config this is:
cat .eviacam
[settings]
cameraName=" (Id:5) FakeCam"
checkUpdatesAtStartup=1
Cannot start, and the output displayed 'video1' device can't open....
Use: 1000, Group: 1001. Eff. usr: 0, Eff. group: 1001
[libwebcam] Invalid V4L2 control type encountered: ctrl_id = 0x00980001, name = 'User Controls', type = 6
[libwebcam] Invalid or unsupported V4L2 control encountered: ctrl_id = 0x00980001, name = 'User Controls'
[libwebcam] Unknown V4L2 user control ID encountered: 0x0098F900 (V4L2_CID_USER_BASE + 61440)
[libwebcam] Unknown V4L2 user control ID encountered: 0x0098F901 (V4L2_CID_USER_BASE + 61441)
[libwebcam] Unknown V4L2 user control ID encountered: 0x0098F902 (V4L2_CID_USER_BASE + 61442)
[libwebcam] Unknown V4L2 user control ID encountered: 0x0098F903 (V4L2_CID_USER_BASE + 61443)
[ WARN:[email protected]] global opencv-4.6.0/modules/videoio/src/cap_gstreamer.cpp (1405) open OpenCV | GStreamer warning: Cannot query video position: status=0, value=-1, duration=-1
[ WARN:[email protected]] global opencv-4.6.0/modules/videoio/src/cap_gstreamer.cpp (2401) handleMessage OpenCV | GStreamer warning: Embedded video playback halted; module v4l2src1 reported: A(z) „/dev/video1” not a recorder device
[ WARN:[email protected]] global opencv-4.6.0/modules/videoio/src/cap_gstreamer.cpp (1356) open OpenCV | GStreamer warning: unable to start pipeline
[ WARN:[email protected]] global opencv-4.6.0/modules/videoio/src/cap_gstreamer.cpp (862) isPipelinePlaying OpenCV | GStreamer warning: GStreamer: pipeline have not been created
[ WARN:[email protected]] global opencv-4.6.0/modules/videoio/src/cap_v4l.cpp (902) open VIDEOIO(V4L2:/dev/video1): can't open camera by index
Use: 1000, Group: 1001. Eff. usr: 1000, Eff. group: 1001
eViacam works well with the default webcam (video0)!
But this happens when I select a different camera (video2/4/20)...
RGDS
Hi,
I've issues with eviacam 2.1.2 (master branch) on Debian 9.1 (stable, XFCE).
After using eviacam a few minutes eviacam suddenly crashes with the following errors:
user@debian:~$ eviacamloader
Use: 1000, Group: 1000. Eff. usr: 0, Eff. group: 1000
(eviacam:1395): Gtk-WARNING **: gtk_disable_setlocale() must be called before gtk_init()
HIGHGUI ERROR: V4L: index 1 is not correct!
**
Gdk:ERROR:/build/gtk+2.0-1aCJs4/gtk+2.0-2.24.31/gdk/gdkregion-generic.c:1306:miSubtractNonO1: assertion failed: (y1<y2)
*** Error in `/usr/local/bin/eviacam': malloc(): memory corruption (fast): 0x00007fb70c0a0460 ***
Use: 1000, Group: 1000. Eff. usr: 1000, Eff. group: 1000
user@debian:~$ eviacamloader
Use: 1000, Group: 1000. Eff. usr: 0, Eff. group: 1000
(eviacam:1014): Gtk-WARNING **: gtk_disable_setlocale() must be called before gtk_init()
HIGHGUI ERROR: V4L: index 1 is not correct!
**
Gdk:ERROR:/build/gtk+2.0-1aCJs4/gtk+2.0-2.24.31/gdk/gdkregion-generic.c:1110:miUnionNonO: assertion failed: (y1 < y2)
Use: 1000, Group: 1000. Eff. usr: 1000, Eff. group: 1000
I have a feature request to add a button or hotkey to toggle the camera. The reason is because I use video meetings like Zoom/Hangouts quite frequently. I can't share my video in Zoom with eViacam turned on. I'd like a quick way to turn off video in eViacam temporarily during a video meeting, then turn it back on again when I'm done.
Currently I have to exit the app and then reopen it again. I run with admin permissions so I have retype my password in again too. That's kind of a pain and would be easier if I could leave the app open but just toggle the camera.
One advantage of a hotkey is that I can wire a speech recognition command and just stay "toggle camera" and it will do it for me without even maximizing the window.
Here:
#0 0x00007f25bbe133e0 gst_element_get_state (libgstreamer-1.0.so.0)
#1 0x00007f25be0cebde _ZN16GStreamerCaptureD2Ev (libopencv_videoio.so.4.0)
#2 0x00007f25be0d2426 _ZN2cv22createGStreamerCaptureEi (libopencv_videoio.so.4.0)
#3 0x00007f25be0abdb0 _ZN2cv19VideoCapture_createERP9CvCaptureRNS_3PtrINS_13IVideoCaptureEEENS_16VideoCaptureAPIsEi (libopencv_videoio.so.4.0)
#4 0x00007f25be0b76fa cvCreateCameraCapture (libopencv_videoio.so.4.0)
#5 0x00005648f08972b8 _ZN9CCameraCV13GetNumDevicesEv (eviacam)
#6 0x00005648f0897081 _ZN11CCameraEnum9getCameraEiijjf (eviacam)
#7 0x00005648f0841192 _ZN17CViacamController11SetUpCameraEv (eviacam)
#8 0x00005648f08426de _ZN17CViacamController10InitializeEv (eviacam)
#9 0x00005648f083a2af _ZN10EViacamApp6OnInitEv (eviacam)
#10 0x00007f25c1095d3a _Z7wxEntryRiPPw (libwx_baseu-3.1.so.3)
#11 0x00005648f08209f2 main (eviacam)
#12 0x00007f25bda52153 __libc_start_main (libc.so.6)
#13 0x00005648f082749e _start (eviacam)
GDB doesn't seem to know any locals in this build. I could try to rebuild all the libs with debug info if the problem isn't already clear
Ticking this option does not work as eviacam never runs on start-up
edit: not sure if this affects other Windows versions
I'm looking to be able to move the mouse click toolbar to the side or bottom of the screen. Due to mobility issues, a person is having a difficult time reaching the top left side of the screen.
Hi all,
Trying to load on Pop OS version 22.04 LTS
No interface loads, and I get the following:
$ eviacam [libwebcam] Invalid V4L2 control type encountered: ctrl_id = 0x00980001, name = 'User Controls', type = 6 [libwebcam] Invalid or unsupported V4L2 control encountered: ctrl_id = 0x00980001, name = 'User Controls' [libwebcam] Invalid V4L2 control type encountered: ctrl_id = 0x009A0001, name = 'Camera Controls', type = 6 [libwebcam] Invalid or unsupported V4L2 control encountered: ctrl_id = 0x009A0001, name = 'Camera Controls' [ WARN:0] global ./modules/videoio/src/videoio_c.cpp (15) cvCreateCameraCapture cvCreateCameraCapture doesn't support legacy API anymore.
Does anyone have any suggestions on how to get this working?
Thank you for your time.
I noticed just now that if I create a virtual camera object on my system - for example using the OS virtual camera - to mirror my only input camera to a secondary camera screen, I cannot open that secondary OBS virtual camera in the app.
I just tried to mirror my hardware camera to a virtual device, its not even listed as a input device in viacam that's available even though it's clearly available for every other app on my system, including zoom, discord, etc.
This means that accessibility is by default restricted to people who have multiple cameras, and it also means that some apps just cant be used with it due to this needless device restriction, and while this may not be an issue for many people from a cost perspective it's better for us to be allowed to use software solutions as modern day hardware is more than fast enough to be able to keep up with this, and it would allow accessibility for many more apps.
A quick look at the code at
eviacam/creavision/libwebcam/libwebcam.c
Line 2482 in a4032ed
Maybe we're just restricting it to only hardware ID's for hardware cameras based on the code when it should be a larger set of device types?
I installed eviacam on Linux-mint 19.3 then I went to the terminal and entered eviacam
and got the following.
(eviacam:14569): Gtk-ERROR **: 10:39:20.064: GTK+ 2.x symbols detected. Using GTK+ 2.x and GTK+ 3 in the same process is not supported Trace/breakpoint trap (core #dumped)
Thanks!
Hi I am the creator of Precision Gaze Mouse and I thought you'd like to hear that I've integrated support for eViacam. One of your users made the suggestion to use eViacam and I really like it!
Precision Gaze Mouse allows people to use eye trackers like Tobii EyeX to quickly jump the mouse across the screen just by looking with their eyes. I paired it with eViacam by turning the X and Y speed down so that I can have small precision movements when I rotate my head. It can also reduce fatigue because you don't need to rotate your head so much. It's open source and you can check it out here http://precisiongazemouse.com/
If you think this is something other users might find useful, it would be great to have a link in your Related Projects section 😃 I also added a link to your site from the setup docs.
Hi,
My webcam is by default in mirrored mode, so when eViacam perform it's camera flip, the face tracking is inverted.
Is there an option to avoid that please ? Thanks a lot !
Versions (all installed from distro package source):
Symptom when running "eviacamloader" (both as regular user and as root):
[ WARN:0] global ../modules/videoio/src/videoio_c.cpp (15) cvCreateCameraCapture cvCreateCameraCapture doesn't support legacy API anymore.
A warning, but nevertheless fatal - no program GUI ever appears.
I am trying to compile from source, but having no luck so far (can't get past "AM_GNU_GETTEXT not found" issues) - will keep trying for a bit more...
P.S. gnome-mousetrap is also broken, with almost the same error message, so I guess this relates to breaking changes in recent versions of opencv
I'd like to suggest a dark mode for the clickwindows in Windows.
Well, I've gotten this far, but am stumped.
During the make process, it errors out with the following:
......
viacamcontroller.cpp: In member function ‘CCamera* CViacamController::SetUpCamera()’:
viacamcontroller.cpp:233:70: error: invalid conversion from ‘char**’ to ‘void**’ [-fpermissive]
(char**)NULL, wxDEFAULT_DIALOG_STYLE | wxOK | wxCANCEL | wxCENTRE);
^
In file included from /usr/local/include/wx-3.1/wx/choicdlg.h:18:0,
from viacamcontroller.cpp:40:
/usr/local/include/wx-3.1/wx/generic/choicdgg.h:110:5: note: initializing argument 5 of ‘wxSingleChoiceDialog::wxSingleChoiceDialog(wxWindow*, const wxString&, const wxString&, const wxArrayString&, void**, long int, const wxPoint&)’
wxSingleChoiceDialog(wxWindow *parent,
^~~~~~~~~~~~~~~~~~~~
Makefile:865: recipe for target 'eviacam-viacamcontroller.o' failed
make[2]: *** [eviacam-viacamcontroller.o] Error 1
make[2]: Leaving directory '/tmp/eviacam/src'
Makefile:514: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/tmp/eviacam'
Makefile:423: recipe for target 'all' failed
make: *** [all] Error 2
Thoughts?
My arm is killing me... I'd really like to get eViacam working :)
Thanks!
I found this app, because I was looking for some way to conveniently switch between two physical screens, but it seems there is currently no way. My problem is that when I want to scroll or refresh the secondary screen, I need to move the mouse all way there, then click to activate the window, then start scrolling; and afterwards do the same to continue working in the main screen. Using Alt+Tab is possible, but it then defeats the whole purpose of having two screens.
Proposed feature: the app doesn't move the mouse, but detects when one looks at another screen and places the mouse into the center of that screen. Optionally also activates (focuses) the window that is (say, in the middle) in that screen.
If I enable "Start eViacam at user logon" the error message
Impossible to get permissions for file '/usr/share/eviacam/eviacam.desktop' (error 2: No such file or directory)
appears. (see attached Screenshot)
I think it's because the "eviacam.desktop" file is in /usr/share/applications/ and not in /usr/share/eviacam/
Happened with Debian 9, eViacam installed via Debian repository and also with the latest master branch.
Hey I really enjoy this program! The last camera mouse I tried was CameraMouse, and this is way more accurate! That said, I find it a little distracting that the mouse pointer is constantly moving as I look around the screen. I really only need to move the mouse just before a click. It'd be great if it could track on key down, wait for the cursor to position, and then stop tracking on key up. The reason for holding a key is because I use a USB switch for clicking and I would like to use it to enable tracking as well. Does that make sense? Would you be open to this kind of setting?
On Arch Linux, with:
wxgtk: 3.0.2
opencv: 3.2.0
With the following backtrace:
ASSERT INFO:
/usr/include/wx-3.0/wx/object.h(160): assert "wxDynamicCast(ptr, T)" failed in wxCheckCast(): wxStaticCast() used incorrectly
BACKTRACE:
[1] wxToggleButton* wxCheckCast<wxToggleButton>(void const*, wxToggleButton*) /usr/include/wx-3.0/wx/object.h:160
[2] CClickWindowText::CreateControls(wxString const&) /home/lordaro/dev/eviacam/src/clickwindowtext.cpp:72
[3] CClickWindow::Create(wxWindow*, wxString const&) /home/lordaro/dev/eviacam/src/clickwindow.cpp:61
[4] CClickWindowText::CClickWindowText(wxWindow*, wxString const&) /home/lordaro/dev/eviacam/src/clickwindowtext.cpp:52
[5] wxString::ConvertedBuffer<char>::~ConvertedBuffer() /usr/include/wx-3.0/wx/string.h:3490
[6] CDwellClick::EnableVisualAlerts(bool) /home/lordaro/dev/eviacam/src/dwellclick.cpp:203
[7] CPointerAction::CPointerAction() /home/lordaro/dev/eviacam/src/pointeraction.cpp:43
[8] CViacamController::Initialize() /home/lordaro/dev/eviacam/src/viacamcontroller.cpp:292
[9] EViacamApp::OnInit() /home/lordaro/dev/eviacam/src/eviacamapp.cpp:176
[10] wxEntry(int&, wchar_t**)
[11] main /home/lordaro/dev/eviacam/src/eviacamapp.cpp:82
[12] __libc_start_main
[13] _start
ant@vanta:~/$ eviacam
(eviacam:7900): Gtk-ERROR **: GTK+ 2.x symbols detected. Using GTK+ 2.x and GTK+ 3 in the same process is not supported
Trace/breakpoint trap (core dumped)
Not sure what version numbers you'd need to know, so let me know if you need more information:
ant@vanta:~/Projects/eviacam$ cat /etc/*-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=17.10
DISTRIB_CODENAME=artful
Hi,
Current eviacam can not build with opencv 3.
Becuse eviacam is using cvCalcOpticalFlowHS, but this has been removed from opencv 3.
We need to use cv::calcOpticalFlowFarneback instead of cvCalcOpticalFlowHS.
Best regards,
Nobuhiro
$ ./autogen.sh
configure.ac:19: warning: macro 'AM_PROG_LIBTOOL' not found in library
configure.ac:33: warning: macro 'AM_GNU_GETTEXT' not found in library
./autogen.sh: line 6: libtoolize: command not found
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/\${ <-- HERE ([^ \t=:+{}]+)}/ at /usr/bin/automake line 3930.
Makefile.am:81: warning: whitespace following trailing backslash
creavision/Makefile.am:10: error: Libtool library used but 'LIBTOOL' is undefined
creavision/Makefile.am:10: The usual way to define 'LIBTOOL' is to add 'LT_INIT'
creavision/Makefile.am:10: to 'configure.ac' and run 'aclocal' and 'autoconf' again.
creavision/Makefile.am:10: If 'LT_INIT' is in 'configure.ac', make sure
creavision/Makefile.am:10: its definition is in aclocal's search path.
creavision/libwebcam/Makefile.am:7: error: Libtool library used but 'LIBTOOL' is undefined
creavision/libwebcam/Makefile.am:7: The usual way to define 'LIBTOOL' is to add 'LT_INIT'
creavision/libwebcam/Makefile.am:7: to 'configure.ac' and run 'aclocal' and 'autoconf' again.
creavision/libwebcam/Makefile.am:7: If 'LT_INIT' is in 'configure.ac', make sure
creavision/libwebcam/Makefile.am:7: its definition is in aclocal's search path.
simplelog/Makefile.am:6: error: Libtool library used but 'LIBTOOL' is undefined
simplelog/Makefile.am:6: The usual way to define 'LIBTOOL' is to add 'LT_INIT'
simplelog/Makefile.am:6: to 'configure.ac' and run 'aclocal' and 'autoconf' again.
simplelog/Makefile.am:6: If 'LT_INIT' is in 'configure.ac', make sure
simplelog/Makefile.am:6: its definition is in aclocal's search path.
wxcamwindow/Makefile.am:3: error: Libtool library used but 'LIBTOOL' is undefined
wxcamwindow/Makefile.am:3: The usual way to define 'LIBTOOL' is to add 'LT_INIT'
wxcamwindow/Makefile.am:3: to 'configure.ac' and run 'aclocal' and 'autoconf' again.
wxcamwindow/Makefile.am:3: If 'LT_INIT' is in 'configure.ac', make sure
wxcamwindow/Makefile.am:3: its definition is in aclocal's search path.
wxutil/Makefile.am:13: error: Libtool library used but 'LIBTOOL' is undefined
wxutil/Makefile.am:13: The usual way to define 'LIBTOOL' is to add 'LT_INIT'
wxutil/Makefile.am:13: to 'configure.ac' and run 'aclocal' and 'autoconf' again.
wxutil/Makefile.am:13: If 'LT_INIT' is in 'configure.ac', make sure
wxutil/Makefile.am:13: its definition is in aclocal's search path.
libtool is installed
Hi, do you know how difficult it would be to compile this on macOS?
Thanks!
(I always appreciate the work people put into open source projects. I don't expect this feature to be implemented just for me, I'm just curious what technical problems would need to be overcome to port this to the Mac.)
I downloaded this from SourceForge set my webcam to my tablets fromt camera. It blinks twice and then says "Camera not detected"
你好非常感谢提供这么棒的软件,我是一位高位截瘫患者,一直使用这款软件,2.1.0版本,目前更换来新摄像头它能在19201080 分辨率下工作60fps,我不会编程,能否发布一下2.1.4最新版本支持19201080 60fps的成品软件,直接能够在Win10上面使用的软件吗 谢谢!
Support for higher frame rates than 30 FPS would make the tracking more responsive. This would make cursor adjustments easier, faster and using Enable Viacam a more pleasant experience.
I'm currently trying to use a Logitech C922x Pro, which supports 60 FPS at 720p. (Only 30 FPS at 1080p). I'd be happy to purchase any camera if eviacam would support a higher frame rate with it. Some specialized webcams cameras support 120 FPS and higher. But I think eviacam is capped at 30 FPS?
The Logitech C922x Pro works at 60 FPS on OBS Studio, but the frame rate and resolution has to be specifically set in OBS Studio to work. So I think eviacam would need to do something similar: setting the resolution and the frame rate. If it's easier to add, reading an ini file at launch would work too.
I tried to make this change myself when I found void setIdealFramerate(int deviceID, int idealFramerate);
and bool setupDevice(int deviceID, int w, int h);
inside of videoInput.h. I suspect I just needed to change the defaults when setupDevice is first used, but I was unable to get the source building. This is mostly because the required tools and dependences (opencv, MinGW, etc.) are foreign to me. Or maybe I was just using too new of a version of Windows or Visual Studio or whatever.
Cheers,
Rusty
hi @cmauri
thanks for your work
I couldnt able to build the code in my vs2017 win10 pc.
lot of errors.
if u have any doc related to code building please help
i am trying to add opencv Dnn based face detection which is robust and will work for non frontal face too. but since i couldnt get rid of the build error i could not go forward.
once cleared all the build error i will release the PR .
highly appreaciated your help on this.
Could it be possible to add a setting/button which allows the user to hold the left/right mouse button? Preferably while moving.
When I start eviacam I get the above message and then it crashes.
I have two cameras. It once asked me which to use before dying from opencv deprecating the main open-cam api, so I rebuilt against opencv 4.0.1, but it hasn't asked again which cam to use.
I don't have any files in ~/.eviacam
Arch linux.
Built at d5db860 against gtk 3.24.13, wxWidgets 3.1.3 for gtk3 and opencv 4.0.1
Hello,
Is there any plan for supporting gtk-3 ?
We are considering retiring wxWidgets gtk-2 build and eviacam is one of the only blocker.
Thank you !
Hello @cmauri,
I'm trying to make eviacam
work on Fedora 29, but when building from source using the latest v2.1.3
tag the process receives a SIGSEGV and gets killed.
$ ./src/eviacam --debug
DEBUG: Opened device 'video0' successfully (handle = 1)
DEBUG: Getting device information for handle 1 ...
DEBUG: { shortName = 'video0', name = 'Integrated Camera: Integrated C', driver = 'uvcvideo', location = 'usb-0000:00:14.0-8', vid = 04f2, pid = b5c1, bcd = 4 }
DEBUG: Getting control information for handle 1 ...
DEBUG: Control found: Brightness
DEBUG: { id = 1, name = 'Brightness', type = 6, flags = 3
DEBUG: , min = 0, max = 255, def = 128, step = 1
DEBUG: }
DEBUG: Control found: Contrast
DEBUG: { id = 2, name = 'Contrast', type = 6, flags = 3
DEBUG: , min = 0, max = 255, def = 32, step = 1
DEBUG: }
DEBUG: Control found: Saturation
DEBUG: { id = 4, name = 'Saturation', type = 6, flags = 3
DEBUG: , min = 0, max = 100, def = 64, step = 1
DEBUG: }
DEBUG: Control found: Hue
DEBUG: { id = 5, name = 'Hue', type = 6, flags = 3
DEBUG: , min = -180, max = 180, def = 0, step = 1
DEBUG: }
DEBUG: Control found: White Balance Temperature, Auto
DEBUG: { id = 9, name = 'White Balance Temperature, Auto', type = 2, flags = 3
DEBUG: , min = 0, max = 1, def = 1, step = 1
DEBUG: }
DEBUG: Control found: Gamma
DEBUG: { id = 6, name = 'Gamma', type = 6, flags = 3
DEBUG: , min = 90, max = 150, def = 120, step = 1
DEBUG: }
DEBUG: Control found: Power Line Frequency
DEBUG: { id = 13, name = 'Power Line Frequency', type = 3, flags = 3
DEBUG: , choice = {
DEBUG: 'Disabled'[0]
DEBUG: '50 Hz'[1]
DEBUG: '60 Hz'[2]
DEBUG: }
DEBUG: }
DEBUG: Control found: White Balance Temperature
DEBUG: { id = 8, name = 'White Balance Temperature', type = 6, flags = 3
DEBUG: , min = 2800, max = 6500, def = 4000, step = 1
DEBUG: }
DEBUG: Control found: Sharpness
DEBUG: { id = 7, name = 'Sharpness', type = 6, flags = 3
DEBUG: , min = 0, max = 7, def = 2, step = 1
DEBUG: }
DEBUG: Control found: Backlight Compensation
DEBUG: { id = 12, name = 'Backlight Compensation', type = 6, flags = 3
DEBUG: , min = 0, max = 2, def = 1, step = 1
DEBUG: }
DEBUG: Control found: Exposure, Auto
DEBUG: { id = 15, name = 'Exposure, Auto', type = 3, flags = 3
DEBUG: , choice = {
DEBUG: 'Manual Mode'[1]
DEBUG: 'Aperture Priority Mode'[3]
DEBUG: }
DEBUG: }
DEBUG: Control found: Exposure (Absolute)
DEBUG: { id = 17, name = 'Exposure (Absolute)', type = 6, flags = 3
DEBUG: , min = 4, max = 1250, def = 156, step = 1
DEBUG: }
DEBUG: Control found: Exposure, Auto Priority
DEBUG: { id = 16, name = 'Exposure, Auto Priority', type = 2, flags = 3
DEBUG: , min = 0, max = 1, def = 0, step = 1
DEBUG: }
DEBUG: Closed device 'video0' (handle = 0)
DEBUG: Opened device 'video1' successfully (handle = 2)
DEBUG: Getting device information for handle 2 ...
DEBUG: { shortName = 'video1', name = 'Integrated Camera: Integrated C', driver = 'uvcvideo', location = 'usb-0000:00:14.0-8', vid = 04f2, pid = b5c1, bcd = 4 }
DEBUG: Getting control information for handle 2 ...
DEBUG: No controls found (ret = 0).
DEBUG: Closed device 'video1' (handle = 0)
INFO: Previous used camera: (Id:0) Integrated Camera: Integrated C...
INFO: FOUND
INFO: Detected 2 camera(s)
INFO: Selected camera: 0
INFO: Try to open the camera to make sure it works...
Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.
VIDEOIO ERROR: V4L: device /dev/video1: Unable to query number of channels
warning: Cannot query video position: status=0 value=-1 duration=-1
(/builddir/build/BUILD/opencv-3.4.1/modules/videoio/src/cap_gstreamer.cpp:952)
VIDEOIO ERROR: V4L: index 2 is not correct!
warning: Cannot query video position: status=0 value=-1 duration=-1
(/builddir/build/BUILD/opencv-3.4.1/modules/videoio/src/cap_gstreamer.cpp:952)
VIDEOIO ERROR: V4L: index 3 is not correct!
warning: Cannot query video position: status=0 value=-1 duration=-1
(/builddir/build/BUILD/opencv-3.4.1/modules/videoio/src/cap_gstreamer.cpp:952)
VIDEOIO ERROR: V4L: index 4 is not correct!
warning: Cannot query video position: status=0 value=-1 duration=-1
(/builddir/build/BUILD/opencv-3.4.1/modules/videoio/src/cap_gstreamer.cpp:952)
VIDEOIO ERROR: V4L: index 5 is not correct!
warning: Cannot query video position: status=0 value=-1 duration=-1
(/builddir/build/BUILD/opencv-3.4.1/modules/videoio/src/cap_gstreamer.cpp:952)
VIDEOIO ERROR: V4L: index 6 is not correct!
warning: Cannot query video position: status=0 value=-1 duration=-1
(/builddir/build/BUILD/opencv-3.4.1/modules/videoio/src/cap_gstreamer.cpp:952)
VIDEOIO ERROR: V4L: index 7 is not correct!
warning: Cannot query video position: status=0 value=-1 duration=-1
(/builddir/build/BUILD/opencv-3.4.1/modules/videoio/src/cap_gstreamer.cpp:952)
VIDEOIO ERROR: V4L: index 8 is not correct!
warning: Cannot query video position: status=0 value=-1 duration=-1
(/builddir/build/BUILD/opencv-3.4.1/modules/videoio/src/cap_gstreamer.cpp:952)
VIDEOIO ERROR: V4L: index 9 is not correct!
warning: Cannot query video position: status=0 value=-1 duration=-1
(/builddir/build/BUILD/opencv-3.4.1/modules/videoio/src/cap_gstreamer.cpp:952)
Segmentation fault (core dumped)
The problem is in the call to DisplayHeight()
in CMouseControl::GetScreenSize()
:
$ gdb ./src/eviacam
...
Thread 1 "eviacam" received signal SIGSEGV, Segmentation fault.
0x0000000000477f5d in CMouseControl::GetScreenSize (this=this@entry=0xebae10) at mousecontrol.cpp:136
136 m_ScreenHeight=
(gdb) bt
#0 0x0000000000477f5d in CMouseControl::GetScreenSize() (this=this@entry=0xebae10) at mousecontrol.cpp:136
#1 0x00000000004780a9 in CMouseControl::OnDisplayChanged() (this=this@entry=0xebae10) at mousecontrol.cpp:174
#2 0x0000000000478108 in CMouseControl::CMouseControl(void*) (this=0xebae10, pDisplay=<optimized out>) at mousecontrol.cpp:102
#3 0x000000000046ffc6 in CPointerAction::CPointerAction() (this=0x1115640) at pointeraction.cpp:39
#4 0x000000000043c1f0 in CViacamController::Initialize() (this=this@entry=0xd35e00) at viacamcontroller.cpp:317
#5 0x0000000000435617 in EViacamApp::OnInit() (this=0x9fb230) at eviacamapp.cpp:176
#6 0x00007ffff7390d32 in wxEntry(int&, wchar_t**) (argc=<optimized out>, argv=<optimized out>) at ../include/wx/init.h:109
#7 0x0000000000422c52 in main(int, char**) (argc=<optimized out>, argv=0x7fffffffd1e8) at eviacamapp.cpp:81
...
(gdb) list
131 if (!retval) { exit (-1); }
132
133 m_ScreenHeight= devMode.dmPelsHeight;
134 m_ScreenWidth= devMode.dmPelsWidth;
135 #else // Linux
136 m_ScreenHeight=
137 DisplayHeight (static_cast<Display*>(m_pDisplay), DefaultScreen (static_cast<Display*>(m_pDisplay)));
138 m_ScreenWidth=
139 DisplayWidth (static_cast<Display*>(m_pDisplay), DefaultScreen (static_cast<Display*>(m_pDisplay)));
140 #endif
...
(gdb) print m_pDisplay
$6 = (void *) 0xa8a000
(gdb) print m_ScreenHeight
$7 = 0
(gdb) print m_ScreenWidth
$8 = 0
I see that m_pDisplay
is set though, to the pDisplay
argument received by the CMouseControl::CMouseControl()
constructor:
$ gdb ./src/eviacam
...
(gdb) break CMouseControl
Breakpoint 1 at 0x4780c0: file mousecontrol.cpp, line 79.
(gdb) run
...
Thread 1 "eviacam" hit Breakpoint 1, CMouseControl::CMouseControl (this=0xc34de0, pDisplay=0xa8a800) at mousecontrol.cpp:79
79 CMouseControl::CMouseControl (void* pDisplay)
(gdb) print pDisplay
$1 = (void *) 0xa8a800
(gdb) continue
Continuing.
Thread 1 "eviacam" received signal SIGSEGV, Segmentation fault.
0x0000000000477f5d in CMouseControl::GetScreenSize (this=this@entry=0xc34de0) at mousecontrol.cpp:143
143 m_ScreenHeight=
(gdb) print m_pDisplay
$2 = (void *) 0xa8a800
So I don't really understand why DisplayHeight()
causes a NULL pointer deference since m_pDisplay
seems to be set correctly.
Maybe is a red herring, but I'm using Wayland + XWayland for X clients. Do you know if eviacam
is supposed to work on this setup or should only under X?
In case is useful, the wxWidgets
backend is GTK3.
$ wx-config --selected-config
gtk3-unicode-3.0
Any hints on how to further debug this?
Over the years of using eViacam, occasionally I've experienced a situation where the camera will freeze (it will no longer track head movements for cursor control, and the cursor will randomly move around the screen). Up until recently, I had created and used a custom Dragon voice command that would terminate the current eViacam task and restart it again - which worked well. However, I recently came across an article https://appuals.com/webcam-not-working-after-windows-10-anniversay-update/ that may have fixed the problem. I've made the suggested registry change and have yet to see the problem return.
So, for anyone there that may be experiencing this problem, try the aforementioned registry change.
Signed,
A happy and grateful eViacam user.
If I change the language of eViacam via settings for example to "English" and restart eViacam the error message
locale 'en_GB' cannot be set.
appears. (See attached Screenshot)
eViacam starts in the changed language but this error appears on every start until I changed the language back to "system default".
Happened with Debian 9, eViacam installed via Debian repository and also with the latest master branch.
Hello, is it possible to use this in Raspberry pi 3?
Thanks!
When i run eviacam against opencv-4.1.2 the following occurs
[ WARN:0] global /var/tmp/portage/media-libs/opencv-4.1.2-r1/work/opencv-4.1.2/modules/videoio/src/videoio_c.cpp (15) cvCreateCameraCapture cvCreateCameraCapture doesn't support legacy API anymore.
and eviacam exits.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.