void CCflycap_close(CCflycap *ccntxt) { if (!ccntxt) {CAM_IFACE_THROW_ERROR("no CCflycap specified (NULL argument)");} FlyCapture2::Camera *cam = (FlyCapture2::Camera *)ccntxt->inherited.cam; CIPGRCHK(cam->StopCapture()); CIPGRCHK(cam->Disconnect()); cam_iface_backend_extras* backend_extras = (cam_iface_backend_extras*)(ccntxt->inherited.backend_extras); if (backend_extras!=NULL) { delete backend_extras; ccntxt->inherited.backend_extras = (void*)NULL; } delete cam; ccntxt->inherited.cam = (void*)NULL; }
int main(int argc, char *argv[]) { get_param(); std::string t_stamp = get_timestamp(); sprintf (data_filename, "%s/data_%s.out", save_dir, t_stamp.c_str()); std::cout << "data_filename: " << data_filename << std::endl; FlyCapture2::BusManager busMgr; PGRGuid guid; err = busMgr.GetCameraFromSerialNumber(cam_serial, &guid); if (err != PGRERROR_OK) { std::cout << "Index error" << std::endl; return false; } // Point Grey cam init init_cam_capture(pt_grey, guid); if (use_calib) load_calib_param(); imageCallback(&pt_grey); printf("Stopping...\n"); err = pt_grey.StopCapture(); if ( err != PGRERROR_OK ) { // This may fail when the camera was removed, so don't show // an error message } pt_grey.Disconnect(); }
void BACKEND_METHOD(cam_iface_get_camera_info)(int device_number, Camwire_id *out_camid) { CAM_IFACE_CHECK_DEVICE_NUMBER(device_number); if (out_camid==NULL) { CAM_IFACE_THROW_ERROR("return structure NULL"); } FlyCapture2::PGRGuid guid; CIPGRCHK( BACKEND_GLOBAL(busMgr_ptr)->GetCameraFromIndex(device_number, &guid)); FlyCapture2::CameraInfo camInfo; FlyCapture2::Camera *cam = new FlyCapture2::Camera; CIPGRCHK(cam->Connect(&guid)); CIPGRCHK(cam->GetCameraInfo(&camInfo)); CIPGRCHK(cam->Disconnect()); cam_iface_snprintf(out_camid->vendor, CAMWIRE_ID_MAX_CHARS, camInfo.vendorName); cam_iface_snprintf(out_camid->model, CAMWIRE_ID_MAX_CHARS, camInfo.modelName); cam_iface_snprintf(out_camid->chip, CAMWIRE_ID_MAX_CHARS, "GUID %x %x %x %x", guid.value[0], guid.value[1], guid.value[2], guid.value[3]); }
int get_mode_list(int device_number, std::vector<CamMode> &result ) { FlyCapture2::Camera *cam = new FlyCapture2::Camera; FlyCapture2::PGRGuid guid; FlyCapture2::Error err; CamMode mode; FlyCapture2::Format7Info fmt7Info; bool supported; //FlyCapture2::Mode k_fmt7Mode; //FlyCapture2::PixelFormat k_fmt7PixFmt; std::ostringstream oss; std::vector<FlyCapture2::Mode> fmt7modes; fmt7modes.push_back(FlyCapture2::MODE_0); fmt7modes.push_back(FlyCapture2::MODE_1); fmt7modes.push_back(FlyCapture2::MODE_2); fmt7modes.push_back(FlyCapture2::MODE_3); fmt7modes.push_back(FlyCapture2::MODE_4); fmt7modes.push_back(FlyCapture2::MODE_5); fmt7modes.push_back(FlyCapture2::MODE_6); fmt7modes.push_back(FlyCapture2::MODE_7); fmt7modes.push_back(FlyCapture2::MODE_8); fmt7modes.push_back(FlyCapture2::MODE_9); fmt7modes.push_back(FlyCapture2::MODE_10); fmt7modes.push_back(FlyCapture2::MODE_11); fmt7modes.push_back(FlyCapture2::MODE_12); fmt7modes.push_back(FlyCapture2::MODE_13); fmt7modes.push_back(FlyCapture2::MODE_14); fmt7modes.push_back(FlyCapture2::MODE_15); fmt7modes.push_back(FlyCapture2::MODE_16); fmt7modes.push_back(FlyCapture2::MODE_17); fmt7modes.push_back(FlyCapture2::MODE_18); fmt7modes.push_back(FlyCapture2::MODE_19); fmt7modes.push_back(FlyCapture2::MODE_20); fmt7modes.push_back(FlyCapture2::MODE_21); fmt7modes.push_back(FlyCapture2::MODE_22); fmt7modes.push_back(FlyCapture2::MODE_23); fmt7modes.push_back(FlyCapture2::MODE_24); fmt7modes.push_back(FlyCapture2::MODE_25); fmt7modes.push_back(FlyCapture2::MODE_26); fmt7modes.push_back(FlyCapture2::MODE_27); fmt7modes.push_back(FlyCapture2::MODE_28); fmt7modes.push_back(FlyCapture2::MODE_29); fmt7modes.push_back(FlyCapture2::MODE_30); fmt7modes.push_back(FlyCapture2::MODE_31); std::vector<FlyCapture2::PixelFormat> pixfmts; pixfmts.push_back(FlyCapture2::PIXEL_FORMAT_MONO8); pixfmts.push_back(FlyCapture2::PIXEL_FORMAT_411YUV8); pixfmts.push_back(FlyCapture2::PIXEL_FORMAT_422YUV8); pixfmts.push_back(FlyCapture2::PIXEL_FORMAT_444YUV8); pixfmts.push_back(FlyCapture2::PIXEL_FORMAT_RGB8); pixfmts.push_back(FlyCapture2::PIXEL_FORMAT_MONO16); pixfmts.push_back(FlyCapture2::PIXEL_FORMAT_RGB16); pixfmts.push_back(FlyCapture2::PIXEL_FORMAT_S_MONO16); pixfmts.push_back(FlyCapture2::PIXEL_FORMAT_S_RGB16); pixfmts.push_back(FlyCapture2::PIXEL_FORMAT_RAW8); pixfmts.push_back(FlyCapture2::PIXEL_FORMAT_RAW16); pixfmts.push_back(FlyCapture2::PIXEL_FORMAT_MONO12); pixfmts.push_back(FlyCapture2::PIXEL_FORMAT_RAW12); pixfmts.push_back(FlyCapture2::PIXEL_FORMAT_BGR); pixfmts.push_back(FlyCapture2::PIXEL_FORMAT_BGRU); pixfmts.push_back(FlyCapture2::PIXEL_FORMAT_RGB); pixfmts.push_back(FlyCapture2::PIXEL_FORMAT_RGBU); err = BACKEND_GLOBAL(busMgr_ptr)->GetCameraFromIndex(device_number, &guid); // if (err!=FlyCapture2::PGRERROR_OK) { // goto errlabel2; // } err = cam->Connect(&guid); // if (err!=FlyCapture2::PGRERROR_OK) { // goto errlabel2; // } // FORMAT 7 -- test all modes std::vector<FlyCapture2::Mode>::const_iterator fmt7mode; for(fmt7mode=fmt7modes.begin(); fmt7mode!=fmt7modes.end(); fmt7mode++) { fmt7Info.mode = *fmt7mode; err = cam->GetFormat7Info( &fmt7Info, &supported ); // if (err != FlyCapture2::PGRERROR_OK) goto errlabel1; // Do work if (supported) { std::vector<FlyCapture2::PixelFormat>::const_iterator pixfmt; for(pixfmt=pixfmts.begin(); pixfmt!=pixfmts.end(); pixfmt++) { if (*pixfmt & fmt7Info.pixelFormatBitField) { std::ostringstream oss = std::ostringstream(); oss << "format 7, mode " << *fmt7mode << " (" << pixfmt2string(*pixfmt) << ", " << fmt7Info.maxWidth << "x" << fmt7Info.maxHeight <<")"; mode.descr = oss.str(); mode.videomode = FlyCapture2::VIDEOMODE_FORMAT7; mode.fmt7ImageSettings.mode = *fmt7mode; mode.fmt7ImageSettings.offsetX = 0; mode.fmt7ImageSettings.offsetY = 0; mode.fmt7ImageSettings.width = fmt7Info.maxWidth; mode.fmt7ImageSettings.height = fmt7Info.maxHeight; mode.fmt7ImageSettings.pixelFormat = *pixfmt; bool valid; err = cam->ValidateFormat7Settings( &mode.fmt7ImageSettings, &valid, &mode.fmt7PacketInfo ); if (err == FlyCapture2::PGRERROR_OK) { result.push_back(mode); } } } } } // not format 7 -- test each videomode and framerate combination std::vector<FlyCapture2::VideoMode> videomodes; videomodes.push_back(FlyCapture2::VIDEOMODE_160x120YUV444); videomodes.push_back(FlyCapture2::VIDEOMODE_320x240YUV422); videomodes.push_back(FlyCapture2::VIDEOMODE_640x480YUV411); videomodes.push_back(FlyCapture2::VIDEOMODE_640x480YUV422); videomodes.push_back(FlyCapture2::VIDEOMODE_640x480RGB); videomodes.push_back(FlyCapture2::VIDEOMODE_640x480Y8); videomodes.push_back(FlyCapture2::VIDEOMODE_640x480Y16); videomodes.push_back(FlyCapture2::VIDEOMODE_800x600YUV422); videomodes.push_back(FlyCapture2::VIDEOMODE_800x600RGB); videomodes.push_back(FlyCapture2::VIDEOMODE_800x600Y8); videomodes.push_back(FlyCapture2::VIDEOMODE_800x600Y16); videomodes.push_back(FlyCapture2::VIDEOMODE_1024x768YUV422); videomodes.push_back(FlyCapture2::VIDEOMODE_1024x768RGB); videomodes.push_back(FlyCapture2::VIDEOMODE_1024x768Y8); videomodes.push_back(FlyCapture2::VIDEOMODE_1024x768Y16); videomodes.push_back(FlyCapture2::VIDEOMODE_1280x960YUV422); videomodes.push_back(FlyCapture2::VIDEOMODE_1280x960RGB); videomodes.push_back(FlyCapture2::VIDEOMODE_1280x960Y8); videomodes.push_back(FlyCapture2::VIDEOMODE_1280x960Y16); videomodes.push_back(FlyCapture2::VIDEOMODE_1600x1200YUV422); videomodes.push_back(FlyCapture2::VIDEOMODE_1600x1200RGB); videomodes.push_back(FlyCapture2::VIDEOMODE_1600x1200Y8); videomodes.push_back(FlyCapture2::VIDEOMODE_1600x1200Y16); std::vector<FlyCapture2::FrameRate> framerates; framerates.push_back(FlyCapture2::FRAMERATE_1_875); framerates.push_back(FlyCapture2::FRAMERATE_3_75); framerates.push_back(FlyCapture2::FRAMERATE_7_5); framerates.push_back(FlyCapture2::FRAMERATE_15); framerates.push_back(FlyCapture2::FRAMERATE_30); framerates.push_back(FlyCapture2::FRAMERATE_60); framerates.push_back(FlyCapture2::FRAMERATE_120); framerates.push_back(FlyCapture2::FRAMERATE_240); std::vector<FlyCapture2::VideoMode>::const_iterator videomode; for(videomode=videomodes.begin(); videomode!=videomodes.end(); videomode++) { std::vector<FlyCapture2::FrameRate>::const_iterator framerate; for(framerate=framerates.begin(); framerate!=framerates.end(); framerate++) { err = cam->GetVideoModeAndFrameRateInfo(*videomode, *framerate, &supported); if (err == FlyCapture2::PGRERROR_OK) { if (supported) { std::ostringstream oss = std::ostringstream(); oss << "videomode " << *videomode << " framerate " << *framerate; mode.descr = oss.str(); mode.videomode = *videomode; mode.framerate = *framerate; } } } } // err = cam->Disconnect(); cam->Disconnect(); return 0; // errlabel1: // err = cam->Disconnect(); // errlabel2: // return 1; }