用相机+夹子进行实战练习:
* Image Acquisition 03: Code generated by Image Acquisition 03
*打开相机抓取图片
open_framegrabber ('DirectShow', 1, 1, 0, 0, 0, 0, 'default', 8, 'gray', -1, 'false', 'default', '[1] Web Camera', 0, -1, AcqHandle)
grab_image_start (AcqHandle, -1)
*先直接从下面的代码拷贝一行【目的是为了创建模板】
grab_image_async (Image, AcqHandle, -1)
*用ROI画出矩形抠图
gen_rectangle2 (ROI_0, 291.794, 822.621, rad(82.9057), 119.816, 73.5809)
*抠图
reduce_domain (Image, ROI_0, ImageReduced)
*定义角度
*acos(0.0)=π/2
pi :=acos(0.0)*2
*创建具有旋转的模板匹配模式
create_template_rot (ImageReduced, 4, -pi, 2*pi, pi/45, 'sort', 'original', TemplateID)
*设置输出模式
dev_set_draw ('margin')
*设置颜色
dev_set_color ('blue')
while (true)
grab_image_async (Image, AcqHandle, -1)
*通过旋转搜索模板和金字塔的最佳匹配。
best_match_rot_mg (Image, TemplateID, -pi, 2*pi, 40, 'true', 4, Row, Column, Angle, Error)
*显示匹配到的矩形 需把角度和矩形的长宽参数 输入
disp_rectangle2 (200000, Row, Column,rad(82.9057), 119.816, 73.5809)
endwhile
*关闭相机
close_framegrabber (AcqHandle)
抠图:
无论夹子水平移动到任何地方均可匹配成功:
也可采用缩放进行匹配:
while (true)
grab_image_async (Image, AcqHandle, -1)
*缩放
*scale_image (Image, ImageScaled, 1, -50)
*模板的灰度值偏移。
*set_offset_template (TemplateID, -50)
*通过旋转搜索模板和金字塔的最佳匹配。
best_match_rot_mg (Image, TemplateID, -pi, 2*pi, 40, 'true', 4, Row, Column, Angle, Error)
disp_rectangle2 (200000, Row, Column,rad(-5.1017), 74.2827, 131.15)
endwhile
或者可以两个图像的偏差相减得到:
*创建具有旋转的模板匹配模式 x
create_template_rot (ImageReduced, 4, -pi, 2*pi, pi/45, 'sort', 'original', TemplateID)
intensity (ImageReduced, Image, Mean, Deviation)
*缩放
scale_image (Image, ImageScaled, 1, -50)
intensity (ImageReduced, ImageScaled, Mean1, Deviation1)
set_offset_template (TemplateID, Mean1-Mean)