首先还是官方一下,哈哈!
本文是我开发的一个小demo,我将多种相机集成到该demo中,方便链接调试各个厂家的相机。
主要添加了海康、大恒和巴斯勒相机,整个程序的设计框架不外乎也就接口与继承的技术。如果你需要添加其他的相机进来,可以直接添加对应厂家的库,写好自己的类就行了。
下面是软件的部分程序内容和软件展示:
软件运行效果
部分程序:
namespace MyCamCtrl
{
public class CamFactory
{
public CamFactory() { if (CameraList == null) CameraList = new List(); }
private static List<ICamera> CameraList { get; set; } = new List<ICamera>() { };
/// <summary>
/// 按相机品牌获取相近SN枚举
/// </summary>
/// <param name="brand"></param>
/// <returns></returns>
public static List<string> GetDeviceEnum(CameraBrand brand)
{
ICamera camera = null;
switch (brand)
{
case CameraBrand.DaHeng:
camera = new DHCamera();
break;
case CameraBrand.HaiKang:
camera = new HaiKCamera();
break;
case CameraBrand.Basler:
camera = new BaslerCamera();
break;
default: break;
}
return camera?.GetListEnum();
}
/// <summary>
/// 按品牌创建相机
/// </summary>
/// <param name="brand"></param>
/// <returns></returns>
public static ICamera CreatCamera(CameraBrand brand)
{
ICamera returncamera = null;
switch (brand)
{
case CameraBrand.DaHeng:
returncamera = new DHCamera();
break;
case CameraBrand.HaiKang:
returncamera = new HaiKCamera();
break;
case CameraBrand.Basler:
break;
default:
break;
}
CameraList.Add(returncamera);
return returncamera;
}
/// <summary>
/// 获取对应SN的相机实例
/// </summary>
/// <param name="CamSN"></param>
/// <returns></returns>
public static ICamera GetItem(string CamSN)
{
ICamera cameraStandard = null;
if (CameraList.Count < 1) return cameraStandard;
foreach (var item in CameraList)
{
if ((item as BaseCamera).SN.Equals(CamSN))
{
cameraStandard = item;
break;
}
}
return cameraStandard;
}
/// <summary>
/// 注销相机
/// </summary>
/// <param name="decamera"></param>
public static void DestroyCamera(ICamera decamera)
{
CameraList?.Remove(decamera);
decamera?.CloseDevice();
}
/// <summary>
/// 注销所有相机
/// </summary>
public static void DestroyAll()
{
if (CameraList.Count < 1) return;
foreach (var camereaitem in CameraList)
{
camereaitem?.CloseDevice();
}
CameraList?.Clear();
}
}
}
如果有需要,可以下载源代码:
https://download.csdn.net/download/weixin_43311534/89578017