方法一:
1、先在VPP中做下图的工具
图片选择随意,我在这就是随便选的
CogIPOneImageTool1工具作为显示;
2、拼图VPP中的内容
3、以下是代码部分(全部代码)
想复制的也有(贴心的呦)
foreach(ICogTool tool in mToolBlock.Tools)
mToolBlock.RunTool(tool, ref message, ref result);
CogImage8Grey Image1 = mToolBlock.Inputs["Image1"].Value as CogImage8Grey;//实例化输入图像1
CogImage8Grey Image2 = mToolBlock.Inputs["Image2"].Value as CogImage8Grey;//实例化输入图像2
int OutputImageHeight = Image1.Height > Image2.Height ? Image1.Height : Image2.Height;//声明一个整型变量,将Imagege1跟Image2中较大的那个传给整型变量
Bitmap OutImageBitmap = new Bitmap(Image1.Width + Image2.Width, OutputImageHeight);//实例化一个位图对象,即是要拼的图,位图的高=OutputImageHeight,位图的宽=Image1宽+Image2的宽
Graphics g = Graphics.FromImage(OutImageBitmap);//实例化一个画布对象
Bitmap Imageitmap1 = Image1.ToBitmap();//将输入图像1转换成Bitmap图像
Bitmap Imageitmap2 = Image2.ToBitmap();//将输入图像2转换成Bitmap图像
g.DrawImage(Imageitmap1, 0, 0, Image1.Width, Image1.Height);//将输入图像1换入拼图内,从坐标(0,0)开始,到坐标(Image1.Width,Image1.Height)结束
g.DrawImage(Imageitmap2, Image1.Width, 0, Image2.Width, Image2.Height);//将输入图像2画入拼图内,从坐标(Image1.Width, 0)开始,到坐标(Image2.Width, Image2.Height)
Imageitmap1.Dispose();//释放输入图像1
Imageitmap2.Dispose();//释放输入图像2
CogImage8Grey OutputImage = new CogImage8Grey(OutImageBitmap);//实例化一个CogImage8Grey,通过CogImage8Grey的构造函数将已经拼接好的Bitmap类型的拼图转换成CogImage8Grey
mToolBlock.Outputs["OutputImage"].Value = OutputImage;//将拼好的CogImage8Grey传给CogToolBlock的输出
return false;
以下还会陆续补充其他的图像拼接方法
方法二:
1、VPP内容:
2、拼接图像02 工具
第一部分:
第二部分:
以下代码全在 上图的方法中(GroupRun方法)
//清空集合
imgList.Clear();
// Run each tool using the RunTool function
foreach(ICogTool tool in mToolBlock.Tools)
{
if(tool is CogImageFileTool)
{
//如果是真实现场的相机,这里需要改成CogAcqFifoTooL
CogImageFileTool imageTool = (CogImageFileTool) tool;
imageTool.Run();
if(imageTool.OutputImage != null)
{
//将所有采到的图像,按上往下的顺序,依次保存在List集合中
imgList.Add((CogImage8Grey)imageTool.OutputImage);
}
}
}
CogImage8Grey img = new CogImage8Grey();
img.Allocate(imgList[0].Width*2,imgList[0].Height*2);
//指定画框
imageStitcher.DestinationImage = img;
imageStitcher.Region = null;
imageStitcher.RunParams.ImageAlignmentEnabled = true;
for (int i = 0; i < 4; i++)
{
//这里指定图像存放在画框中的起始XY点,然后程序跳转到if else下面
//将当前遍历到的照片贴进画框中
if(i == 0)
{
imageStitcher.RunParams.DestinationImageAlignmentX = 0;
imageStitcher.RunParams.DestinationImageAlignmentY = 0;
}
else if(i == 1)
{
imageStitcher.RunParams.DestinationImageAlignmentX = imgList[i].Width;
imageStitcher.RunParams.DestinationImageAlignmentY = 0;
}
else if(i == 2)
{
imageStitcher.RunParams.DestinationImageAlignmentX = 0;
imageStitcher.RunParams.DestinationImageAlignmentY = imgList[i].Height;
}
else
{
imageStitcher.RunParams.DestinationImageAlignmentX = imgList[i].Width;
imageStitcher.RunParams.DestinationImageAlignmentY = imgList[i].Height;
}
//将当前遍历到的图像贴进画框中
imageStitcher.InputImage = CogImageConvert.GetIntensityImage(imgList[i], 0, 0, imgList[i].Width, imgList[i].Height);
imageStitcher.Run();
}
mToolBlock.Outputs[0].Value = imageStitcher.OutputImage;
// IPImage = mToolBlock.Tools["CogIPOneImageTool1"] as CogIPOneImageTool;
// IPImage.InputImage =(CogImage8Grey)mToolBlock.Outputs[0].Value;
// IPImage.Run();
return false;