Halcon 卡尺找圆

read_image (Image, 'D:/桌面/圆.png')
get_image_size (Image, Width, Height)
dev_get_window (WindowHandle)
dev_set_draw ('margin')
gen_circle (ROI_0, 155.605, 161.387, 118.247)
dev_set_color ('green')
Row:=155.605
Column:=161.387
Radius:=118.247

circle:=[Row, Column, Radius]

create_metrology_model (MetrologyHandle)
add_metrology_object_generic (MetrologyHandle, 'circle', [circle], 20, 5, 1, 30, [], [], Index)

* 设置测量对象的参数
*'negative', 'positive'
set_metrology_object_param (MetrologyHandle, 'all', 'measure_transition', 'negative')
*圆
set_metrology_object_param (MetrologyHandle, 'all', 'num_measures',20)
set_metrology_object_param (MetrologyHandle, 'all', 'num_instances', 9)
set_metrology_object_param (MetrologyHandle, 'all', 'measure_sigma', 5)
*半宽
set_metrology_object_param (MetrologyHandle, 'all', 'measure_length1', 20)
*半高
set_metrology_object_param (MetrologyHandle, 'all', 'measure_length2', 5)
set_metrology_object_param (MetrologyHandle, 'all', 'measure_threshold',60)
set_metrology_object_param (MetrologyHandle, 'all', 'measure_interpolation', 'bicubic')
set_metrology_object_param (MetrologyHandle, 'all', 'measure_select', 'all')
set_metrology_object_param (MetrologyHandle, 'all', 'min_score', 0.9)
apply_metrology_model (Image, MetrologyHandle)
get_metrology_object_measures (Contours, MetrologyHandle, 'all', 'all', Row1, Column1)
gen_cross_contour_xld (Cross, Row1, Column1, 20, 0.785398)
get_metrology_object_result (MetrologyHandle, 'all', 'all', 'result_type', 'all_param', Parameter)
get_metrology_object_result_contour (Contour, MetrologyHandle,'all', 'all', 1.5)
*拟合一个圆
gen_contour_polygon_xld (Contour1, Row1, Column1)
fit_circle_contour_xld (Contour1, 'geotukey', -1, 0, 0, 3, 2, Row2, Column2, Radius1, StartPhi, EndPhi, PointOrder)
gen_circle_contour_xld (ContCircle, Row2, Column2, Radius1, 0, 6.28318, 'positive', 1)
*区域
gen_region_contour_xld (ContCircle, Region, 'filled')
dev_clear_window ()
dev_set_line_width (2)
dev_display (Image)
dev_set_color ('green')
*显示圆
dev_display (Region)
dev_set_color ('red')

dev_display (Cross)
*释放模型
 clear_metrology_model (MetrologyHandle)

  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenCV和Halcon都是常用的机器视觉开发工具,它们都提供了丰富的图像处理和分析功能。在OpenCV中,可以使用Hough变换来进行圆形检测,而在Halcon中,可以使用卡尺算法找到圆形。 下面是一个简单的OpenCV实现Halcon卡尺找圆的示例代码: ```python import cv2 import numpy as np # 读取图像并转换为灰度图像 img = cv2.imread('circle.png') gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 高斯模糊和Canny边缘检测 blurred = cv2.GaussianBlur(gray, (5, 5), 0) edges = cv2.Canny(blurred, 50, 150) # Hough圆检测 circles = cv2.HoughCircles(edges, cv2.HOUGH_GRADIENT, dp=1, minDist=100, param1=50, param2=30, minRadius=0, maxRadius=0) # 绘制圆 if circles is not None: circles = np.round(circles[0, :]).astype("int") for (x, y, r) in circles: cv2.circle(img, (x, y), r, (0, 255, 0), 2) cv2.putText(img, "Circle", (x-r, y-r), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 0, 255), 2) cv2.imshow("Image", img) cv2.waitKey(0) ``` 在Halcon中,可以使用卡尺算法找到圆形的边缘。下面是一个简单的Halcon实现卡尺找圆的示例代码: ```python import halcon as ha # 读取图像并转换为灰度图像 img = ha.read_image('circle.png') gray = ha.convert_image_type(img, 'byte') # 边缘检测和二值化 edges = ha.edges_image(gray, 'canny', 5, 20) bin_img = ha.threshold(edges, 128, 255) # 卡尺找圆 contours = ha.contour(bin_img) circles = ha.select_shape(contours, 'circle', 'all', 1, 100) circles = ha.gen_circle_contour_xld(ha.tuple(circles[0]), ha.tuple(circles[1]), ha.tuple(circles[2])) # 绘制圆 if len(circles) > 0: for circle in circles: row, col, radius = ha.tuple(circle) ha.draw_circle(img, row, col, radius, 'green', 2) ha.disp_image(img) ha.wait_seconds(0) ``` 以上代码仅供参考,具体实现可能需要根据实际情况进行调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值