***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. MySQL主主配置说明
  2. 这个假发太逼真!GAN 帮你换发型,alignment 步骤去掉生硬感
  3. 社交媒体分析-恶意内容自动检测相关论文
  4. mysql 5.5 5.6 主从_mysql5.6+主从集的版本号(mysql5.5主机和从机载带后,5.5在设置有一定的差距)...
  5. php定位和天气,基于thinkphp实现依据用户ip判断地理位置并提供对应天气信息的应用...
  6. Unix——optarg与getopt的用法
  7. 这种玩法闻所未闻,利用python编程自定义QQ的在线状态
  8. mysql 自动备份发送,Centos定时自动备份MySQL数据库并发送至指定邮箱
  9. python基础系列教程——Python中的编码问题,中文乱码问题
  10. pkg_resources.DistributionNotFound: The 'psutil=5.6.1; platform_python_implementation== 报错解决
  11. Java实习生的一天
  12. APF有源滤波器仿真,三相三线制 谐波电流检测模块基于p-q方法,ip-iq等方法
  13. Flask debug模式算pin码
  14. MATLAB人体行为检测与识别
  15. 嵌入式linux软件如何进行数据参数保存
  16. /home/ljx/miniconda3/compiler_compat/ld: cannot find crtbeginS.o: 没有那个文件或目录
  17. 去看刘晓庆演的话剧《武则天》
  18. ARM服务器安装docker-compose
  19. QQ2005 SP5貌似不错
  20. php免费开源多用户商城,开源php多用户商城系统好不好?

热门文章

  1. CodeFirst 的编程方式
  2. ArcGIS API for Silverlight 点沿着线流动
  3. 基于Python的QPSK音频的波形和频谱
  4. python读取压缩包中csv文件
  5. 清空python的变量
  6. pandas.read_csv() 报错 OSError: Initializing from file failed
  7. 实现点击下载文件的几种方法
  8. 第三届山西省赛1004 一道大水题(scanf)
  9. 洛谷 P1029 最大公约数和最小公倍数问题
  10. 使用NodeList