码迷,mamicode.com
首页 > 其他好文 > 详细

halcon

时间:2018-07-23 17:18:46      阅读:811      评论:0      收藏:0      [点我收藏+]

标签:class   取图   实时   syn   als   row   line   提取   index   

技术分享图片
FilePath:=d:/pic/demo.jpg
*判断文件是否存在
file_exists (/bin/cc, FileExists)
if(FileExists)
    *读取图片
    read_image(Image,FilePath)
    *写入图片,第三个参数是填充值
    write_image(Image,jpg,0,F:/demo.jpg)
endif


*模板的读写操作
*读取region
read_region(Region, FilePath)
*创建模板
create_shape_model(Image, auto, -0.39, 0.79, auto, auto, use_polarity, auto, auto, ModelID)
*保存模板  ModelID是模板的句柄,FileExists是模板文件保存的路径。以shm结尾
write_shape_model(ModelID, d:/aa.shm)

*模板路径
ModelFilePath:=d:/a.shm
*判断模板文件是否存在
file_exists (ModelFilePath, FileExists1)
*如果存在
if(FileExists1)
    *读取模板
    read_shape_model(FileExists, ModelID1)
    *获取模板的轮廓。 参数1是轮廓,参数2是模板的句柄
    get_shape_model_contours(ModelContours, ModelID1, 1)
endif

多张图片的读取:
    list_file(路径,[files,directories,recursive,max_depth 3,follow_links],ImageFiles)//选取文件夹里的图片
    tuple_regexp_select(ImageFiles,[\\.(jpg)$,ignore_case],ImageFiles)//在上面的那些图片中找到需要的图片
    for Index := 0 to |ImageFiles| - 1 by 1
        read_image(Image,ImageFiles[Index]) //循环显示出来
        *do sth……
    endfor

    参数解释:
    这些参数都写在一个中括号当中,如果需要就写,如果不需要就不要写在里面了。

    files——指定搜索的格式为文件
    directories——指定搜索的格式为文件夹
    recursive——指定可以遍历子文件夹里面的文件
    max_depth 3——指定遍历的深度
    max_files 1000——指定遍历的最大文件数量

    \\——转义符
    ()——规则的集合。比如我们要选择bmp jpg tif格式的图片(bmp|jpg|tif)
    ignore_case——忽略大小写
读取图片

 

技术分享图片
*图片路径
FilePath:=d:/pic/demo.jpg
*判断文件是否存在
file_exists (/bin/cc, FileExists)
if(FileExists)
    *读取图片
    read_image(Image,FilePath)
    *写入图片,第三个参数是填充值
    write_image(Image,jpg,0,F:/demo.jpg)
endif
图片读写2

 

技术分享图片
1、使用摄像头采集图像
    助手→打开新的image acquisition,在新弹出的窗口中选择“图像获取接口”→ “检测”→“实时”(是一个图标)→插入代码
        * Code generated by Image Acquisition 05
    open_framegrabber (DirectShow, 1, 1, 0, 0, 0, 0, default, 8, rgb, -1, false, default, Sirius USB2.0 Camera, 0, -1, AcqHandle)
    grab_image_start (AcqHandle, -1)
    while (true)
        grab_image_async (Image, AcqHandle, -1)//抓取图像,抓取到的图像会在Image中
        * Do something//对图像进行处理
    endwhile
    close_framegrabber (AcqHandle)

2、从索引列表中获取图片。in.seq文件(用notepad打开之后会发现是图片的路径)
    步骤同上,只是不点检测,直接生成代码。
        * Code generated by Image Acquisition 06
        open_framegrabber (File, 1, 1, 0, 0, 0, 0, default, -1, default, -1, false, fabrik, default, 1, -1, AcqHandle)
        grab_image_start (AcqHandle, -1)
        while (true)
            grab_image_async (Image, AcqHandle, -1)
            * Do something
        endwhile
        close_framegrabber (AcqHandle)
        代码生成之后,再fabrik改成in.seq文件的路径  xxx/in.seq
使用摄像头,in.seq文件采集图片

 

技术分享图片
*读取region
read_region(Region, FilePath)
*创建模板
create_shape_model(Image, auto, -0.39, 0.79, auto, auto, use_polarity, auto, auto, ModelID)
*保存模板  ModelID是模板的句柄,FileExists是模板文件保存的路径。以shm结尾
write_shape_model(ModelID, d:/aa.shm)

*模板路径
ModelFilePath:=d:/a.shm
*判断模板文件是否存在
file_exists (ModelFilePath, FileExists1)
*如果存在
if(FileExists1)
    *读取模板
    read_shape_model(FileExists, ModelID1)
    *获取模板的轮廓。 参数1是轮廓,参数2是模板的句柄
    get_shape_model_contours(ModelContours, ModelID1, 1)
endif
模板的读写操作

 

技术分享图片
hsv 通道
h表示颜色:0~360
s饱和度:0~100%
v亮度:0~100%
read_image(Image,d:/anNiu.jpg)
decompose3(Red,Green,Blue,H,S,V,hsv)
*将RGB图像转换成HSV图像
trans_from_rgb(Red,Green,Blue,H,S,V,hsv)
*下面进行阈值分割,之所以取S图,是因为S图中的按钮,与其他通道中的图片有明显的区别。
threshold(S,Regions,80,255)
*提取图片
reduce_domain(Image,Regions,ImageReduced)
*将reduce之后的的图片,作RGB通道的分离
decompose3(ImageReduced,Red1,Green1,Blue1)
*通过观察,发现R通道中的红色按钮明显比其他通道中的按钮要白很多
threshold(Red1,Regions1,148,255)
将图片变成三通道图片

 

 

阈值分割:以灰度值分割的方式将图片与背景分离开,称之为阈值分割。

*声明两个数组,用于存放计算后,得到的图片的坐标值。
x:=[]
y:=[]
*读取图片
read_image (Image, F:/pics/map.png)

*转成灰度图
rgb1_to_gray(Image, GrayImage)

*确定一个ROI
gen_rectangle1 (ROI_1_0, 3.066, 25.8126, 188.3, 409.231)

*将多余的图片给裁剪掉
reduce_domain (GrayImage, ROI_1_0, ImageReduced)
*阈值分割,可能需要使用灰度直方图来进行调参
threshold (ImageReduced, Regions, 15, 91)
*求连域
connection (Regions, ConnectedRegions)
*选择一块区域,可能需要使用到特征直方图。根据一般情况下使用面积和圆率来进行过滤
select_shape (ConnectedRegions, SelectedRegions, [area,roundness], and, [159.45,0.7774], [202.11,0.9318])
area_center(SelectedRegions,Area,Row,Column)
x[0]:=[Row]
y[0]:=[Column]

 

halcon

标签:class   取图   实时   syn   als   row   line   提取   index   

原文地址:https://www.cnblogs.com/vichin/p/9355467.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!