Write a class in C ++ (hereinafter referred to as BaslerCamera) for interaction with a Basler video camera through the Pylon SDK, which provides:
- Connecting to a Basler camera
- Receiving a video stream in the form of a sequence of frames and transferring them to the consumer in the original format as a pointer to memory
- Get current camera settings
- Change camera settings:
1) Image correction
2) focus aperture
3) Acquisition Control module: Exposure Auto, Exposure Time, Acquisition Frame Rate (Enable Acquisition Frame Rate flag active)
4) Analog Control - fully used
5) Auto Function Control - used: Exposure Time Lower Limit and Exposure Time Upper Limit Gain Limit - the default values remain.
6) Digital I / O Control - used to start / disable IR In particular, the parameters: Line In-verter, Line Selector and User Output Selector
7) Image Quality Control module - uses PGI Control (non-Bayer only)
Develop a test console application working with BaslerCamera, which should work in the fol-lowing modes:
- receiving all frames from memory and writing them to disk in the original format in real time (just binary dumps)
- recording an AVI file using OpenCV (cv :: VideoWriter)
- live video display (cv :: imshow)
- recording current settings in [login to view URL]
- camera settings through the values passed in the parameters of the console applica-tion (or according to the values from [login to view URL])
• The application will run on an x86-based computer with Linux Ubuntu 18.04
• The camera connects via USB 3.0 and transfers uncompressed frames
• For development and testing, an SSH connection to the server to which the Basler camcorder is connected will be provided
• Before starting work, the Pylon SDK library will be provided, examples of its use in C ++ (free download from [login to view URL]) If necessary, camera documentation may be provided.
• The result should be in the form of a .[login to view URL] source archive and [login to view URL], the assembly should be through Cmake using the GCC / G ++ compiler. The archive should contain assembly instructions, which also indicate additional dependencies that had to be installed for work.