Haclon和Winform的(涉及图像展示,绘制矩阵,裁剪,模板匹配)

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);

        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值