Files
usda-vision/tests/legacy_tests/VIDEO_RECORDER_README.md
Alireza Vaezi 7bc8138f24 Add comprehensive test suite for USDA Vision Camera System
- Implemented main test script to verify system components and functionality.
- Added individual test scripts for camera exposure settings, API changes, camera recovery, maximum FPS, MQTT events, logging, and timezone functionality.
- Created service file for system management and automatic startup.
- Included detailed logging and error handling in test scripts for better diagnostics.
- Ensured compatibility with existing camera SDK and API endpoints.
2025-07-28 17:33:49 -04:00

5.4 KiB

Camera Video Recorder

A Python script for recording videos from GigE cameras using the provided SDK with custom exposure and gain settings.

Features

  • List all available cameras - Automatically detects and displays all connected cameras
  • Custom camera settings - Set exposure time to 1ms and gain to 3.5x (or custom values)
  • Video recording - Record videos in AVI format with timestamp filenames
  • Live preview - Test camera functionality with live preview mode
  • Interactive menu - User-friendly menu system for all operations
  • Automatic cleanup - Proper resource management and cleanup

Requirements

  • Python 3.x
  • OpenCV (cv2)
  • NumPy
  • Camera SDK (mvsdk) - included in python demo directory
  • GigE camera connected to the system

Installation

  1. Ensure your GigE camera is connected and properly configured
  2. Make sure the python demo directory with mvsdk.py is present
  3. Install required Python packages:
    pip install opencv-python numpy
    

Usage

Basic Usage

Run the script:

python camera_video_recorder.py

The script will:

  1. Display a welcome message and feature overview
  2. List all available cameras
  3. Let you select a camera (if multiple are available)
  4. Allow you to set custom exposure and gain values
  5. Present an interactive menu with options

Menu Options

  1. Start Recording - Begin video recording with timestamp filename
  2. List Camera Info - Display detailed camera information
  3. Test Camera (Live Preview) - View live camera feed without recording
  4. Exit - Clean up and exit the program

Default Settings

  • Exposure Time: 1.0ms (1000 microseconds)
  • Gain: 3.5x
  • Video Format: AVI with XVID codec
  • Frame Rate: 30 FPS
  • Output Directory: videos/ (created automatically)

Recording Controls

  • Start Recording: Select option 1 from the menu
  • Stop Recording: Press 'q' in the preview window
  • Video Files: Saved as videos/camera_recording_YYYYMMDD_HHMMSS.avi

File Structure

camera_video_recorder.py    # Main script
python demo/
    mvsdk.py               # Camera SDK wrapper
    (other demo files)
videos/                    # Output directory (created automatically)
    camera_recording_*.avi # Recorded video files

Script Features

CameraVideoRecorder Class

  • list_cameras() - Enumerate and display available cameras
  • initialize_camera() - Set up camera with custom exposure and gain
  • start_recording() - Initialize video writer and begin recording
  • stop_recording() - Stop recording and save video file
  • record_loop() - Main recording loop with live preview
  • cleanup() - Proper resource cleanup

Key Functions

  • Camera Detection: Automatically finds all connected GigE cameras
  • Settings Validation: Checks and clamps exposure/gain values to camera limits
  • Frame Processing: Handles both monochrome and color cameras
  • Windows Compatibility: Handles frame flipping for Windows systems
  • Error Handling: Comprehensive error handling and user feedback

Example Output

Camera Video Recorder
====================
This script allows you to:
- List all available cameras
- Record videos with custom exposure (1ms) and gain (3.5x) settings
- Save videos with timestamps
- Stop recording anytime with 'q' key

Found 1 camera(s):
0: GigE Camera Model (GigE) - SN: 12345678

Using camera: GigE Camera Model

Camera Settings:
Enter exposure time in ms (default 1.0): 1.0
Enter gain value (default 3.5): 3.5

Initializing camera with:
- Exposure: 1.0ms
- Gain: 3.5x

Camera type: Color
Set exposure time: 1000.0μs
Set analog gain: 3.50x (range: 1.00 - 16.00)
Camera started successfully

==================================================
Camera Video Recorder Menu
==================================================
1. Start Recording
2. List Camera Info
3. Test Camera (Live Preview)
4. Exit

Select option (1-4): 1

Started recording to: videos/camera_recording_20241223_143022.avi
Frame size: (1920, 1080), FPS: 30.0
Press 'q' to stop recording...
Recording... Press 'q' in the preview window to stop

Recording stopped!
Saved: videos/camera_recording_20241223_143022.avi
Frames recorded: 450
Duration: 15.2 seconds
Average FPS: 29.6

Troubleshooting

Common Issues

  1. "No cameras found!"

    • Check camera connection
    • Verify camera power
    • Ensure network configuration for GigE cameras
  2. "SDK initialization failed"

    • Verify python demo/mvsdk.py exists
    • Check camera drivers are installed
  3. "Camera initialization failed"

    • Camera may be in use by another application
    • Try disconnecting and reconnecting the camera
  4. Recording issues

    • Ensure sufficient disk space
    • Check write permissions in the output directory

Performance Tips

  • Close other applications using the camera
  • Ensure adequate system resources (CPU, RAM)
  • Use SSD storage for better write performance
  • Adjust frame rate if experiencing dropped frames

Customization

You can modify the script to:

  • Change video codec (currently XVID)
  • Adjust target frame rate
  • Modify output filename format
  • Add additional camera settings
  • Change preview window size

Notes

  • Videos are saved in the videos/ directory with timestamp filenames
  • The script handles both monochrome and color cameras automatically
  • Frame flipping is handled automatically for Windows systems
  • All resources are properly cleaned up on exit