海康visionmaster-Group输入输出图像数据的方法
描述
环境:VM4.0.0 + VS2015及以上
现象:Group 模块可以设置输入和输出,那如何进行图像数据的输入和输出?
解答
Group相当于一个模块,实例化Group,通过相关接口可以设置图像数据的输入和输出。
1)设置图像数据的输入,下面是以独立的Group为例,导入一个后缀为gro的独立Group。
C# IMVSGroupTool group=null; //加载group模块 group = IMVSGroupTool.LoadGroup(@"C:\Users\zhouyigen\Desktop\LackImage.gro", ""); //利用OpenCV的读图方法,读取图像 Mat matImage = Cv2.ImRead(@"C:\Users\zhouyigen\Desktop\Demo(2)\smile.png",ImreadModes.Grayscale); //实例化VM接口可接收的图像类型 InputImageData StImg = new InputImageData(); //设置图像参数 StImg.Names.DataName = "Imagein"; StImg.Names.HeightName = "ImageHeightin"; StImg.Names.WidthName = "ImageWidthin";
StImg.Names.PixelFormatName = "ImagePixelFormatin"; StImg.Height = matImage.Rows; StImg.Width = matImage.Cols; StImg.Pixelformat =
ImagePixelFormat.IMAGE_PIXEL_FORMAT_MONO8; StImg.DataLen = (uint)(matImage.Width * matImage.Height); StImg.Data = new byte[matImage.Width * matImage.Height]; //将读取到的图像拷贝给StImg Marshal.Copy(matImage.Data, StImg.Data, 0, matImage.Width * matImage.Height); // 设置图像数据
group.ModuParams.SetInputImage(StImg); //绑定渲染源
vmRenderControl1.ModuleSource = group;
也可以将流程中的Group实例化,再使用流程的SetInputImage接口。流程中的Group中没有图像源模块,Group的输入设置如下图,Group中的其他模块需要选择图像输入源,需要提前建立联系。
2)获取输出的图像数据
可以参考2.4.1,给Group中添加一个输出图像模块,通过输出图像模块来获取输出的图像数据byte。
也可以配置Group的显示设置,订阅输出图像模块,再依照2.4.1中获取流程中的图像数据方法,Imgaeout才是真正的图像名称。像素格式17301505为MONO8灰度图,像素格式 35127316为RGB24彩色图。