通过相机采集照片,通过灰度变换、二值化和图像选择等函数选择目标图像,最后获取目标图像的面积和像素坐标。
open_framegrabber ('DirectShow', 1, 1, 0, 0, 0, 0, 'default', 8, 'rgb', -1, 'false', 'default', '[0] FHD Camera', 0, -1, AcqHandle)
grab_image_start (AcqHandle, -1)
dev_close_window()
dev_open_window(0, 0, 512, 512, 'black', WindowHandle)
while (true)
grab_image_async (Image, AcqHandle, -1)
* 转为灰度图像
rgb1_to_gray(Image,GrayImage)
*二值化
threshold (GrayImage, Regions, 161, 255)
connection(Regions, ConnectedRegions)
*选择图形
* select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 3611.11, 5462.96)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 3611.11, 7500)
area_center (SelectedRegions, Area, Row, Column)
for Index := 0 to |Area|-1 by 1
zqb := Index * 20
disp_message (WindowHandle, '面积:' + Area[Index] + '行'+Row[Index]+'列'+Column[Index], 'window',zqb, 0, ['black','blue'], 'true')
endfor
endwhile
close_framegrabber (AcqHandle)
与opencv相比,halcon软件的封装性更强,大部分能够通过鼠标或调用封装函数的方式实现。即使用现有的方法解决问题,一般不能使用定义的方法实现。
学习算法选择opencv等,解决工程问题使用halcon。