| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- using UnityEngine;
- using System;
- namespace LightGlue.Unity.Config
- {
- /// <summary>
- /// 图像传输配置参数
- /// 根据协议说明_V1.0_20250303定义
- /// </summary>
- [System.Serializable]
- public class ImageTransmissionConfig
- {
- [Header("图像参数")]
- [Tooltip("图片分辨率选择(硬件分辨率枚举:QQVGA/QVGA/VGA/SVGA/XGA/HD/SXGA/UXGA)")]
- public ImageResolution resolution = ImageResolution.QVGA_320x240;
- [Tooltip("图片质量 (0-60,硬件直接使用该值,十进制输入,内部按十六进制发送)")]
- [Range(0, 60)]
- public int quality = 20;
- [Header("传输参数")]
- [Tooltip("上报时间间隔 (毫秒)")]
- [Min(0)]
- public int reportIntervalMs = 10;
- [Tooltip("开启图片传输开关")]
- public bool enableImageTransmission = true;
- /// <summary>
- /// 获取分辨率的宽度
- /// </summary>
- public int GetWidth()
- {
- return resolution switch
- {
- ImageResolution.QQVGA_160x120 => 160,
- ImageResolution.QVGA_320x240 => 320,
- ImageResolution.VGA_640x480 => 640,
- ImageResolution.SVGA_800x600 => 800,
- ImageResolution.XGA_1024x768 => 1024,
- ImageResolution.HD_1280x720 => 1280,
- ImageResolution.SXGA_1280x1024 => 1280,
- ImageResolution.UXGA_1600x1200 => 1600,
- _ => 640
- };
- }
- /// <summary>
- /// 获取分辨率的高度
- /// </summary>
- public int GetHeight()
- {
- return resolution switch
- {
- ImageResolution.QQVGA_160x120 => 120,
- ImageResolution.QVGA_320x240 => 240,
- ImageResolution.VGA_640x480 => 480,
- ImageResolution.SVGA_800x600 => 600,
- ImageResolution.XGA_1024x768 => 768,
- ImageResolution.HD_1280x720 => 720,
- ImageResolution.SXGA_1280x1024 => 1024,
- ImageResolution.UXGA_1600x1200 => 1200,
- _ => 480
- };
- }
- /// <summary>
- /// 获取分辨率字符串 (格式: "宽度x高度")
- /// </summary>
- public string GetResolutionString()
- {
- return $"{GetWidth()}x{GetHeight()}";
- }
- /// <summary>
- /// 转换为硬件协议分辨率枚举值(十六进制)
- /// 硬件分辨率枚举:
- /// 1-QQVGA: 160X120
- /// 6-QVGA: 320X240
- /// 10-VGA: 640X480
- /// 11-SVGA: 800X600
- /// 12-XGA: 1024X768
- /// 13-HD: 1280x720
- /// 14-SXGA: 1280X1024
- /// 15-UXGA: 1600X1200
- /// </summary>
- public byte GetHardwareResolutionCode()
- {
- // 映射Unity分辨率到硬件分辨率枚举值
- return resolution switch
- {
- ImageResolution.QQVGA_160x120 => 0x01, // 1-QQVGA: 160X120
- ImageResolution.QVGA_320x240 => 0x06, // 6-QVGA: 320X240
- ImageResolution.VGA_640x480 => 0x0A, // 10-VGA: 640X480
- ImageResolution.SVGA_800x600 => 0x0B, // 11-SVGA: 800X600
- ImageResolution.XGA_1024x768 => 0x0C, // 12-XGA: 1024X768
- ImageResolution.HD_1280x720 => 0x0D, // 13-HD:1280x720
- ImageResolution.SXGA_1280x1024 => 0x0E, // 14-SXGA: 1280X1024
- ImageResolution.UXGA_1600x1200 => 0x0F, // 15-UXGA: 1600X1200
- _ => 0x0A // 默认VGA
- };
- }
- /// <summary>
- /// 将质量值(0-100)转换为硬件清晰度值(0-63,十六进制)
- /// 硬件质量范围:0-63
- /// </summary>
- public byte GetHardwareQuality()
- {
- // UI中直接使用0-63,与硬件保持一致
- return (byte)Mathf.Clamp(quality, 0, 63);
- }
- }
- /// <summary>
- /// 图片分辨率选项(与硬件分辨率枚举一一对应)
- /// 1-QQVGA: 160X120
- /// 6-QVGA: 320X240
- /// 10-VGA:640X480
- /// 11-SVGA: 800X600
- /// 12-XGA: 1024X768
- /// 13-HD:1280x720
- /// 14-SXGA: 1280X1024
- /// 15-UXGA: 1600X1200
- /// </summary>
- public enum ImageResolution
- {
- QQVGA_160x120 = 0,
- QVGA_320x240 = 1,
- VGA_640x480 = 2,
- SVGA_800x600 = 3,
- XGA_1024x768 = 4,
- HD_1280x720 = 5,
- SXGA_1280x1024 = 6,
- UXGA_1600x1200 = 7
- }
- }
|