【Halcon机器视觉】ch4 软件图像采集

图像采集的类型(简略笔记)

  • 获取非实时图像:读取单图、文件夹中所有图以及视频
  • 获取实时图像:1.通过Halcon自带的采集接口获取,2.通过相机配套的SDK获取
  • 多相机采集:多相机异步采集,多相机同步采集

Halcon图像的基本结构(简略笔记)

  • Image:矩阵数据
  • Region:点的坐标组成的一块区域,可以创建AOI,可以是任意形状、包含空洞、不连续
  • XLD:某一块区域的轮廓,由Region边缘连续的点组成
  • Tuple:类似于数组,批处理图像存入

单张图像采集

*绝对路径读取图片
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

实时图像采集

可打开助手选择帮助生成代码。
【Halcon机器视觉】ch4 软件图像采集_第1张图片
【Halcon机器视觉】ch4 软件图像采集_第2张图片

* 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)

窗口显示阈值计数小DEMO

【Halcon机器视觉】ch4 软件图像采集_第3张图片

*关闭当前窗口,清空屏幕
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机器视觉】ch4 软件图像采集_第4张图片
【Halcon机器视觉】ch4 软件图像采集_第5张图片

参考资料

《Halcon机器视觉算法原理与编程实战》刘青著。

你可能感兴趣的:(Halcon)