HALCON根据形状查找圆心

在场地上放置长方形块,寻找他们的圆心并且返回像素坐标

HALCON代码:

* Image Acquisition 01: Code generated by Image Acquisition 01
* Image Acquisition 01: Attention: The initialization may fail in case parameters need to
* Image Acquisition 01: be set in a specific order (e.g., image resolution vs. offset).
open_framegrabber ('DirectShow', 1, 1, 0, 0, 0, 0, 'default', 8, 'rgb', -1, 'false', 'default', '[1] Daheng Imaging Device 1', 0, -1, AcqHandle)
*set_framegrabber_param (AcqHandle, 'white_balance', 0)
*set_framegrabber_param (AcqHandle, 'exposure', -5)
grab_image_start (AcqHandle, -1)
while (true)grab_image_async (Image, AcqHandle, -1)count_channels (Image, Channels)
if (Channels == 3)rgb1_to_gray (Image, Image)
*真彩色转灰度图
elseif (Channels == 4)decompose4 (Image, ImageR, ImageG, ImageB, ImageA)compose3 (ImageR, ImageG, ImageB, MultiChannelImage)rgb1_to_gray (MultiChannelImage, Image)
endif*颜色反转* invert_image (Image, Image)*获取图像宽高
get_image_size (Image, Width, Height)
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')dev_display (Image)*动态二值化
D := 1
mean_image(Image, Mean, D*2+1, D*2+1)
dyn_threshold(Image, Mean, Seg, 2, 'light')
fill_up(Seg, SegFillUp)
connection(SegFillUp, segConnect)*找矩形
select_shape(segConnect, SelectedRegions, ['area','rectangularity','inner_radius'], 'and', [400,0.3,5], [2500,1,25])
*select_shape(segConnect, SelectedRegions, ['area','inner_radius'], 'and', [800,5], [1500,50])
*求出最小外接圆的半径和中心点
smallest_circle(SelectedRegions, Row, Column, Radius)*求出圆的面积和中心点可以不用
area_center(SelectedRegions, Area, Row1, Column1)dev_clear_window()
dev_display(Seg)
stop()
*数量统计
count_obj(SelectedRegions, Number)
if (Number < 1)disp_message (WindowHandle, '未找到', 'window', 12, 12, 'black', 'true')return()
endif*画圆
dev_display(Image)
gen_circle(Circles, Row, Column, Radius)dev_display(Circles)*创建EXCEL文件
open_file ('D:/halcon_data/data.xls', 'output', FileHand)*循环每一个圆
for i:=1 to Number by 1select_obj (SelectedRegions, ObjectSelected, i)open_file ('D:/halcon_data/data.xls', 'append', FileHand)
*第一行第一列写入a,并换列
fwrite_string (FileHand, Row[i - 1]+'\t')
*第一行第二列写入1,并换行
fwrite_string (FileHand,Column[i - 1]+'\n')
*第二行第一列写入b,并换列
*fwrite_string (FileHand, 'b\t')
*第二行第二列写入2,并换行
*fwrite_string (FileHand, '2\n')
*fwrite_string (FileHand, 'c\t')
*fwrite_string (FileHand, '3\n')
*清除句柄
close_file (FileHand)
*结果显示*r := Row[i - 1]*c := Column[i - 1]*rds:= Radius[i - 1]*disp_message (WindowHandle, '圆心:Row:'+ r + ' Col:' + c, 'window', r, c, 'black', 'true')*disp_message (WindowHandle, '半径:'+ rds, 'window', r+20, c, 'black', 'true')*stop()
endfor*窗口显示“按F5继续运行”
*disp_continue_message (WindowHandle, 'black', 'true')
*暂停
*stop ()
*dev_close_window()
stop()
endwhile
close_framegrabber (AcqHandle)

HALCON查找圆心相关推荐

  1. HALCON查找圆心C++实现

    ***HALCON源码见:***HALCON根据形状查找圆心 下面是生成修改的c++代码: void CPropBoundset::OnBnClickedBtnReadcircle() {// TOD ...

  2. html圆形圆心坐标,halcon找圆心坐标(拟合圆算子详解)

    Contours(in):输入轮廓 Algorithm(in):拟合圆的算法 MaxNumPoints(in):用于计算的最大轮廓点个数 MaxClosureDist(in):一个轮廓的末尾点最大间距 ...

  3. 工业视觉需要时可抄的代码---持续更新

    1.批量访问图片,等待键盘 for (int i = 2; i <= 23;){if (KEY_DOWN('S')){std::string path = "";char t ...

  4. STM32识别圆——色块追踪法

    前言 识别圆采用OpenCV来做比较简单,可以用HoughCircles函数,但是如何在内存和资源都很紧张的STM32上面实现圆识别算法,是本文的写作目的.本文的算法采用Python实现,不采用库函数 ...

  5. halcon获取图像中心点_关于Halcon的复杂图形中心点查找

    上面是一张比较复杂的图形,我们希望通过Halcon一系列的算子进行处理,查找到星点交叉处的中心点. mean_image (Image, ImageMean, 41, 41) 将图片进行均值处理,让分 ...

  6. Halcon圆查找功能简介

    版权声明:本文为博主原创文章,未经博主允许不得转载. Halcon基于卡尺的圆查找功能主要会用到:create_metrology_model.add_metrology_object_circle_ ...

  7. 基于halcon的直线查找之卡尺

    我这人比较懒得罗里吧嗦,基本都是直接说两点:why?how? 基于halcon的直线查找之卡尺 直线的检测在halcon中主要有两种方式:直线拟合和卡尺直线.这里分享卡尺方法,拟合请移步:直线拟合 直 ...

  8. C#调用Halcon并输出圆心坐标

    编写Halcon代码 1.使用的示例图片如下: 2.编写Halcon算法用于计算左上角圆环的圆环内圆心坐标 部分代码如下: dev_close_window () read_image (Image, ...

  9. 使用halcon将一个圆上的点拟合成圆形并且求出圆心

    我们在自动化贴装机标定过程中,需要计算吸头的旋转中心位置.我们一般使用的方法是使用模板匹配,做一个模板,吸头旋转一个角度寻找模板一次,通过多次旋转求取吸头的旋转中心. 使用halcon实现 publi ...

最新文章

  1. 大数据概述 ——林子雨老师第一课
  2. 专家揭示模块化数据中心的真谛
  3. ElementUI中显示是否以及SpringBoot中怎样存储实体类属性和数据库怎样设计字段
  4. web 后台返回json格式数据的方式(status 406)
  5. android播放html5视频,仅仅有声音没有图像视频
  6. 自顶向下 计算机网络知识,计算机网络(自顶向下)第七版考试复习要点(第四章)...
  7. x12arima季节调整方法_你所不知道的秋冬季节养生要点,都在这里!
  8. 基于FreeFEM++的有限元编程--2
  9. JavaScript闭包理解
  10. Word中插入MATLAB矢量图
  11. 《ZigBee开发笔记》第四部分 提高篇-第1章 CC2530协议栈剖析
  12. DDL操作提示了一个DML操作才会抛的ORA错误?
  13. 机器学习基础(林軒田)笔记之七
  14. 网易视频云:新一代列式存储格式Parquet
  15. adb Error: failed to write; /data/local/tmp/??.apk (No such file or directory)
  16. PDFbox-PDF解析(坐标定位,分页读取)
  17. java实验常见错误_求高手点拨一个Java SWING的IM系统实验的错误解决方案。
  18. python改word域_Python自动化修改word实例
  19. 戴尔研发即时运行的桌面虚拟化系统
  20. 形容linux技术视野的词,火焰图:全局视野的Linux性能剖析

热门文章

  1. C# 给某个方法设定执行超时时间
  2. Java并发编程高级篇(八):在执行器中取消任务
  3. 用Docker搭建PHP开发环境
  4. Activity与Fragment的生命周期详解
  5. 十八、可以输出文字了
  6. placeholder在不同浏览器下的表现及兼容方法
  7. RDO Packstack 安装 Openstack Icehouse CentOS 6.5 单网卡
  8. JAVA数据结构 线性表的链式存储及其实现
  9. linux开启防火墙挂载nfs
  10. FTPVSFTPD安装和参数说明