Haclon代码:
展示图片
dev_clear_window()
*设置窗口大小和颜色
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
*获取图片
read_image (Plane, 'D:/plane.jpg')
*展示图片
dev_display (Plane
绘制矩阵
dev_clear_window()
*设置窗口大小和颜色
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
*获取图片
read_image (Plane, 'D:/plane.jpg')
*展示图片
dev_display (Plane)
*绘制矩阵
draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2)
gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)
*抠图
reduce_domain (Plane, Rectangle, ImageReduced)
*裁剪
crop_domain (ImageReduced, ImagePart)
*模板匹配
dev_clear_window()
*设置窗口大小和颜色
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
*获取图片
read_image (Plane, 'D:/plane.jpg')
*展示图片
dev_display (Plane)
*模板匹配
*创建匹配模板
create_shape_model (ImagePart, 'auto', -0.39, 0.79, 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID1)
read_shape_model ('D:/C#/test.shm', ModelID)
*保存形状匹配模板
write_shape_model (ModelID, 'D:/C#/test.shm')
*查找模板
find_shape_model (Plane, ModelID, -0.39, 0.79, 0.5, 1, 0.5, 'least_squares', 0, 0.9, Row, Column, Angle, Score)
*标出模板在原图的位置
disp_cross (WindowHandle, Row, Column, 100, Angle)
*展示柜模板位置信息
disp_message (WindowHandle, '定位结果是:坐标ROW: '+Row+' COLUMN:'+Column,'window',10,10,'black', 'true')
C#代码
1.导入Haclon
点击visual studio的工具箱,右键,点击选择项,点击浏览,选择halcondotnet.dll,
并把hWindowControl控件拉入窗体
2.将解决方案普通改为X64
using HalconDotNet;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using static System.Net.Mime.MediaTypeNames;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
namespace WindowsFormsApp4
{
public partial class Form1 : Form
{
HObject ho_Plane;
HTuple WindowID;
public Form1()
{
InitializeComponent();
HOperatorSet.GenEmptyObj(out ho_Plane);
this.Load += Form1_Load;
}
private void Form1_Load(object sender, EventArgs e)
{
WindowID = hWindowControl1.HalconWindow;
}
/// <summary>
/// 展示图片的按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
HOperatorSet.SetColor(WindowID, "red");
HOperatorSet.ReadImage(out ho_Plane, "D:/plane.jpg");//winform按钮读取图片
HOperatorSet.DispImage(ho_Plane,WindowID);
HTuple hv_ModelID=new HTuple();
HTuple hv_Row = new HTuple();
HTuple hv_Column = new HTuple();
HTuple hv_Angle = new HTuple();
HTuple hv_Score = new HTuple();
HTuple hv_WindowHandle = new HTuple();
//模板匹配
//创建匹配模板
//create_shape_model (ImagePart, 'auto', -0.39, 0.79, 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID1)
hv_ModelID.Dispose();
HOperatorSet.ReadShapeModel("D:/C#/test.shm", out hv_ModelID);
//保存形状匹配模板
HOperatorSet.WriteShapeModel(hv_ModelID, "D:/C#/test.shm");
//查找模板
hv_Row.Dispose(); hv_Column.Dispose(); hv_Angle.Dispose(); hv_Score.Dispose();
HOperatorSet.FindShapeModel(ho_Plane, hv_ModelID, -0.39, 0.79, 0.5, 1, 0.5, "least_squares",
0, 0.9, out hv_Row, out hv_Column, out hv_Angle, out hv_Score);
//标出模板在原图的位置
HOperatorSet.DispCross(WindowID, hv_Row, hv_Column, 100, hv_Angle);
//展示柜模板位置信息
// label2.Text= ("定位结果是:坐标ROW: " + hv_Row + " COLUMN:" +hv_Column+"window"+10+ 10);
}
}
}