Asked — Edited
Resolved Resolved by ptp!

Outputting Snapshop From Videostream In C++

Has any one had success with setting up a camera stream and saving a snapshot to a file using c++?

This is what I have so far:


EZ_B::EZB ^ezb;
ezb = gcnew EZ_B::EZB("MyEZB");

EZ_B::Camera ^ezbCam;
ezbCam = gcnew EZ_B::Camera(ezb);

ezbCam->StartCamera(EZ_B::Camera::GetVideoCaptureDevices()[1], 320, 240);
ezbCam->SaveImageAsJPEG("c:\test.jpg");

I can confirm that the camera is on by running:


BOOL camOK = ezbCam->Camera::IsActive;
cout << "Camera on? " << camOK << "\n";

What am I missing here?

Best, Lars


ARC Pro

Upgrade to ARC Pro

Subscribe to ARC Pro, and your robot will become a canvas for your imagination, limited only by your creativity.

PRO
Synthiam
#17  

What version of the SDK are you using? I think it's a really old one. I would try updating to a recent SDK package. I recall there being an issue with saving in the SDK quite a few months ago.

#18  

Really old, depends on you definition I guess. The SDK i was using was downloaded on January 4th this year. I just downloaded the latest and updated my references. The SaveImageAsJPEG error disappears, but is replaced with this one:


Camera on? 1
image size: 15360
'07-02-2016' is not recognized as an internal or external command, operable program or batch file.
07-02-2016 22:15 - Object Recognition Initialized.
07-02-2016 22:15 - Camera Initialized: EZB://192.168.1.1 @ 320x240
07-02-2016 22:15 - Camera Disabled

which I just find plain odd. And no, still no jpg file saved to disc.

PRO
Synthiam
#19  

Hmm - the jan 6th shouldn't have been that bad. That is a very very odd message! It's really strange and wouldn't think that a simple console app would cause so many challenges.

If you are u using the ez-robot camera, maybe the mono.dll would be a better fit for a console app because it doesn't have form dependencies

#20  

Okay, when running :


ezbCam-&gt;SaveImageAsJPEG(&quot;test.jpg&quot;);

rather than using an absolute path I get this error:


Camera on? 1
image size: 14336
08-02-2016 12:12 - Object Recognition Initialized.
08-02-2016 12:12 - Camera Initialized: EZB://192.168.1.1 @ 320x240
08-02-2016 12:12 - Save Image () Error: System.ArgumentException: Path cannot be the empty string or all whitespace.
   at System.IO.Directory.CreateDirectory(String path)
   at EZ_B.Camera.SaveImageAsJPEG(String filename)
08-02-2016 12:12 - Camera Disabled

which I find a bit odd since the string evidently is not empty.

PRO
USA
#21  

Lars,

Regarding the last post "System.ArgumentException: Path cannot be the empty string or all whitespace."

is correct, i'm familiar with that message...

guessing... the ezb code obtains the path from the file you specified, and then calls the CreateDirectory with an empty path generating the error/exception you got.

PRO
USA
#22  

Lars,

To help brainstorm the problem:

  1. Describe the Camera device in use.

  2. To isolate if the issue: sdk related, form vs console application or cmake/compiler options:

2.1 ) isolate EZ code in a console application, compile, run, debug with Visual Studio,

2.2) if 2.1 still does not work, create a Form application with the same code.

PRO
Synthiam
#23  

yeah - the filename must contain a path because it will create the folder if it doesn't exist, as ptp mentioned.

Try the mono.dll - i think you will have better luck because it has less overhead

#24  

Ptp and Sures, thank you for all your advice and efforts, I appreciate it. I have for the time being given up using the camera in the current context.

Unfortunately, C# and mono is incompatible with other components in the project. I am working with a group of roboticists on adapting a gaze spotter to be used with a JD-bot. The spotter is originally developed for the iCub robot, but has been adapted to other platforms as well. We should have a working system within a few days, I'll throw up a video once it does:)