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

Your robot can be more than a simple automated machine with the power of ARC Pro!

PRO
Synthiam
#1  

Most likely the camera hasn't started immediately following the Start - because it's hardware related which means there is a slight delay for the hardware to kick in.

#2  

Ah okay, so you would suggest to insert a delay before calling saveImage?

PRO
Synthiam
#3  

Actually that might not be your problem at all...

"C:\test.jpg" would escape the \t to be a tab character. I suspect if you checked the ezb log, it would have an error reported that it can't save the file due to the file being c:[tab]est.jpg

you need to escape the \ slash


EZ_B::EZB ^ezb;
ezb = gcnew EZ_B::EZB(&quot;MyEZB&quot;);

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

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

#4  

Hm well I don't get a warning and escaping it does not change anything. However, when I add


Sleep(1000);

after calling the camera device I can get the camera to return an image size, which it didn't before. It still does not save the file though.

Any other bright ideas?

By the way, what is that smiley doing in my code DJ?

#5  

What happens if you use c:test.jpg instead of c:\test.jpg? I'm not certain, but I think DJ is saying the \t part of the c:\test.jpg character sequence is being interpreted as an escape sequence.

The smiley is usually caused by the UBB Parser interpreting the combination of a quote and a right paren as a Winky type emoticon. I just tried to demonstrate that by putting a space between the quote and the right paren to show how you could eliminate it (in my original version of this post) but it didn't do it. Maybe it's been fixed?

#6  

I've tried "test.jpg", "c:\test.jpg", and "c://test.jpg". Same result. No errors or warnings, but also no jpeg.

#7  

So you actually tried c:test.jpg?

'test.jpg alone would try to save an image to the current default directory, whatever that may be at any time. Who knows, there may be one there. Unlike, c:\test.jpg which would try to place an image in the root directory of the C-drive, c:test.jpg will try to put one in whatever directory is currently active on the C-drive. The whole idea is to not have a slash of any kind in the path to eliminate the possibility of the slash causing an inadvertent escape to be generated. The image could even be in the directory where your ARC files are.

Basically, what I'm saying is that there may be a test.jpg image on your computer, just that it may not be in the root directory of the C-drive. Thereby leading you to conclude the image has not been stored.

#8  

Yes I realize that, but regardless of how I try to save, it's nowhere on my harddrive. This leads me to think that there is something missing in my code, I just can't figure out what.