c#+halcon1.3 从窗口创建形状匹配模板
前面版添加创建模板按钮,并在单机事件中添加如下代码
HOperatorSet.SetColor(hWindowControl1.HalconWindow, "green");
hWindowControl1.Focus();
HTuple r, c, phi, len1, len2;
HObject rectangle;
hWindowControl1.Focus();
HOperatorSet.DrawRectangle2(hWindowControl1.HalconWindow, out r, out c, out phi, out len1, out len2);
HOperatorSet.GenRectangle2(out rectangle, r, c, phi, len1, len2);
HOperatorSet.DispObj(rectangle, hWindowControl1.HalconWindow);
HOperatorSet.ReduceDomain(himage, rectangle,out temp);
HOperatorSet.CreateShapeModel(temp, 4, (new HTuple(0)).TupleRad(), (new HTuple(360)).TupleRad(),
(new HTuple(0.1)).TupleRad(), "auto", "use_polarity", (new HTuple(4)).TupleConcat(30), 4,out modelID);
HOperatorSet.GetShapeModelContours(out ho_ModelContours, modelID, 1);
//HOperatorSet.GetImageSize(ho_ModelContours, out hv_Width, out hv_Height);//获取图像尺寸
//HOperatorSet.SetPart(hWindowControl2.HalconWindow, 0, 0, hv_Height - 1, hv_Width - 1);//设置显示控件尺寸
HOperatorSet.SmallestRectangle1Xld(ho_ModelContours, out hv_Row1, out hv_Column1, out hv_Row2,
out hv_Column2);
hv_RefRow = ((hv_Row2.TupleMax()) - (hv_Row1.TupleMin())) / 2;
hv_RefColumn = ((hv_Column2.TupleMax()) - (hv_Column1.TupleMin())) / 2;
HOperatorSet.VectorAngleToRigid(0, 0, 0, hv_RefRow, hv_RefColumn, 0, out hv_HomMat2D);
HOperatorSet.AffineTransContourXld(ho_ModelContours, out ho_TransContours, hv_HomMat2D);
HOperatorSet.SetColor(hWindowControl2.HalconWindow, "green");
HOperatorSet.DispObj(ho_TransContours, hWindowControl2.HalconWindow);
-----------------------------------------------------
其作用是
HOperatorSet.DrawRectangle2----从窗口通过鼠标交互创建矩形roi
HOperatorSet.GenRectangle2-----获取窗口鼠标输出的位置和角度生成矩形region
HOperatorSet.ReduceDomain-----使用region裁剪图像为temp图像
HOperatorSet.CreateShapeModel-----对temp图像进行学习输出modelID
剩下的就是显示形状匹配模板。