一个简单的读取图片并显示的例子
Halcon代码只有三行
dev_open_window(0, 0, 512, 512, 'black', WindowHandle)
read_image (Image, 'F:/MeasureGritSize/detection/images/1_3.bmp')
dev_display(Image)
如图
导出
查看导出的文件
接下来运行vs,新建Windows窗体应用 项目
在控件工具箱中鼠标右键-->选择项 添加halcon控件
完成后工具箱中多了halcon的控件
拖动控件到窗口
把halcon导出的类添加到项目。项目右键-->添加现有项目
找到刚才halcon导出的文件,添加之。
在vs中打开并修改这个文件,修改结果如下:
-------------------------------------------------------------我是分隔线--------------------------------------------------
//
// File generated by HDevelop for HALCON/.NET (C#) Version 19.11.0.0
// Non-ASCII strings in this file are encoded in UTF-8.
//
// Please note that non-ASCII characters in string constants are exported
// as octal codes in order to guarantee that the strings are correctly
// created on all systems, independent on any compiler settings.
//
// Source files with different encoding should not be mixed in one project.
//
#define NO_EXPORT_APP_MAIN //zhansh添加条件编译语句
using HalconDotNet;
public partial class HDevelopExport
{
#if !(NO_EXPORT_MAIN || NO_EXPORT_APP_MAIN)
public HDevelopExport()
{
// Default settings used in HDevelop
HOperatorSet.SetSystem("width", 512);
HOperatorSet.SetSystem("height", 512);
if (HalconAPI.isWindows)
HOperatorSet.SetSystem("use_window_thread","true");
action();
}
#endif
#if !NO_EXPORT_MAIN
// Main procedure
public void action(HTuple hv_WindowHandle)//zhansh 此函数改成 public
{
// Local iconic variables
HObject ho_Image;
// Local control variables
//HTuple hv_WindowHandle = new HTuple();//zhansh 此变量改成函数参数
// Initialize local and output iconic variables
/* zhansh 注释掉这些
HOperatorSet.GenEmptyObj(out ho_Image);
HOperatorSet.SetWindowAttr("background_color","black");
HOperatorSet.OpenWindow(0,0,512,512,0,"visible","",out hv_WindowHandle);
ho_Image.Dispose();
*/
HDevWindowStack.Push(hv_WindowHandle);
HOperatorSet.ReadImage(out ho_Image, "F:/MeasureGritSize/detection/images/1_3.bmp");
if (HDevWindowStack.IsOpen())
{
HOperatorSet.DispObj(ho_Image, HDevWindowStack.GetActive());
}
ho_Image.Dispose();
hv_WindowHandle.Dispose();
}
#endif
}
#if !(NO_EXPORT_MAIN || NO_EXPORT_APP_MAIN)
public class HDevelopExportApp
{
static void Main(string[] args)
{
new HDevelopExport();
}
}
#endif
-------------------------------------------------------------我是分隔线--------------------------------------------------
回到winfom界面,双击按钮,添加代码如下:
-------------------------------------------------------------我是分隔线--------------------------------------------------
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;
namespace WindowsFormsAppWithHalcon
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
HDevelopExport hd = new HDevelopExport();//新建halcon导出程序类的对象
hd.action(hWindowControl1.HalconWindow);//把halcon显示控件作为实参
}
}
}
-------------------------------------------------------------我是分隔线--------------------------------------------------
项目修改为x64 环境
运行程序,点击按钮