diff --git a/minimal_pylon.cpp b/minimal_pylon.cpp index a58132f..5d1dc54 100644 --- a/minimal_pylon.cpp +++ b/minimal_pylon.cpp @@ -34,6 +34,7 @@ typedef high_resolution_clock Time; typedef milliseconds ms; typedef duration fsec; + uint32_t sensorHeight(CInstantCamera &camera) { CIntegerParameter maxheight( camera.GetNodeMap(), "SensorHeight" ); return maxheight.GetValue(); @@ -52,7 +53,13 @@ void exposureTime(CInstantCamera &camera, double exposure_time) { } -//void exposureTime(double exposure_time); +void detectorGain(CInstantCamera &camera, double gain) { + GenApi::INodeMap& nodemap = camera.GetNodeMap(); + CEnumParameter(nodemap, "GainAuto").SetValue("Off"); + CEnumParameter(nodemap, "GainSelector").SetValue("All"); + CFloatParameter(nodemap, "Gain").SetValue(gain); +} + int main( int argc, char* argv[] ) { uint32_t frameCount = 100; @@ -68,6 +75,7 @@ int main( int argc, char* argv[] ) { int yOffset = 0; int camIndex = 0; double exposure_time = 10000; + double gains[2] = {5.0, 5.0}; string errorMessage = ""; String_t filename = "_TestVideo.mp4"; @@ -82,6 +90,8 @@ int main( int argc, char* argv[] ) { << "\t --xoffs|-x \t image x offset in pixel, defaults to 0\n" << "\t --yoffs|-y \t image y-offset in pixel, defaults to 0\n" << "\t --exposure|-e \t exposure time in us, defaults to 10000\n" + << "\t --gain1|-g1 \t gain for camera 1 in db, defaults to 5.0\n" + << "\t --gain2|-g2 \t gain for camera 2 in db, defaults to 5.0\n" << "\t --cameras|-c \t the desired number of cameras to grab at the same time, defaults to 1\n" << "\t --framecount|-n \t the number of frames, defaults to 100\n" << "\t --quality|-q \t the qualtiy of the compression (0 < q <= 100), defaults to 50\n" @@ -113,6 +123,20 @@ int main( int argc, char* argv[] ) { if ((arg == "--exposure" || arg == "-e") && i + 1 < argc) { exposure_time = std::atoi(argv[++i]); } + if ((arg == "--gain1" || arg == "-g1") && i + 1 < argc) { + try { + gains[0] = std::stod(argv[++i]); + } catch (...) { + gains[0] = 5.0; + } + } + if ((arg == "--gain2" || arg == "-g2") && i + 1 < argc) { + try { + gains[1] = std::stod(argv[++i]); + } catch (...) { + gains[1] = 5.0; + } + } if ((arg == "--index" || arg == "-i") && i + 1 < argc) { camIndex = std::atoi(argv[++i]); } @@ -170,14 +194,14 @@ int main( int argc, char* argv[] ) { CEnumParameter pixelFormat( nodemap, "PixelFormat" ); CEnumParameter trigmode( nodemap, "TriggerMode"); CEnumParameter trigsource( nodemap, "TriggerSource"); - exposureTime(cameras[i], exposure_time); + exposureTime( cameras[i], exposure_time ); + detectorGain( cameras[i], gains[i] ); trigmode.TrySetValue( "On" ); trigsource.TrySetValue( "Software" ); width.TrySetValue( cWidth, IntegerValueCorrection_Nearest ); height.TrySetValue( cHeight, IntegerValueCorrection_Nearest ); offsetX.TrySetValue( xOffset, IntegerValueCorrection_Nearest ); offsetY.TrySetValue( yOffset, IntegerValueCorrection_Nearest ); - } CIntegerParameter width( cameras[0].GetNodeMap(), "Width" );