libvisiontransfer  10.0.0
parameter_example.cpp
1 /*******************************************************************************
2  * Copyright (c) 2022 Nerian Vision GmbH
3  *
4  * Permission is hereby granted, free of charge, to any person obtaining a copy
5  * of this software and associated documentation files (the "Software"), to deal
6  * in the Software without restriction, including without limitation the rights
7  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8  * copies of the Software, and to permit persons to whom the Software is
9  * furnished to do so, subject to the following conditions:
10  *
11  * The above copyright notice and this permission notice shall be included in
12  * all copies or substantial portions of the Software.
13  *******************************************************************************/
14 
15 #include <visiontransfer/deviceenumeration.h>
16 #include <visiontransfer/imagetransfer.h>
17 #include <visiontransfer/imageset.h>
18 #include <visiontransfer/deviceparameters.h>
19 #include <iostream>
20 #include <exception>
21 #include <iomanip>
22 #include <stdio.h>
23 
24 #ifdef _MSC_VER
25  #include <windows.h>
26  // Visual studio does not come with sleep
27  #define sleep(x) Sleep(x*1000)
28 #else
29  #include <unistd.h>
30 #endif
31 
32 using namespace visiontransfer;
33 
34 int main(int, char**) {
35  try {
36  // Search for Nerian stereo devices
37  DeviceEnumeration deviceEnum;
38 
39  DeviceEnumeration::DeviceList devices = deviceEnum.discoverDevices();
40  if(devices.size() == 0) {
41  std::cout << "No devices discovered!" << std::endl;
42  return -1;
43  }
44 
45  // Print devices
46  std::cout << "Discovered devices:" << std::endl;
47  for(unsigned int i = 0; i< devices.size(); i++) {
48  std::cout << devices[i].toString() << std::endl;
49  }
50  std::cout << std::endl;
51 
52  // Create an image transfer object that receives data from
53  // the first detected Nerian stereo device
54  DeviceParameters parameters(devices[0]);
55 
56  // Output the current parameterization
57 
58  const int colW = 35;
59  std::cout << std::boolalpha << std::left;
60  std::cout << "Current Parameters" << std::endl;
61  std::cout << "==================" << std::endl << std::endl;
62  std::cout << std::setw(colW) << "Operation mode: " << parameters.getOperationMode() << std::endl;
63  std::cout << std::setw(colW) << "Disparity offset: " << parameters.getDisparityOffset() << std::endl;
64  std::cout << std::setw(colW) << "Stereo P1 edge: " << parameters.getStereoMatchingP1Edge() << std::endl;
65  std::cout << std::setw(colW) << "Stereo P2 edge: " << parameters.getStereoMatchingP2Edge() << std::endl;
66  std::cout << std::setw(colW) << "Stereo P1 no edge: " << parameters.getStereoMatchingP1NoEdge() << std::endl;
67  std::cout << std::setw(colW) << "Stereo P2 no edge: " << parameters.getStereoMatchingP2NoEdge() << std::endl;
68  std::cout << std::setw(colW) << "Stereo edge sensitivity: " << parameters.getStereoMatchingEdgeSensitivity() << std::endl;
69  std::cout << std::setw(colW) << "Mask border pixels: " << parameters.getMaskBorderPixelsEnabled() << std::endl;
70  std::cout << std::setw(colW) << "Consistency check enabled: " << parameters.getConsistencyCheckEnabled() << std::endl;
71  std::cout << std::setw(colW) << "Consistency check sensitivity: " << parameters.getConsistencyCheckSensitivity() << std::endl;
72  std::cout << std::setw(colW) << "Uniqueness check enabled: " << parameters.getUniquenessCheckEnabled() << std::endl;
73  std::cout << std::setw(colW) << "Uniqueness check sensitivity: " << parameters.getUniquenessCheckSensitivity() << std::endl;
74  std::cout << std::setw(colW) << "Texture filter enabled: " << parameters.getTextureFilterEnabled() << std::endl;
75  std::cout << std::setw(colW) << "Texture filter sensitivity: " << parameters.getTextureFilterSensitivity() << std::endl;
76  std::cout << std::setw(colW) << "Gap interpolation enabled: " << parameters.getGapInterpolationEnabled() << std::endl;
77  std::cout << std::setw(colW) << "Noise reduction enabled: " << parameters.getNoiseReductionEnabled() << std::endl;
78  std::cout << std::setw(colW) << "Speckle filter itarations: " << parameters.getSpeckleFilterIterations() << std::endl;
79  std::cout << std::setw(colW) << "Auto exposure/gain mode: " << parameters.getAutoMode() << std::endl;
80  std::cout << std::setw(colW) << "Auto target intensity: " << parameters.getAutoTargetIntensity() << std::endl;
81  std::cout << std::setw(colW) << "Auto intensity delta : " << parameters.getAutoIntensityDelta() << std::endl;
82  std::cout << std::setw(colW) << "Auto target frame: " << parameters.getAutoTargetFrame() << std::endl;
83  std::cout << std::setw(colW) << "Auto skipped frames: " << parameters.getAutoSkippedFrames() << std::endl;
84  std::cout << std::setw(colW) << "Maximum auto exposure time: " << parameters.getAutoMaxExposureTime() << " us" << std::endl;
85  std::cout << std::setw(colW) << "Maximum auto gain: " << parameters.getAutoMaxGain() << " dB" << std::endl;
86  std::cout << std::setw(colW) << "Manual exposure time: " << parameters.getManualExposureTime() << " us" << std::endl;
87  std::cout << std::setw(colW) << "Manual gain: " << parameters.getManualGain() << " dB" << std::endl;
88  std::cout << std::setw(colW) << "Auto ROI enabled: " << parameters.getAutoROIEnabled() << std::endl;
89 
90  int x = 0, y = 0, width = 0, height = 0;
91  parameters.getAutoROI(x, y, width, height);
92  std::cout << std::setw(colW) << "Auto ROI: " << "(" << x << ", " << y << ") (" << width << " x " << height << ")" << std::endl;
93 
94  std::cout << std::setw(colW) << "Maximum frame time difference: " << parameters.getMaxFrameTimeDifference() << " ms" << std::endl;
95  std::cout << std::setw(colW) << "Trigger frequency: " << parameters.getTriggerFrequency() << " Hz" << std::endl;
96  std::cout << std::setw(colW) << "Trigger 0 enabled: " << parameters.getTrigger0Enabled() << std::endl;
97  std::cout << std::setw(colW) << "Trigger 1 enabled: " << parameters.getTrigger1Enabled() << std::endl;
98  std::cout << std::setw(colW) << "Trigger 0 pulse width: " << parameters.getTrigger0PulseWidth() << " ms"<< std::endl;
99  std::cout << std::setw(colW) << "Trigger 1 pulse width: " << parameters.getTrigger1PulseWidth() << " ms"<< std::endl;
100  std::cout << std::setw(colW) << "Trigger 1 offset: " << parameters.getTrigger1Offset() << " ms"<< std::endl;
101  std::cout << std::setw(colW) << "Auto re-calibration enabled: " << parameters.getAutoRecalibrationEnabled() << std::endl;
102  std::cout << std::setw(colW) << "Save auto re-calibration: " << parameters.getSaveAutoRecalibration() << std::endl;
103 
104 
105  // Change a few selected parameters
106 
107  std::cout << std::endl
108  << "Changing Parameters" << std::endl
109  << "==================" << std::endl << std::endl;
110 
111  std::cout << "Operation mode..." << std:: endl;
112  parameters.setOperationMode(DeviceParameters::PASS_THROUGH);
113  sleep(1);
114  parameters.setOperationMode(DeviceParameters::STEREO_MATCHING);
115  sleep(1);
116 
117  std::cout << "Disparity offset..." << std:: endl;
118  parameters.setDisparityOffset(10);
119  sleep(1);
120  parameters.setDisparityOffset(0);
121  sleep(1);
122 
123  std::cout << "Auto exposure target brightness..." << std:: endl;
124  parameters.setAutoTargetIntensity(0.7);
125  sleep(1);
126  parameters.setAutoTargetIntensity(0.33);
127  sleep(1);
128 
129  std::cout << "Trigger frequency..." << std:: endl;
130  parameters.setTriggerFrequency(5);
131  sleep(1);
132  parameters.setTriggerFrequency(30);
133  sleep(1);
134 
135  return 0;
136  } catch(const std::exception& ex) {
137  std::cerr << "Exception occurred: " << ex.what() << std::endl;
138  }
139 
140  return 0;
141 }
142 
DeviceList discoverDevices()
Discovers new devices and returns the list of all devices that have been found.
The devices performs stereo matching.
The device passes through the input images without modification.
Allows for configuration of the parameters of a Nerian stereo device through a network connection...
Allows for the discovery of devices in the network.
Nerian Vision Technologies