/// <summary>
/// 流程执行一次进入Process函数
/// </summary>
/// <returns></returns>
public bool Process()
{
//每次执行将进入该函数,此处添加所需的逻辑流程处理
//实例化ImageData类型图像
ImageData img=new ImageData();
GetImageValue("in0",ref img);
HObject ho_image;
HOperatorSet.GenEmptyObj(out ho_image);
if (img.PixelFormat == ImagePixelFormate.MONO8)
{
//开辟空间
IntPtr grayPtr=Marshal.AllocHGlobal(img.Width*img.Heigth);
//向内存空间中写入数据
Marshal.Copy(img.Buffer,0,grayPtr,img.Buffer.Length);
HTuple w,h,s;
w=img.Width;
h=img.Heigth;
s=grayPtr;
HOperatorSet.GenImage1(out ho_image,"byte",w,h,grayPtr);
HTuple w1,h1,s1;
HOperatorSet.GetImageSize(ho_image,out w1,out h1);
SetIntValue("out1",h1);
SetImageValue("out0",img);
//创建一个二维码数据class模型
HObject ho_SymbolXLDs;
HTuple hv_DataCodeHandle = null, hv_ResultHandles = null;
HTuple hv_DecodedDataStrings = null;
//创建一个二维码数据class模型
HOperatorSet.CreateDataCode2dModel("QR Code", "default_parameters", "maximum_recognition",
out hv_DataCodeHandle);
//-检测和读取图像中的二维数据代码符号或训练二维数据代码模型。
HOperatorSet.FindDataCode2d(ho_image, out ho_SymbolXLDs, hv_DataCodeHandle, "train",
"all", out hv_ResultHandles, out hv_DecodedDataStrings);
//删除2D数据代码模型并释放分配的内存。
HOperatorSet.ClearDataCode2dModel(hv_DataCodeHandle);
ho_image.Dispose();
ho_SymbolXLDs.Dispose();
SetStringValue("out2",hv_DecodedDataStrings);
//用完记得释放指针
Marshal.FreeHGlobal(grayPtr);
}
return false;
}