从Group外部输入图像
用OpenCV从本地读图
当Group内部无图像源模块时,可以通过代码的方式将图片传入Group内部.实现方式有多种,可以使用OpenCV从本地读图,可在程序集搜索引用OpenCvSharp,同时将其复制本地的属性改为False.
1. 界面设计
增加加载图像按钮
2. 处理加载图像点击事件
private void button5_Click(object sender, EventArgs e)
{
//Group无图像源的输入图,用opencv从本地读图
Mat matImage = Cv2.ImRead(Application.StartupPath + "/GroupImage.jpg", ImreadModes.Grayscale);
uint dataLen = (uint)(matImage.Width * matImage.Height);
ImageBaseData_V2 image = new ImageBaseData_V2(matImage.Data,dataLen,matImage.Cols,matImage.Rows,VMPixelFormat.VM_PIXEL_MONO_08);
groupTool.ModuParams.SetInputImage_V2("ImageData0",image);
}
用Bitmap从本地读图
//用bitmap从本地读图
Bitmap bmp = new Bitmap(Application.StartupPath+"/GroupImage.jpg");
BitmapData bitmapData = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadOnly, PixelFormat.Format8bppIndexed);
uint datalen = (uint)(bitmapData.Width * bitmapData.Height);
ImageBaseData_V2 image1 = new ImageBaseData_V2(bitmapData.Scan0,datalen,bitmapData.Width,bitmapData.Height,VMPixelFormat.VM_PIXEL_MONO_08);
groupTool.ModuParams.SetInputImage_V2("ImageData0",image1);
bmp.UnlockBits(bitmapData);
运行
- 选择路径,导入没有图像源的Group
- 定义输入图像源参数名为ImageData0
- 检查各模块图像源是否正确配置为ImageData0
- 加载图像
- 执行一次
可以看到,已从本地读图的图像已成功传入Group内部,两直线及其夹角也正确显示.