机器视觉halcon学习——卡尺工具应用

同一个物体在不同光照强度下拍摄,某一处像素点的位置变化
对应光照强度分别是50、60…
在这里插入图片描述
结果展示
在这里插入图片描述
运行结果细节展示
在这里插入图片描述
代码

* Image Acquisition 01: Code generated by Image Acquisition 01
list_files ('D:/光照强度50--130', ['files','follow_links'], ImageFiles)
tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$','ignore_case'], ImageFiles)
for Index := 0 to |ImageFiles| - 1 by 1
    read_image (Image, ImageFiles[Index])
    * Image Acquisition 01: Do something
rgb1_to_gray(Image, GrayImage)
dev_set_color('green')
gen_rectangle1(Rectangle, 954,3979,1025,4041)
reduce_domain(GrayImage, Rectangle, ImageReduced)
*假设就是这样一张图
dev_display(ImageReduced)

dev_set_draw('margin')
create_metrology_model(MetrologyHandle)
*固定好线的初始位置
*draw_line(3600, Row1, Column1, Row2, Column2)
Row1:=963
Column1:=3993
Row2:=997
Column2:=4016
gen_region_line(RegionLines, 963, 3993, 997, 4016)
set_metrology_model_image_size(MetrologyHandle, 640, 480)
linePara:=[Row1, Column1, Row2, Column2]
add_metrology_object_line_measure(MetrologyHandle, Row1, Column1, Row2, Column2, 40, 5, 1, 30, [], [], Index1)
get_metrology_object_model_contour(Contour, MetrologyHandle, 'all', 1.5)
get_metrology_object_measures(Contours, MetrologyHandle, 'all', 'all', Row, Column)
apply_metrology_model(ImageReduced, MetrologyHandle)
get_metrology_object_result (MetrologyHandle, 'all', 'all', 'result_type', 'row_begin', RowBegin)
get_metrology_object_result (MetrologyHandle, 'all', 'all', 'result_type', 'column_begin', ColBegin)
get_metrology_object_result (MetrologyHandle, 'all', 'all', 'result_type', 'row_end', RowEnd)
get_metrology_object_result (MetrologyHandle, 'all', 'all', 'result_type', 'column_end', ColEnd)
get_metrology_object_measures(Contours1, MetrologyHandle, 'all', 'all', Row3, Column3)
dev_set_color('blue')
get_metrology_object_result_contour(Contour1, MetrologyHandle, 'all', 'all', 1.5)
RowRef := 0.5 * (RowBegin + RowEnd)
ColRef := 0.5 * (ColBegin + ColEnd)
dev_set_color('red')
*取的中点
gen_cross_contour_xld (RefPoints, RowRef, ColRef, 16, rad(45))
stop()
endfor

整体思路:先标记一个大概的区域,保证每一张图都是在这个位置。
然后画一条线,这个位置也是固定的。然后卡尺工具卡到具体的每张图上面的线的位置,此时的线的位置会因为灰度值的变化而发生变化,所以在每一张图上面的都是不一样的。然后取中点,也就是我们最后要的点。最后求差值,也就是我们要的结果。

最开始想到过用圆心来求,但是由于拟合圆会导致圆心坐标不准确,所以用的这个方法。还有其他的想法可以提哦~一起快乐学习一起成长呀!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值