零基础小白实现C#调用halcon dll的过程,并测试程序证明C#halcon联合开发成功

news2024/11/16 9:18:17

本篇将介绍零基础小白实现C#调用halcon dll的过程,同时这其中涉及到很多知识,务必将HDevelop和VisualStudio安装成功。下面我将详细阐述C#调用halcon dll的过程,你的点赞和评论是我一直前行的动力。

1. C#调用Halcon DLL的过程

要在C#中调用Halcon DLL,执行图像处理操作,下面是详细的步骤,即使是零基础的初学者也可以理解和实现。

1.1 准备工作

步骤1:提前安装Halcon,并在文件夹钟复制出

  • 确保已安装Halcon软件。Halcon是一个强大的机器视觉库,提供了丰富的图像处理功能。安装时记下安装路径,稍后会用到(如若忘记,桌面图标,直接点击鼠标右键,打开文件位置即可看到(详细路径))。
  • 你会进入x64-win64的路径下,点击bin进入bin的路径下
  • 不要复制到app.config(切记)
  • 先复制起,后面再用

步骤2:创建C#项目

  • 打开Visual Studio,创建一个新的C#项目。
  • 选择"Windows Forms应用程序"或"控制台应用程序"项目模板,这取决于你想要的界面类型。
  • (下面是博主举例,选择的窗体应用)

    3.创建窗体应用时,命名和路径自行选择,命名按照C语言的命名规范即可

     

    4.创建窗体完成后,点击启动或者运行(目的是为了生成该窗体的.exe文件)

        

5.打开刚刚你的窗体路径,找到命名的文件,打开bin文件

也要Halcon,路径下的x64-win64,路径下的halcon.dll,复制并粘贴到下面的Debug路径下

(很重要,路径别沾错啦)

找到这个Debug路径,将上面所有复制的 .dell 和 .xml 文件,粘贴到这个文件路径下

1.2 引入Halcon库

步骤1:添加HalconDotNet.dll引用

  • 在VisualStudio界面中,找到解决方案资源管理器中,右键点击"引用"节点,选择“添加引用”。
  • 在Debug路径下,找到halcondotnet.dll文件,添加到引用中,选择并添加这个DLL
  • 添加完成过后,必须要确定,出现下面的这种解决方案资源管理器框中的halcondotnet。完成添加HalconDotNet.dll引用

步骤2:引入命名空间

  • 在C#代码的顶部,双击白色Form1界面,进入添加以下代码以引入Halcon的命名空间:
  • using HalconDotNet;
1.3 基本的Halcon操作

步骤1:创建图像对象

  • 在Halcon中,图像被存储在HObject对象中。首先,我们需要创建一个空的图像对象

HObject ho_Image = null;
HOperatorSet.GenEmptyObj(out ho_Image);

步骤2:读取并显示图像

  • 使用Halcon函数读取图像并在窗口中显示:
// 读取图像
HOperatorSet.ReadImage(out ho_Image, "test_image.jpg");

// 打开一个窗口用于显示图像
HTuple hv_WindowID;
HOperatorSet.OpenWindow(0, 0, 512, 512, 0, "visible", "", out hv_WindowID);

// 显示图像
HOperatorSet.DispObj(ho_Image, hv_WindowID);

在上面的代码中,ReadImage函数用于从指定路径加载图像,OpenWindow函数创建一个窗口,DispObj函数将图像显示在窗口中。

2. 如何写一个测试程序证明C# Halcon联合开发成功

要验证C#与Halcon的结合是否成功,可以编写一个简单的测试程序,加载图像并执行一些基本的图像处理操作,如边缘检测。以下是详细的步骤:

2.1 初始化窗口

在程序的Main函数中,首先需要初始化一个窗口来显示图像:

static void Main(string[] args)
{
    // 初始化Halcon窗口
    HTuple hv_WindowID;
    HOperatorSet.OpenWindow(0, 0, 512, 512, 0, "visible", "", out hv_WindowID);
    HOperatorSet.SetPart(hv_WindowID, 0, 0, 511, 511);
}
2.2 加载图像并进行处理

加载图像并使用边缘检测算法(即阈值分割)处理它:

HObject ho_Image, ho_Edges;
HOperatorSet.ReadImage(out ho_Image, "test_image.jpg");

// 使用Canny算子检测图像的边缘
HOperatorSet.EdgesSubPix(ho_Image, out ho_Edges, "canny", 1, 20, 40);
2.3 显示处理结果

将原始图像和处理后的图像显示在窗口中:

// 显示原始图像
HOperatorSet.DispObj(ho_Image, hv_WindowID);

// 显示边缘检测后的图像
HOperatorSet.DispObj(ho_Edges, hv_WindowID);

Console.WriteLine("图像处理完成,按任意键退出...");
Console.ReadKey();

运行程序,如果窗口中成功显示了处理后的图像,则表明运行程序,如果窗口中成功显示了处理后的图像,则表明C#与Halcon的联合开发已经成功。的联合开发已经成功。

下图是博主,C#与Halcon的梦幻联动成功的截图,需要源代码或文件的,可以主页找博主,分享给一路学习,一路奋进的你们。

我相信,你们的点赞和评论是支持我前进的最大动力,我会在这里更新我的学习之路,希望我的学习路程会对你们有一定帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2053107.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

选择TPM管理咨询公司,这几点是关键!

在这个日新月异的商业时代,企业的竞争力不仅体现在产品和服务上,更在于其内部管理的精细化与高效化。TPM作为提升企业综合生产效率的利器,正逐步成为众多企业转型升级的必然选择。然而,如何在众多TPM管理咨询公司中慧眼识珠&#…

嘉盛:股指、国债及商品期货分析

股指展望中证全指在2024年下半年可能迎来约20%的上涨空间。尽管市场估值较低,风险溢价仍维持在高位,这提升了指数的配置性价比。预计无风险利率将继续维持在较低水平,对中证全指估值产生积极影响。盈利方面,预计下半年中证全指EPS…

【广东】邀您共赴纷享销客生态伙伴大会

在数字化浪潮的驱动下,CRM行业正迎来前所未有的创新机遇。作为CRM领域的引领者,纷享销客特别举办“纷享销客2024生态伙伴大会(广东站)”。我们诚挚邀请各位生态伙伴莅临现场,共同探讨SaaS CRM行业的最新趋势&#xff0…

haproxy负载均衡+mysql读写分离

haproxy负载均衡 [roothaproxy01 ~]# yum -y install ntpdate [roothaproxy01 ~]# yum -y install ntp [roothaproxy01 ~]# systemctl start ntpd 安装haproxy [roothaproxy01 ~]# yum -y install ntpdate 配置文件的地址 [roothaproxy01 ~]# rpm -ql haproxy [roothap…

美摄科技携手蔚来汽车,共创用户出行新体验!

7月27日,蔚来举办了以 AI 为主线的 “NIO IN 2024 蔚来创新科技日”,此次活动展示了蔚来在智能电动汽车领域最新探索与成果,为中国乃至全球的智能汽车行业树立了新的标杆。当晚,央视《主播说联播》以“中国智能车在全球竞争的另一…

MIT6.s081 2021 Lab Multithreading

Uthread: switching between threads 思路 xv6 已经实现了进程的切换机制,本实验要求参考进程的切换,实现一个用户态线程的切换。 要实现线程切换,必然涉及上下文,即寄存器的保存和恢复,那么需要保存哪些寄存器&…

建筑工程项目管理系统-计算机毕设Java|springboot实战项目

🍊作者:计算机毕设匠心工作室 🍊简介:毕业后就一直专业从事计算机软件程序开发,至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长:按照需求定制化开发项目…

建筑工地安全检查

在现代化的建筑工地中,安全始终是至关重要的核心问题。随着科技的不断进步,凡尔码建筑工地安全系统应运而生,灵活根据施工现场管理要求搭建建筑工地安全系统各个模块,为施工安全带来了全新的保障。 如何注册建筑工地安全系统后台…

自动打电话软件给企业带来了什么?

使用机器人外呼系统肯定都是想要给自己企业带来好处和解决问题的,想让自己的企业有所改变,有更好的发展,所以才会选择使用机器人外呼系统。而它也确实没让大家失望,使用了机器人外呼系统之后确实有许多企业发生了很大改变和进步&a…

鲁棒性目标检测 TOP2 方案分享

关联比赛: ACM MM2021 安全AI挑战者计划第七期:鲁棒性标识检测 ACM MM2021 鲁棒性目标检测比赛 TOP 2 方案 ​ 赛题背景 在商品知识产权领域,知识产权体现为在线商品的设计和品牌。不幸的是,在每一天,存在着非法商户通过一些…

一文学会本地部署可视化应用JSONCrack并配置公网地址实现远程协作

文章目录 前言1. Docker安装JSONCrack2. 安装Cpolar内网穿透工具3. 配置JSON Crack界面公网地址4. 远程访问 JSONCrack 界面5. 固定 JSONCrack公网地址 前言 本文主要介绍如何在Linux环境使用Docker安装数据可视化工具JSONCrack,并结合cpolar内网穿透工具实现团队在…

[Python学习日记-9] Python中的运算符

简介 计算机可以进行的运算有很多种,但可不只加减乘除这么简单,运算按种类可分为算数运算、比较运算、逻辑运算、赋值运算、成员运算、身份运算、位运算,而本篇我们暂只介绍算数运算、比较运算、逻辑运算、赋值运算 算数运算 一、运算符描述…

猫头虎分享:Python库 Pillow 的简介、安装、用法详解入门教程

猫头虎分享:Python库 Pillow 的简介、安装、用法详解入门教程 📚 大家好,今天猫头虎要和大家分享一款非常实用的 Python 图像处理库——Pillow。 💡 Pillow 是 Python 中非常流行的图像处理库,基于已经停止维护的 PI…

CE修改器步骤9学习教程

一、打开教程,因为我的电脑是64位的,所以打开这个(x86_64) 二、 跳转到步骤9,并让ce读取其内存 三、使用之前教程学到的知识,找到四个角色的健康值地址(找到即可,不必找基址&#xf…

【STM32 FreeRTOS】Tickless低功耗模式

STM32低功耗模式 STM32 提供了 3 种低功耗模式,以达到不同层次的降低功耗的目的 睡眠模式(内核停止工作,外设仍在运行)停止模式(所有时钟都停止)待机模式( 1.8 V 内核电源关闭) Fr…

Qt-认识Qt(1)

目录 QT是做什么的? 什么是QT GUI开发的各种技术方案 QT支持的平台 Qt的版本和优点 开发工具概述 Qt是做什么的? Qt是用来干嘛的? 什么是Qt Qt是⼀个跨平台的C图形用户界⾯应用程序框架。它为应用程序开发者提供了建立艺术级图形界⾯所…

SSH远程管理/TCP Wrappers访问控制

文章目录 SSH远程管理/TCP Wrappers访问控制SSH(Secure Shell)协议OpenSSH配置信息服务监听选项用户登录控制登录验证方式 常用目录---ssh 远程安全登录---scp 远程安全复制---sftp FTP上下载 配置密钥对验证环境配置ECDSA算法RSA算法RSA算法实操在centos7 IP:20.0.0.51操作一、…

【嵌入式linux开发】智能家居入门5:老版ONENET,多协议接入(QT、微信小程序、HTTP协议、ONENET云平台、旭日x3派)

智能家居入门5(QT、微信小程序、HTTP协议、ONENET云平台、旭日x3派) 前言一、QT界面设计二、云平台产品创建与连接三、下位机端QT代码总览:四、微信小程序端代码总览五、板端测试 前言 前四篇智能家居相关文章都是使用STM32作为主控&#xf…

用时间序列数据画蜡烛图

数据集:时间序列数据集(2024.8.16收集)-修改date资源-CSDN文库 示例一 import pandas as pd import mplfinance as mpf# 读取CSV文件 df pd.read_csv(999999_dcolhchg.csv)# 将日期列加上19000000,然后转换为日期格式 df[date]…

Jmeter系列之作用域、执行顺序

这一节主要解释元件作用域和执行顺序,以及整理之前说过的参数化的方式。 作用域 之前也留下了一个问题。怎么给不同的请求设置不同的Header?后续也透露了可以使用Sample Controller,结合元件的作用域来实现 在Jmeter中,元件的作…