***HALCON源码见:***HALCON根据形状查找圆心
下面是生成修改的c++代码:

void CPropBoundset::OnBnClickedBtnReadcircle()
{// TODO: 在此添加控件通知处理程序代码// TODO: 在此添加控件通知处理程序代码HObject  ho_Image, ho_ImageR, ho_ImageG, ho_ImageB;HObject  ho_ImageA, ho_MultiChannelImage, ho_Mean, ho_Seg;HObject  ho_SegFillUp, ho_segConnect, ho_SelectedRegions;HObject  ho_Circles, ho_ObjectSelected;// Local control variablesHTuple  hv_AcqHandle, hv_Channels, hv_Width, hv_Height;HTuple  hv_WindowHandle, hv_D, hv_Row, hv_Column, hv_Radius;HTuple  hv_Area, hv_Row1, hv_Column1, hv_Number, hv_FileHand;HTuple  hv_i;HTuple  hv_r, hv_c, hv_rds;CFIRADlg* pMain = (CFIRADlg*)(AfxGetApp()->m_pMainWnd);if (pMain->m_hDevice == NULL) {MessageBoxA("请先打开设备!");return;}//2)三通道图像转换GenImageInterleaved(&ho_Image, (long)(pMain->m_pBufferRGB), "rgb", WIDTH, HEIGHT, 0, "byte", 0, 0, 0, 0, -1, 0);//竖直镜像MirrorImage(ho_Image, &ho_Image, "row");
///一般来说,坐标系的原点在左下角,但是HALCON的坐标原点在左上点,所以,在C++中需要进行转换///*----------------------------------------下面的程序是找圆心用来标定的-----------------------------------------*/CountChannels(ho_Image, &hv_Channels);if (0 != (hv_Channels == 3)){Rgb1ToGray(ho_Image, &ho_Image);//真彩色转灰度图}else if (0 != (hv_Channels == 4)){Decompose4(ho_Image, &ho_ImageR, &ho_ImageG, &ho_ImageB, &ho_ImageA);Compose3(ho_ImageR, ho_ImageG, ho_ImageB, &ho_MultiChannelImage);Rgb1ToGray(ho_MultiChannelImage, &ho_Image);}//获取图像宽高GetImageSize(ho_Image, &hv_Width, &hv_Height);dev_open_window_fit_image(ho_Image, 0, 0, -1, -1, &hv_WindowHandle);set_display_font(hv_WindowHandle, 16, "mono", "true", "false");if (HDevWindowStack::IsOpen())DispObj(ho_Image, HDevWindowStack::GetActive());//动态二值化hv_D = 1;MeanImage(ho_Image, &ho_Mean, (hv_D * 2) + 1, (hv_D * 2) + 1);DynThreshold(ho_Image, ho_Mean, &ho_Seg, 2, "light");FillUp(ho_Seg, &ho_SegFillUp);Connection(ho_SegFillUp, &ho_segConnect);//找矩形SelectShape(ho_segConnect, &ho_SelectedRegions, ((HTuple("area").Append("rectangularity")).Append("inner_radius")),"and", ((HTuple(500).Append(0.5)).Append(5)), ((HTuple(2500).Append(1)).Append(25)));//求出最小外接圆的半径和中心点SmallestCircle(ho_SelectedRegions, &hv_Row, &hv_Column, &hv_Radius);//求出圆的面积和中心点可以不用AreaCenter(ho_SelectedRegions, &hv_Area, &hv_Row1, &hv_Column1);//数量统计CountObj(ho_SelectedRegions, &hv_Number);if (0 != (hv_Number < 1)){disp_message(hv_WindowHandle, "未找到", "window", 12, 12, "black", "true");return;}//画圆if (HDevWindowStack::IsOpen())DispObj(ho_Image, HDevWindowStack::GetActive());GenCircle(&ho_Circles, hv_Row, hv_Column, hv_Radius);if (HDevWindowStack::IsOpen())DispObj(ho_Circles, HDevWindowStack::GetActive());//创建EXCEL文件OpenFile("D:/halcon_data/data.xls", "output", &hv_FileHand);//循环每一个圆{HTuple end_val60 = hv_Number;HTuple step_val60 = 1;for (hv_i = 1; hv_i.Continue(end_val60, step_val60); hv_i += step_val60){SelectObj(ho_SelectedRegions, &ho_ObjectSelected, hv_i);OpenFile("D:/halcon_data/data.xls", "append", &hv_FileHand);//第一行第一列写入a,并换列FwriteString(hv_FileHand, HTuple(hv_Row[hv_i - 1]) + "\t");//第一行第二列写入1,并换行FwriteString(hv_FileHand, HTuple(hv_Column[hv_i - 1]) + "\n");pMain->centerfcalib[hv_i - 1].y = hv_Row[hv_i - 1];pMain->centerfcalib[hv_i - 1].x = hv_Column[hv_i - 1];CloseFile(hv_FileHand);}}
}

HALCON查找圆心C++实现相关推荐

  1. HALCON查找圆心

    HALCON根据形状查找圆心 在场地上放置长方形块,寻找他们的圆心并且返回像素坐标 HALCON代码: * Image Acquisition 01: Code generated by Image ...

  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. 使用CSS制作圆角效果
  2. hdu2438 三分
  3. Winform判断一个窗口是否以模态化方式打开
  4. MPLS 的组成:路由器和交换机的作用——Vecloud
  5. 【BZOJ4069】【APIO2015】巴厘岛的雕塑 [贪心][DP]
  6. c语言的考试是操作电脑还是写试卷,C语言考试试卷都是基础的题目,由于本人没学过C语言,求各位帮忙, 爱问知识人...
  7. 奉劝各位的atas几句话,别怪我没提醒
  8. 一个通用的makefile写法,自动推导文件的依赖关系
  9. 好消息 | 顶级 AI 华人学者拟加入清华大学自动化系!
  10. python对文本数据进行采样_Python对wav文件的重采样实例
  11. 最新发布|深度学习必学“圣经”花书出视频课了!附带论文代码精读讲解!
  12. 阿里云数据库HybridDB for PostgreSQL使用教程
  13. jmeter 高并发测试报告_Windows下JMeter分布式压测环境搭建
  14. 无线网络 设置网关和服务器,我家的网络连接的IP是 192.168.1.223 我想问网关是多少 服务器是...
  15. 百度快照多久更新一次?
  16. RxJava:concat(连接)、 concatDelayError、 concatEager的使用
  17. 负离子空气净化器哪个牌子好,空气净化器科普
  18. ie css 图片边框颜色,CSS-在Chrome / IE9中删除图片边框
  19. C++中 stol()和stoll()
  20. 欧姆龙485通讯示例程序_欧姆龙PLC型号大全

热门文章

  1. 8.6亿个人信息被偷 网络安全团队曝光交易内幕
  2. 如何找出数组中第二大的数
  3. 使用Edge.js,在JavaScript中调用C# .Net
  4. 公司Windows Office升级项目总结
  5. 我的阿里梦——淘宝前端必备技能
  6. 30天敏捷结果(5):使用热图标识出重要事情
  7. js 判断是不是数字||判断字符串是不是数字(正则表达式)
  8. typedef和define的详细区别
  9. 使用 Android Studio 跑新浪微博SDK Demo遇到的问题及解决
  10. Msxml2.XMLHTTP Microsoft.XMLHTTP new XMLHttpRequest