halcon简介
halcon是工业领域最著名的商业视觉软件,性能很好,当然也贵。 opencv是开源的,免费,但是不好用,需要自己写算法,太花时间和精力,所以准备尝试一下halcon
halcon安装
我安装的是21.05版,版本号为21050,属于是比较新的版本,license的话,官方每个月都提供可以试用1个月的试用License,每月更换的话,可以一直用。网上很多提供的,自行搜索。 安装没啥说的,正常安装,装完之后将License文件放入相应目录即可。 都弄好以后,桌面会出现2个图标 一个带XL,另一个不带,2个的区别是XL是专门用来处理超大图片文件,32k * 32k以上的图片用这个,一般的图片处理用不带XL的那个就可以了
anaconda安装
anaconda官网下载最新版本,我安装的是2022.05版本 安装的时候勾选路径选项,两个都勾上 我的安装路径是C:\anaconda3,记住这个路径,后面配置环境的时候要用到,在C:\anaconda3\envs。 装好以后是自带py thon3.9,还有很多常用的库,省得一个一个去装了。
Anaconda的配置
在windows中用管理员权限打cmd.exe,输入conda create -n halcon python=3.9 ,即可在C:\anaconda3\env下创建一个名为halcon的开发环境。然后输入conda activate halcon 激活halcon环境,可以看到提示符发生了变化
安装Halcon库
继续安装Halcon库,pip install mvtec-halcon==21050 ,21050就是我安装的Halcon的版本号,这个数字一定要和已经安装的Halcon对应。可以在Halcon运行后,帮助–关于中找到版本信息。 安装完后,输入conda list 可以看到箭头所指的Halcon库已经安装。
pyCharm
我用的IDE是PyCharm,安装见这篇文章,跳过第1步即可。https://blog.csdn.net/13011803189/article/details/125114038 也可以直接去PyCharm官网下载,用免费的社区版就可以了,商业版的要收费,没必要。
新建工程
然后在Halcon的安装目录中复制halcon.dll, halconc.dll, halconcpp.dll, hdevenginecpp.dll 这4个文件到新建的工程中,版本对应的原因就在于此。版本号不同虽然大多数情况下也能用,但不能保证完全兼容。 我的Halcon安装目录是默认的,C:\Program Files\MVTec\HALCON-21.05-Progress\bin\x64-win64 弄好以后,在Pycharm中是这样的
Halcon在Pycharm中编程
第1个程序 ,测试环境
main.py中的内容如下,不用作任何修改,直接复制粘贴即可:
import halcon as ha
import os
if __name__ == '__main__':
img = ha.read_image('pcb')
width, height = ha.get_image_size_s(img)
print(width, height)
如果前面所有操作无误,应该会有打印输出 1109 871
第2个程序,显示窗口
halcon的函数很直观明了。
import halcon as ha
Image = ha.read_image('claudia')
Width, Height = ha.get_image_size(Image)
print(Width, Height)
WindowHandle1 = ha.open_window(0, 0, Width[0]/2, Height[0]/2,
father_window=0,mode='visible',machine='')
gray = ha.rgb1_to_gray(Image)
thres = ha.threshold(gray, 100, 200)
ha.disp_obj(Image, WindowHandle1)
ha.wait_seconds(2)
ha.disp_obj(gray, WindowHandle1)
ha.wait_seconds(2)
ha.disp_obj(thres, WindowHandle1)
ha.wait_seconds(2)
接下来就是学习各种算子了,这个推荐在Halcon自带的开发环境中进行,测试完成后再移植到这边即可。
需要注意的是,在halcon中编程的算子用法和在Python不太一样,比如最简单的在Halcon中读取一幅图像是这样,读取图像后,img作为图像变量是包含在函数调用中的:
read_image (img, 'pcb')
但是在Python中读取是这样,img是作为函数的返回参数:
img = ha.read_image('claudia')
涉及到变量操作的似乎都是如此,其他的异同随着学习的深入再看情况。
容易忽略的
4个DLL文件要复制到当前的项目目录中。 当前开发环境要安装halcon支持库: pip3 install mvtec-halcon==21050
|