最近公司增加了一些UVC协议的摄像头接口,下面是一些资料整理(感谢项目组内志宇同学的耐心指导)
摄像头插件为AForge,所以IKsControl接口对象AForge.FilterInfo。(IKsControl接口:提供了控制 KS 过滤器或 KS 引脚的用户模式方法。参考:https://learn.microsoft.com/en-us/windows-hardware/drivers/stream/ks-h-typedef-reference)
/// <summary>
/// UVC协议扩展接口
/// </summary>
public class Vc01UvcExtension
{
/// <summary>
/// 指定标识内核流方法集的 GUID。
/// </summary>
private readonly Guid _ksMethodSetGuid = new("A29E7641-DE04-47E3-8B2B-F4341AFF003B");
private const string Vc01CameraName = "VC01";
private IKsControl _pControl;
/// <summary>
/// 初始化UVC协议扩展接口
/// </summary>
/// <param name="cameraName">摄像头名称</param>
public string Init(string cameraName = "")
{
var cameraInfos = CameraDevicesManager.GetCameraInfos();
if (cameraInfos.Count == 0)
{
return "未接入摄像头";
}
if (string.IsNullOrWhiteSpace(cameraName))
{
cameraName = Vc01CameraName;
}
var vc01CameraInfo = cameraInfos.FirstOrDefault(cameraInfo => cameraInfo.Name.ToUpper().Contains(cameraName));
if (vc01CameraInfo == null || string.IsNullOrWhiteSpace(vc01CameraInfo.Identity))
{
return "未接入8K摄像头";
}
_pControl = FilterInfo.CreateFilter(vc01CameraInfo.Identity) as IKsControl;
return _pControl == null ? "转换IKsControl接口失败" : "";
}
/// <summary>
/// 获取UVC扩展属性
/// </summary>
/// <param name="type"></param>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public DvbResult<T> GetUvcExtensionProperty<T>(int type) where T : struct
{
var ksProperty = new KsMethod(_ksMethodSetGuid, type, (int)(KsPropertyTy

文章介绍了如何利用AForge库中的IKsControl接口与UVC协议进行交互,初始化摄像头并获取或设置UVC扩展属性。通过KsProperty方法进行属性的获取和设置,处理过程中需要注意数据类型的匹配和转换。
最低0.47元/天 解锁文章
1267

被折叠的 条评论
为什么被折叠?



