*绝对路径读取图片
read_image (Image1, 'D:/MYSTU/0013 书籍教程/006 机器视觉/练习/cha4-1/xinpian.jpg')
*同级目录读取图片
read_image(Image2,'xinpian.jpg')
*读取下级目录图片 '.' 读取当前目录
read_image(Image3,'./images/xinpian_file.jpg')
*读取上级目录图片 '..'获取上级目录
read_image(Image4,'../images_up/xinpian_file.jpg')
* Image Acquisition 01: Code generated by Image Acquisition 01
list_files ('D:/MYSTU/0013 书籍教程/006 机器视觉/练习/cha4-1/images', ['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
endfor
* Image Acquisition 01: Code generated by Image Acquisition 01
open_framegrabber ('DirectShow', 1, 1, 0, 0, 0, 0, 'default', 8, 'rgb', -1, 'false', 'default', '[0] HD WebCam', 0, -1, AcqHandle)
grab_image_start (AcqHandle, -1)
while (true)
grab_image_async (Image, AcqHandle, -1)
* Image Acquisition 01: Do something
endwhile
close_framegrabber (AcqHandle)
*关闭当前窗口,清空屏幕
dev_close_window()
*读取一张图片
read_image(Image,'pingdian.jpg')
*获取图像大小,以建立合适尺寸的窗口
get_image_size(Image,Width,Height)
dev_open_window(0,0,Width,Height,'black',WindowHandle)
*显示读取的图像
dev_display(Image)
*将图像转换为单通道灰度图像
rgb1_to_gray(Image,GrayImage)
*显示灰度图像
dev_display(GrayImage)
*使用阈值提取较暗的部分
threshold(GrayImage,DarkArea,0,115)
*填充区域
fill_up (DarkArea,RegionFillUp)
*将不相连的区域整体分割成独立的区域
connection(RegionFillUp,ConnectedRegions)
* 排除杂点,将面积较大的目标选择出来
select_shape(ConnectedRegions,SelectedRegions,'area','and',150,99999)
*目标计数
count_obj(SelectedRegions,Number)
*即将显示文字,将文字颜色设置为黑色
dev_set_color('black')
*确定文字显示区域
set_tposition(WindowHandle,150,100)
*设置字体
set_font(WindowHandle,'-System-24-*-0-0-0-1-GB2312_CHARSET-')
*窗口输出文字
write_string(WindowHandle,'有'+Number+'个零件')
*显示零件形状区域,设置颜色为红色
dev_set_color('red')
*显示模式设为填充
dev_set_draw('fill')
*显示提取出来的区域
dev_display(DarkArea)
*end
可使用灰度直方图工具更简便获取threshold(GrayImage,DarkArea,0,115)
最小和最大值。
《Halcon机器视觉算法原理与编程实战》刘青著。