Go to the documentation of this file.00001 #include <stdlib.h>
00002 #include <stdio.h>
00003 #include <assert.h>
00004 #include <vector>
00005
00006
00007 #include <FCam/N900.h>
00008 namespace Plat = FCam::N900;
00009
00012
00013
00014
00015
00016
00017
00018
00019 void errorCheck();
00020
00021 int main(int argc, char **argv) {
00022
00023
00024 Plat::Sensor sensor;
00025
00026
00027 std::vector<FCam::Shot> shot(3);
00028 for (size_t i = 0; i < shot.size(); i++) {
00029 shot[i].exposure = 50000;
00030 shot[i].gain = 1.0f;
00031 }
00032
00033
00034 shot[0].image = FCam::Image(2592, 1968, FCam::RAW);
00035 shot[1].image = FCam::Image(1296, 984, FCam::RAW);
00036 shot[2].image = FCam::Image(648, 492, FCam::RAW);
00037
00038
00039 sensor.capture(shot);
00040
00041
00042 errorCheck();
00043
00044 assert(sensor.shotsPending() == shot.size());
00045
00046
00047 std::vector<FCam::Frame> frame(shot.size());
00048 for (size_t i = 0; i < shot.size(); i++) {
00049 frame[i] = sensor.getFrame();
00050 }
00051
00052 sensor.stop();
00053
00054 errorCheck();
00055
00056
00057 for (size_t i = 0; i < shot.size(); i++) {
00058 printf("Checking frame %d\n", i);
00059 assert(frame[i].shot().id == shot[i].id);
00060
00061
00062 assert(frame[i].valid());
00063 assert(frame[i].image().valid());
00064 printf("Frame %d OK!\n", i);
00065 }
00066
00067
00068 FCam::saveDNG(frame[0], "/home/user/MyDocs/DCIM/frame0.dng");
00069 FCam::saveDNG(frame[1], "/home/user/MyDocs/DCIM/frame1.dng");
00070 FCam::saveDNG(frame[2], "/home/user/MyDocs/DCIM/frame2.dng");
00071
00072
00073 assert(sensor.framesPending() == 0);
00074 assert(sensor.shotsPending() == 0);
00075
00076 return 0;
00077 }
00078
00079
00080
00081
00082 void errorCheck() {
00083
00084 FCam::Event e;
00085 while (FCam::getNextEvent(&e, FCam::Event::Error)) {
00086 printf("Error: %s\n", e.description.c_str());
00087 if (e.data == FCam::Event::DriverMissingError) {
00088 printf("example1: FCam can't find its driver. Did you install "
00089 "fcam-drivers on your platform, and reboot the device "
00090 "after installation?\n");
00091 exit(1);
00092 }
00093 if (e.data == FCam::Event::DriverLockedError) {
00094 printf("example1: Another FCam program appears to be running "
00095 "already. Only one can run at a time.\n");
00096 exit(1);
00097 }
00098 }
00099 }