c#运行视觉halcon代码报错,好像内存泄露,但是我找不到问题点。试了Gc垃圾回收,
代码如下,模板匹配:
private void Read_modelNCC()
{
try
{
ho_Rectangle_model.Dispose();
HOperatorSet.ClearNccModel(hv_ModelID);
}
catch
{ }
try
{
hv_ModelID.Dispose();
HOperatorSet.ReadNccModel(get_path("hv_ModelID.sbm"), out hv_ModelID);
HOperatorSet.ReadRegion(out ho_Rectangle_model, get_path("ho_Rectangle_model.hobj"));
// HOperatorSet.CLOSE
}
catch
{
//label_state.Text = DateTime.Now.ToString() + "\r\n" +
// Name_now + "\r\n" +
// "未找到匹配模板,请重新建立模板!" + "" + "\r\n";
}
}
public void AffintModelNCC()
{
Read_modelNCC();
if (hv_ModelID.ToString() == "[]" || ho_Image_get.ToString() == "[]")
{
return;
}
#region 模板
//Matching 01: Get the reference position
hv_ModelRegionArea.Dispose(); hv_RefRow.Dispose(); hv_RefColumn.Dispose();//cleaning
HOperatorSet.AreaCenter(ho_Rectangle_model, out hv_ModelRegionArea, out hv_RefRow,
out hv_RefColumn);
////显示-------------------------------------
#endregion
using (HDevDisposeHelper dh = new HDevDisposeHelper())
{
try
{
Stopwatch sw = new Stopwatch();
sw.Start();
hv_Row_find_model.Dispose(); hv_Column_find_model.Dispose(); hv_Angle_find_model.Dispose(); hv_Scale_find_model.Dispose(); hv_Score_find_model.Dispose();//cleaning
//HOperatorSet.FindScaledShapeModel(ho_Image_get, hv_ModelID, (new HTuple(-30)).TupleRad()
//, (new HTuple(d_angle_stop)).TupleRad(), 0.95, 1.05, Convert.ToDouble(TB_socre.Text), 1, 0.5, "least_squares", (new HTuple(5)).TupleConcat(
//1), 0.75, out hv_Row_find_model, out hv_Column_find_model, out hv_Angle_find_model, out hv_Scale_find_model, out hv_Score_find_model);
hv_Row_find_model.Dispose(); hv_Column_find_model.Dispose();
hv_Angle_find_model.Dispose(); hv_Scale_find_model.Dispose(); hv_Score_find_model.Dispose();//cleaning
HOperatorSet.FindNccModel(ho_Image_get, hv_ModelID, (new HTuple(-30)).TupleRad(),
(new HTuple(30)).TupleRad(), ModelScore, 1, 0.5, "false", 0, out hv_Row_find_model, out hv_Column_find_model,
out hv_Angle_find_model, out hv_Score_find_model);
//add
hv_HomMat2D.Dispose();//cleaning
