表格里怎么做链接网站,惠州网站建设公司排名,肇庆做网站,物联网方案2.5 C#视觉程序开发实例1----CamManager实现模拟相机采集图片
1 目标效果视频 CamManager 2 CamManager读取本地文件时序 3 BD_Vision_Utility添加代码
3.0 导入链接库
BD_OperatorSets.dllSystem.Windows.Forms.dllOpencvSharp
3.1 导入VisionParam中创建的文件Util_FileO…2.5 C#视觉程序开发实例1----CamManager实现模拟相机采集图片
1 目标效果视频 CamManager 2 CamManager读取本地文件时序 3 BD_Vision_Utility添加代码
3.0 导入链接库
BD_OperatorSets.dllSystem.Windows.Forms.dllOpencvSharp
3.1 导入VisionParam中创建的文件Util_FileOP
并且添加代码GetFileNamewithextension,用于罗列文件夹中所有图片文件
/// summary
/// GetFileNamewithextension/// /summary/// param nameFilePath/param/// param nameFileName/parampublic void GetFileNamewithextension(string FilePath, ref Liststring FileName){//获取指定文件夹下的文件夹名try{FileName.Clear();if (FolderExist(FilePath)){string[] StrFileName Directory.GetFiles(FilePath);for (int i 0; i StrFileName.Length; i){string extension System.IO.Path.GetExtension(StrFileName[i]);//扩展名 “.aspx”if (extension .png || extension .bmp || extension .jpg || extension .jpeg)FileName.Add(StrFileName[i]);}}}catch (Exception ex){throw new Exception(GetFileNamewithextension : ex.Message);}}3.2 创建CamManager.cs
3.2.1 变量创建
/// summary
/// ImageFile_HANDLE
/// /summary
private struct ImageFile_HANDLE
{public int n_index;// 当前img file indexpublic Liststring list_imgs;// img file name listpublic void Release(){n_index -1;list_imgs.Clear(); }public ImageFile_HANDLE(int a0){n_index -1; list_imgs new Liststring();}
}
private int camCount;/// summary
/// imgfiles_cams
/// 管理各个相机的文件资源
/// /summary
private ImageFile_HANDLE[] imgfiles_cams;3.2.2 Constructor
public Cam_Manager(int _camCount)
{if (_camCount 1) _camCount 1;camCount _camCount;imgfiles_cams new ImageFile_HANDLE[camCount];for(int i0;i camCount;i){imgfiles_cams[i] new ImageFile_HANDLE();}
}3.2.3 open(int CamNO)
/// summary
/// 打开相机
/// /summary
/// returns/returns
public int Open(int CamNO)
{int nRet 0;if (CamNO 0 || CamNO camCount - 1) return -1;// To Dostring camFiles_path Application.StartupPath \\camSimulator\\Cam CamNO.ToString();ContextManager.get_fileopCtx().GetFileNamewithextension(camFiles_path, ref imgfiles_cams[CamNO].list_imgs);if (imgfiles_cams[CamNO].list_imgs.Count 0) imgfiles_cams[CamNO].n_index 0;else{nRet -1; }return nRet;
}3.2.4 grab(ref Mat ,ing CamNo)
public int Grab(ref Mat himg_tmp,int CamNO)
{
int nRet 0;
if (CamNO 0 || CamNO camCount - 1) return -1;
if (himg_tmp null) return -1; try
{if (imgfiles_cams[CamNO].list_imgs.Count 0)// 文件夹中有图片{// 读取图片索引imgfiles_cams[CamNO].n_index imgfiles_cams[CamNO].n_index % imgfiles_cams[CamNO].list_imgs.Count;// NewImage Cv2.ImRead( ContextManager.getCamCtx().AcqHandle[CamNO].list_imgs[ ContextManager.getCamCtx().AcqHandle[CamNO].n_index], ImreadModes.Color);BD_OperateSet.Assign_Temp(ref himg_tmp, Cv2.ImRead(imgfiles_cams[CamNO].list_imgs[imgfiles_cams[CamNO].n_index], ImreadModes.AnyColor));imgfiles_cams[CamNO].n_index;}else MessageBox.Show(Cam CamNO.ToString() 没有图像来源);
}
catch (Exception ex)
{nRet -2;
}
return nRet;
}3.2.5 close关闭相机
public int Close()
{int nRet 0;// To Do for(int i0;icamCount;i)imgfiles_cams[i].Release();Array.Clear(imgfiles_cams,0, imgfiles_cams.Length);return nRet;
}3.3 ContextManager中增加一个CamManager的实例|FileOP的实例
实现自动的资源管理和初始化
//Cam_Manager
private static Cam_Manager cam_Ctx;
public static Cam_Manager get_camCtx()
{if (cam_Ctx null) cam_Ctx new Cam_Manager(4);return cam_Ctx;
}
// FileOP Manager
private static Util_FileOP fileop_Ctx;
public static Util_FileOP get_fileopCtx()
{if (fileop_Ctx null) fileop_Ctx new Util_FileOP();return fileop_Ctx;
}4 下一节 我们会实现Form_Vision中的代码并且附上范例代码