HALCON的python下的使用方法(直接开发,不需要调用.hdev文件)

news2024/6/30 0:32:37

一、环境配置方法

基本要求: Python版本>=3.8 ; Halcon版本 >=20.11

1)首先创建一个python版本大于3.8的基础环境

2)然后查看自己的halcon的版本,在该环境下安装halcon

如图所示,版本是20110,执行以下语句,完成halcon的安装

pip install mvtec-halcon==20110

安装成功后,出现如下的图像:

3)将halcon相关的dll放在python.exe所在的文件夹下。halcon的相关dll可以在你安装的halcon的文件位置获得。拷贝以下命名的dll,进行拷贝,放置在创建的python环境中python.exe所在的位置。

拷贝后,如图所示:

4)验证是否成功

import halcon

没有报错证明安装成功,可以使用下面的代码进行测试

import halcon as ha

WindowHandle = ha.open_window(0, 0, 500, 400, father_window=0, mode='visible', machine='')
Image = ha.read_image('die/die_03')
ha.disp_obj(Image, WindowHandle)
ha.wait_seconds(5)

5)opencv和halcon基于python的图像转换的方法

1,Python将Halcon图像转OpenCV(CV2)图像(高效)

import cv2
import halcon as ha
from PIL import Image
from halcon.numpy_interop import himage_as_numpy_array
img = cv2.imread(r"C:\Users\11716\Desktop\DogCat-seg\images\train\13.jpg")

image = ha.read_image(r'C:\Users\11716\Desktop\DogCat-seg\images\train\6.jpg')



res = himage_as_numpy_array(image)

print(type(res))

img = cv2.cvtColor(res,cv2.COLOR_RGB2BGR)
print(type(img))

img= Image.fromarray(cv2.cvtColor(img,cv2.COLOR_BGR2RGB))

img.show()
print(type(img))


 2,cv2 np array 转 HObject

import cv2
import halcon as ha
from PIL import Image
from halcon.numpy_interop import himage_as_numpy_array,himage_from_numpy_array
img = cv2.imread(r"C:\Users\11716\Desktop\DogCat-seg\images\train\13.jpg")

image = ha.read_image(r'C:\Users\11716\Desktop\DogCat-seg\images\train\6.jpg')



res = himage_as_numpy_array(image)

print(type(res))

img = cv2.cvtColor(res,cv2.COLOR_RGB2BGR)
print(type(img))


## cv2 np array 转 HObject
hobjectImg = himage_from_numpy_array(img)

print(type(hobjectImg))

6)复杂功能的实现,测量功能的实现方法

 对于负责功能基于halcon的实现,编程方法和在halcon中的不太一样,需要将输出的结果写在功能函数的前面。如下面实现的复杂的功能测量功能的实现:

import halcon as ha
import cv2
from halcon.numpy_interop import himage_from_numpy_array

import time

WindowHandle = ha.open_window(0, 0, 500, 400, father_window=0, mode='visible', machine='')

mat_image=cv2.imread('143228_014.png',-1)


start_time_init = time.time()
hobjectImg = himage_from_numpy_array(mat_image)
Width, Height=ha.get_image_size(hobjectImg)


Row = 77
Column = 669
Phi = -1.5708
print(Phi)
Length1 = 31
Length2 = 24
Rectangle=ha.gen_rectangle2(Row, Column, Phi, Length1, Length2)
print(Rectangle)

Interpolation = 'nearest_neighbor'
MeasureHandle=ha.gen_measure_rectangle2 (Row, Column, Phi, Length1, Length2, Width, Height, Interpolation)


Sigma = 1.0
Threshold = 30
Transition = 'all'
Select = 'all'
RowEdge,ColumnEdge,Amplitude,Distance= ha.measure_pos (hobjectImg, MeasureHandle, Sigma, Threshold, Transition, Select)
totall_distance =sum(Distance)

end_time_init = time.time()
elapsed_time_init = (end_time_init - start_time_init)*1000
print("检测时间为: {} ms".format(elapsed_time_init))

print(totall_distance)
# ha.write_image(hobjectImg,'png',0,'F:/1.png')

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

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

相关文章

Java,多线程,线程的两种创建方式

首先是多线程的一些相关概念: 相关概念: 程序(program):为完成特定任务,用某种语言编写的一组指令的集合。即指一段静态(指不在执行中)的代码。 进程(process&#xf…

十分钟了解回归测试

1. 什么是回归测试(Regression Testing) 回归测试是一个系统的质量控制过程,用于验证最近对软件的更改或更新是否无意中引入了新错误或对以前的功能方面产生了负面影响(比如你在家中安装了新的空调系统,发现虽然新的空…

34 mysql limit 的实现

前言 这里来看一下 我们常见的 mysql 分页的 limit 的相的处理 这个问题的主要是来自于 之前有一个需要处理 大数据量的数据表的信息, 将数据转移到 es 中 然后就是用了最简单的 “select * from tz_test limit $pageOffset, $pageSize ” 来分页处理 但是由于 数据表的数…

[autojs]逍遥模拟器和vscode对接

第一步:启动autojs服务 第二步:去cmd查看ip地址,输入ipconfig 第三步:打开逍遥模拟器中的sutojs-左上角- 连接电脑,然后输入WLAN或者其他ip也行,根据自己电脑实际情况确认 此时vscode显示连接成功。我们写…

上传ipa到appstore最简单的方法

假如使用原生xcode开发ios的app,可以使用xcode提交打包好的ipa文件到app store,但是假如使用hbuilderx或者apicloud等H5工具开发的app,假如没有mac电脑,是无法将ipa提交到app store的。 因为苹果开发者并不能在线上传ipa到app st…

数据结构-图的应用

最小生成树(最小代价树) 对于一个带权连通无向图G(V,E),生成树不同,每棵树的权(即树中所有边上的权值之和)也可能不同。设R为G的所有生成树的集合,若T为R中边的权值之和最小的生成树,则T称为G的…

SPI简介及FPGA通用MOSI模块实现

简介 SPI(Serial Peripheral Interface,串行外围设备接口)通讯协议,是Motorola公司提出的一种同步串行接口技术。是一种高速、全双工、同步通信总线。在芯片中只占用四根管脚用来控制及数据传输。 优缺点: SPI通讯协…

VM17虚拟机设置网络,本地使用工具连接虚拟机

VM17虚拟机设置网络,本地使用工具连接虚拟机 下载及安装虚拟机不再说明,网络一堆教程。此处只对VM17设置网路及本地使用工具连接虚拟机操作,进行说明。 我下载的是VM17,网上有说VM16是较稳定的版本。想尝尝鲜,结果耗…

linux系统源码安装php5.6手把手教程

linux系统源码安装php5.6实用教程 1、下载php5.6安装包2、开始安装3、安装成功 1、下载php5.6安装包 wget http://mirrors.sohu.com/php/php-5.6.2.tar.gz在安装之前,我们需要安装php5.6编译时所依赖的软件包。如下: yum -y install gcc gcc-c lib2、开…

docker下的nginx代理转发到tomcat

多次尝试失败原因,修改nginx配置文件以后,需要./nginx.sh -s reload 下,之前一直不转发,好像完全没有跳转的意思,后来查了多篇文档,最简单的方法如下 docker 安装 nginx 和tomcat就不多说了,可…

一文6个步骤带你实现接口测试入门!

一、接口测试概述 1 什么是接口测试: 接口测试是测试系统组件间交互的一种测试。接口测试主要用于检测外部系统与系统之间,内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑…

CLion配置libtorch找不到xxx.dll

项目场景: 使用CLion配置libtorch时遇到该问题 问题描述 使用CLion配置libtorch时,CMakeLists.txt文件写完后,cmake也能成功,但是一旦运行代码就会报错找不到xxx.dll,比如找不到torch_cuda.dll或找不到c10.dll 原因分…

jsp基本表格和简单算法表格

基本表格&#xff1b; <% page language"java" contentType"text/html; charsetUTF-8"pageEncoding"UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd…

java项目之果蔬经营平台系统(ssm框架)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的果蔬经营平台系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 管理员&#xff1a;首页、个人…

Android 12 S 系统开机流程分析-FirstStageMain(一)

开机有好几种方式启动&#xff0c;本文主要讲的是按Power键开机流程。 本文参考AOSP 12原生代码&#xff0c;链接为&#xff1a;AOSP 12 Searchhttp://aospxref.com/android-12.0.0_r3/ 目录 1. BootLoader加载 2. kernel启动 3. init进程启动 3.1 FirstStageMain 3.1.1…

Windows安装Docker(无网)

Windows安装Docker&#xff08;无网&#xff09; window无网安装Docker 1. 开启虚拟化功能 1. 开启window的虚拟化功能 方式一&#xff1a;直接在window的搜索框搜索 “启用或关闭windows功能”&#xff0c;就可以快捷进入【启用或关闭windows功能】页面 方式二&#xff1…

Gui基础使用之项目部署

&#x1f3ac; 艳艳耶✌️&#xff1a;个人主页 &#x1f525; 个人专栏 &#xff1a;《Spring与Mybatis集成整合》《Vue.js使用》 ⛺️ 越努力 &#xff0c;越幸运。 1.gui图形化界面的使用 1.1 前期准备 新建仓库&#xff0c;具体操作如下&#xff1a; 初始化readme文件&…

如何使用fiddler实现手机抓包,Filters过滤器!

一、Fiddler与其他抓包工具的区别 1、Firebug虽然可以抓包&#xff0c;但是对于分析http请求的详细信息&#xff0c;不够强大。模拟http请求的功能也不够&#xff0c;且firebug常常是需要“无刷新修改”&#xff0c;如果刷新了页面&#xff0c;所有的修改都不会保存&#xff1b…

ChatRule:基于知识图推理的大语言模型逻辑规则挖掘11.10

ChatRule&#xff1a;基于知识图推理的大语言模型逻辑规则挖掘 摘要引言相关工作初始化和问题定义方法实验 摘要 逻辑规则对于揭示关系之间的逻辑联系至关重要&#xff0c;这可以提高推理性能并在知识图谱&#xff08;KG&#xff09;上提供可解释的结果。虽然已经有许多努力&a…

Java类和对象详解

文章目录 面向对象概述类和对象类定义和使用定义使用 对象引用对象的初始化和构造构造方法默认初始化就地初始化 面向对象概述 面向对象是一种现在主流的程序设计方法&#xff0c;现如今的大部分语言都支持面向对象&#xff0c;Java的面向对象是由C的面向对象衍生而来&#xf…