VPLC系列机器视觉运动控制一体机快速入门(十)

发布者:DelightfulGaze最新更新时间:2024-10-09 来源: elecfans关键字:机器视觉 手机看文章 扫描二维码
随时随地手机看文章

此前,我们依次讲解了软硬件介绍及计数实例、相机的基本使用、基于形状匹配的视觉定位、BLOB有无检测、测量尺寸、机器视觉方案中使用到的标定功能、ZDevelop软件实现识别条形码和二维码,测量点/直线/圆以及划痕检测功能。


本期课程我们和大家一起使用ZDevelop软件实现机器视觉中使用到的OCR功能。


一、 OCR 检测原理


什么是OCR?


OCR全称是Optical Character Recognition,即光学字符识别。在机器视觉中OCR是指使用图像处理方法将获取到的图像上的黑白字符进行分割训练后,识别并输出对应的字符。

2.png

OCR的检测原理?


在机器视觉中进行OCR检测时,首先根据字符(前景)和背景的对比度以及字符的宽度和高度等参数将字符进行分割后提取字符图像,然后对提取的字符逐一进行训练学习,将所有可能出现的字符进行训练学习后存储到训练库中,在执行识别检测时,将当前提取到的字符和训练库中的字符进行对比,输出相似度满足条件的字符结果。

3.png

二 、OCR 应用场景

1.验证字符准确性

可以验证待测产品上印刷字符的准确性。

2.获取产品字符信息

可以获取待测产品上的字符信息上传数据库或录入系统。

3.信息对比

可以将待测产品识别出的字符和条码输出的信息进行对比,判断字符印刷和条码信息是否一致。


三、 软件实现

(一)流程图

4.png

(二)实例演示

1.打开ZDevelop软件:新建项目→新建HMI文件→新建main.bas文件,用于编写界面响应函数→新建global_variable.bas文件用于存放全局变量并开启HMI自动运行任务→新建InitParam.bas文件用于初始化测量参数→新建camera.bas文件用于实现相机采集功能→新建draw.bas文件用于更新绘制图形刷新界面→文件添加到项目。

5.png

2.设计HMI界面。

6.png

3.在global_variable.bas文件中定义全局变量,定义完成后运行Hmi.hmi文件。

'''''全局变量大部分使用数组结构'''''

''注:basic编程中很多函数会以TABLE(系统的数据结构)做为参数

''在这里table均是做为中间变量

''table 21-22,鼠标按键,控件坐标系

''table 31-35,旋转矩ROI参数,cx、cy、width、height、angle,控件坐标系

''table 41-45,旋转矩形控件坐标转换后对应的图像坐标,图像坐标系

'主任务状态

'0 - 未初始化

'1 - 停止

'2 - 运行中

'3 - 正在停止

GLOBAL DIM main_task_state

main_task_state = 1

'采集开关

'0 - 停止采集

'1 - 请求采集

GLOBAL DIM grab_switch

grab_switch = 0

'相机个数

GLOBAL cam_num

cam_num = 0

'相机种类,'zmotion;mvision;basler;mindvision;huaray'

GLOBAL DIM CAMERA_TYPE(16)

CAMERA_TYPE = 'mvision'

' 定义主任务id - 10

GLOBAL DIM main_task_id

main_task_id = 10

'定义连续采集任务id - 9

GLOBAL DIM grab_task_id

grab_task_id = 9

'定义全局图像变量

GLOBAL ZVOBJECT grabImg '采集图像

'定义常用颜色变量

GLOBAL C_RED, C_GREEN, C_BLUE, C_YELLOW

C_RED = RGB(255, 0, 0)

C_GREEN = RGB( 0,255, 0)

C_BLUE = RGB( 0, 0,255)

C_YELLOW= RGB(255,255, 0)

'训练的字符库、输出的字符结果

GLOBAL DIM nameSample(32),result(32)

'旋转矩形ROI参数:cx、cy、width、height、angle

GLOBAL DIM d_roi_rect2(5)

'检测参数:阈值模式、阈值参数、最小字符面积、最大字符面积、最小字符宽度、最大字符宽度、最小字符高度、最大字符高度、字符极性、形态学类型、结构元宽、结构元高、字符最小间距

GLOBAL DIM d_detect_param(13)

'***********定义读取本地文件功能相关变量**************

''注意,该功能只在使用仿真器时有效

'定义是否使用本地图片标志

GLOBAL DIM d_use_imgfile

d_use_imgfile=1

'定义本地图片索引

GLOBAL DIM d_index

d_index=0

'定义读取图片的路径

GLOBAL DIM File_Name(100)

'***********结束定义读取本地文件功能相关变量**********

'运行HMI文件

RUN 'Hmi1.hmi',1

4.在InitParam.bas文件中初始化测量参数。

end

GLOBAL SUB init_detect_param()'初始化测量参数

'初始化roi参数

d_roi_rect2(0) = 160.0 'roi中心x

d_roi_rect2(1) = 120.0 'roi中心y

d_roi_rect2(2) = 80.0 'roi宽

d_roi_rect2(3) = 60.0 'roi高

d_roi_rect2(4) = 0.0 'roi角度

TABLE(31) = d_roi_rect2(0) '将roi变量赋值给起始地址为31的table数组

TABLE(32) = d_roi_rect2(1)

TABLE(33) = d_roi_rect2(2)

TABLE(34) = d_roi_rect2(3)

TABLE(35) = d_roi_rect2(4)

'初始化检测参数:阈值模式、阈值参数、最小字符面积、最大字符面积、最小字符宽度、最大字符宽度、最小字符高度、最大字符高度、字符极性、形态学类型、结构元宽、结构元高、字符最小间距

d_detect_param(0) = 0 '手动阈值

d_detect_param(1) = 187 '低阈值

d_detect_param(2) = 500 '最小字符面积

d_detect_param(3) = 80000 '最大字符面积

d_detect_param(4) = 10 '最小字符宽度

d_detect_param(5) = 500 '最大字符宽度

d_detect_param(6) = 10 '最小字符高度

d_detect_param(7) = 500 '最大字符高度

d_detect_param(8) = 1 '白底黑字

d_detect_param(9) = 1 '开运算

d_detect_param(10) = 1 '结构元宽,正奇数

d_detect_param(11) = 10 '结构元高,正奇数

d_detect_param(12) = 1 '字符最小间距

nameSample='' '初始化训练字符样本为空字符串

result=' ' '初始化字符结果变量为空字符串

END SUB

5.关联HMI界面值显示控件变量。



7.png


具体变量关联操作可参考视频中相关内容或获取程序代码进行参考。

6.在main.bas文件中添加HMI界面初始化函数并在Hmi系统设置中关联初始化函数。

'HMI界面初始化函数

GLOBAL SUB hmi_init()

grab_switch = 0 '初始化采集开关为停止采集

main_task_state = 1 '初始化主任务状态为停止状态

'初始化时依据图像分辨率设置区域的裁剪尺寸,此处图像分辨率为1280x960

ZV_RESETCLIPSIZE(1280, 960)

'设置锁存通道0的大小,以适应图片元件控件大小

ZV_LATCHSETSIZE(0, HMI_CONTROLSIZEX(10, 1), HMI_CONTROLSIZEY(10, 1))

ZV_SETSYSINT('LineWidth',5) '设置绘制画笔宽度为5个像素

init_detect_param() '初始化测量参数

ZV_LATCHCLEAR(0) '清空锁存通道0

END SUB



8.png


7.在camera.bas文件中添加HMI界面中采集相关按钮响应的函数并关联动作函数。



9.png


end


'主界面按下扫描相机按钮时响应的函数

GLOBAL SUB cam_scan_all()

if(d_use_imgfile=1)then

?'请先按下使用本地图片按钮关闭该功能'

return

endif

ZV_SETSYSINT('LogLevel', 7) '设置控制器信息

ZV_SETSYSSTR('DataDir','')

CAM_SCAN(CAMERA_TYPE) '扫描相机,CAMERA_TYPE='mvision'

cam_num = CAM_COUNT() '获取扫描到的相机数量

if (0 = cam_num) then '如果相机数量=0,打印提示信息

? '未找到相机'

return '退出子函数,不往下执行

endif

?'cam_num = ' cam_num '如果扫描到相机,打印相机数量

CAM_SEL(0) '选择扫描到的第一个相机进行操作

CAM_SETEXPOSURE(5000) '设置相机曝光时间为5000us

CAM_SETMODE(0) '设置软件触发模式

CAM_START(0) '开启相机

END SUB

'主界面按下单次采集按钮执行的函数

GLOBAL SUB btn_grab()

'如果d_use_imgfile=1时使用读取本地图片功能,使用控制器时请将此部分代码注释掉

if (d_use_imgfile=1) then

if(d_index=3) then

d_index=0

endif

File_Name='10'+TOSTR(d_index,1,0)+'.bmp' '.../flash/10/目录下的图片所在的路径名称

ZV_IMGREAD(grabImg,File_Name,1)

ZV_LATCH(grabImg, 0)

d_index=d_index+1

return

endif

''读取本地图片功能结束

'如果相机数量为0,提示先扫描相机,并退出子函数不往下执行

if cam_num = 0 then

?'请先扫描相机!'

return

endif

CAM_SETPARAM('TriggerSoftware', 0) '发送触发指令

CAM_GET(grabImg, 0) '获取一帧图像存放到grabImg变量中

ZV_LATCH(grabImg, 0) '将图像显示到锁存通道0中

END SUB

'主界面按下连续采集按钮响应的函数

GLOBAL SUB btn_cgrab()

if grab_switch =1 then '如果已经处于连续执行状态,打印提示信息并退出函数

?'正在连续运行中,请勿重复操作!'

return

endif

if( d_use_imgfile =0) then '如果使用相机采集功能

if cam_num = 0 then '判断如果相机数量=0,打印提示信息并退出函数

?'请先扫描相机!'

return

endif

endif

grab_switch = 1 '采集任务开关置1

if (1 = grab_switch) then

if (0 = PROC_STATUS(grab_task_id)) then

RUNTASK grab_task_id, grab_task '开启连续采集任务

endif

endif

END SUB

'采集任务实现函数

grab_task:

while(1)

if (0 = grab_switch) then '如果采集任务开关=0即停止采集按钮按下时

exit while '退出循环

endif

'grab_switch=1时重复执行以下操作

btn_grab()'单次采集按钮响应的函数

wend

END

'主界面按下停止采集按钮响应的函数

GLOBAL SUB btn_stopCgrab()

if grab_switch =0 then '如果已经处于停止采集状态,打印提示信息并退出函数

?'未开启连续采集!'

return

endif

grab_switch = 0 '将采集任务开关置0

END SUB

8.在draw.bas文件中添加检测ROI更新绘制函数,并在自定义元件属性窗口中关联刷新函数和绘制函数。

end

'和绘制(即选择ROI)有关的界面的刷新绘制函数放在这个bas文件里

DIM is_redraw '绘图标志,0表示未进行绘制,1表示正在进行绘制

is_redraw = 0

DIM hit_pos '定义调整操作标志

'根据鼠标操作更新ROI位置区域函数

GLOBAL SUB update_roi()

if mouse_scan(21) = 1 then '扫描鼠标按下操作

'只有按下时可以改变击中位置,获取鼠标点击位置对应的击中区域编号

hit_pos = ZV_HMIADJRECT2(table(21), table(22), 31, -1)

is_redraw = 1 '绘图标志置1

endif

if mouse_scan(21) = -1 then '扫描鼠标松开操作

'根据区域编号调整roi区域位置

ZV_HMIADJRECT2(table(21), table(22), 31, hit_pos)

is_redraw = 1 '绘图标志置1

endif

if (MOUSE_state(21)) then '鼠标按下时

'根据区域编号调整roi区域位置

ZV_HMIADJRECT2(table(21), table(22), 31, hit_pos)

is_redraw = 1 '绘图标志置1

endif

if (1 = is_redraw) then '如果绘制标志=1

is_redraw = 0 '绘图标志置0

'控件roi坐标转图像roi坐标,控件坐标存放在起始地址为111的数组,图像坐标存放在起始地址为50的数组

ZV_POSTOIMG(0, 1, 31, 41)

d_roi_rect2(0) = TABLE(41)'将图像坐标的数据赋值给ROI变量

d_roi_rect2(1) = TABLE(42)

d_roi_rect2(2) = ZV_LENTOIMG(0, TABLE(33))

d_roi_rect2(3) = ZV_LENTOIMG(0, TABLE(34))

d_roi_rect2(4) = TABLE(35)

SET_REDRAW '重新绘制全部区域

endif

END SUB

'ROI区域更新后实时绘制ROI区域

GLOBAL SUB draw_roi()

SET_COLOR(C_BLUE) '设置画笔颜色为蓝色

ZV_HMIRECT2(31, 300) '将旋转矩形roi分解为HMI支持的绘图图元并添加控制参数,便于HMI绘图显示

DRAWLINE(TABLE(300), TABLE(301), TABLE(302), TABLE(303)) '绘制外矩形

DRAWLINE(TABLE(302), TABLE(303), TABLE(304), TABLE(305))

DRAWLINE(TABLE(304), TABLE(305), TABLE(306), TABLE(307))

DRAWLINE(TABLE(306), TABLE(307), TABLE(300), TABLE(301))

DRAWLINE(TABLE(308), TABLE(309), TABLE(310), TABLE(311)) '绘制方向箭头

DRAWLINE(TABLE(312), TABLE(313), TABLE(310), TABLE(311))

DRAWLINE(TABLE(314), TABLE(315), TABLE(310), TABLE(311))

END SUB



10.png


9.在main.bas文件中添加HMI界面按下【提取训练】按钮时响应的函数并关联动作函数名。

'HMI界面按下提取字符按钮时响应的函数

GLOBAL SUB btn_segment()

'定义检测需要用到的变量:分割参数、样本图片库、训练样本库、OCR分类器、结果图片

GLOBAL ZVOBJECT param,sample,trainSample,ocr,colorImg

'根据界面输入参数生成分割参数

ZV_OCRSEGSETPARAM_(param,d_detect_param(0),d_detect_param(1),d_detect_param(2),d_detect_param(3),d_detect_param(4),d_detect_param(5),d_detect_param(6),d_detect_param(7),d_detect_param(8),d_detect_param(9),d_detect_param(10),d_detect_param(11),d_detect_param(12))

'根据分割参数和检测区域进行字符分割,分割的字符样本图片存放到sample变量中

ZV_OCRSEGCHAR_(grabImg,param,sample,d_roi_rect2(0),d_roi_rect2(1),d_roi_rect2(2),d_roi_rect2(3),d_roi_rect2(4))

'获取样本数量,存放到table(100)中

ZV_OCRSAMPLECNT_(sample,100)

'灰度图转换到RGB图,作为结果图像

ZV_GRAYTORGB(grabImg, colorImg)

if(TABLE(100)>0) then '如果识别到的字符数量大于0

for i=0 to TABLE(100)-1'根据识别到的字符次数进行循环

ZV_OCRSAMPLERECT2_(sample,i,150)'获取每个样本字符的最小外接矩阵,用于显示分割结果

'将样本的最小外接矩阵绘制到界面中

ZV_RECT2(colorImg,table(150),table(151),table(152),table(153),table(154),C_GREEN)

next

elseif (TABLE(100)=0) then '如果未分割提取到字符

?'未成功分割提取出字符!' '打印提示并退出执行

return

endif

ZV_LATCH(colorImg,0)'在锁存通道0中显示结果图像

if (STRCOMP(nameSample, '')=0)then '如果输入的训练字符样本是空的

?'请先输入训练字符样本再重新分割训练!' '打印提示

return '返回子函数,不往下执行

endif

'清空OCR分类器

ZV_CLEAR(ocr)

if(ZV_ISEMPTY(trainSample)=0) then '如果训练样本库不为空

ZV_OCRSAMPLECLR_(trainSample)'在训练字符之前先清空样本库

endif

'根据输入的训练库字符生成训练样本库

ZV_OCRSAMPLEAPP_(sample,trainSample,nameSample)

'使用训练样本库训练分类器,0.8为优化参数(惩罚系数),表示分类器的预测能力, 越小预测能力越强但越容易出错,范围[0,1],建议 0.8;

'0.15为径向基核参数,表示非线性映射能力,值越大非线 性映射能力就越强,范围[0,1],建议 0.15

ZV_OCRTRAINSVM_(trainSample,ocr,0.8,0.15)

if(ZV_ISEMPTY(ocr)=0) then '如果分类器训练成功

?'字符分割训练已完成!' '打印成功提示

else

?'训练字符和分割提取的字符不匹配!'

endif

END SUB



11.png


10.在main.bas文件中添加HMI界面按下【识别】按钮时响应的函数并关联动作函数名。

'HMI界面按下识别按钮时响应的函数

GLOBAL SUB btn_test()

result=' ' '清空字符结果变量

'根据界面输入参数生成分割参数

ZV_OCRSEGSETPARAM_(param,d_detect_param(0),d_detect_param(1),d_detect_param(2),d_detect_param(3),d_detect_param(4),d_detect_param(5),d_detect_param(6),d_detect_param(7),d_detect_param(8),d_detect_param(9),d_detect_param(10),d_detect_param(11),d_detect_param(12))

'根据分割参数和检测区域进行字符分割,分割的字符样本存放到sample变量中

ZV_OCRSEGCHAR_(grabImg,param,sample,d_roi_rect2(0),d_roi_rect2(1),d_roi_rect2(2),d_roi_rect2(3),d_roi_rect2(4))

'获取分割到的字符数量,存放到table(100)中

ZV_OCRSAMPLECNT_(sample,100)

if(TABLE(100)=0) then '如果未分割提取到字符

?'未成功分割提取出字符!' '打印提示并退出执行

return

endif

'使用训练样本和分类器识别字符并输出字符结果到起始地址为50的变量中

ZV_OCRCLASSIFYSVM_(ocr,sample,32,50)

'获取识别到的字符数量,存放到table(100)中

ZV_OCRSAMPLECNT_(sample,100)

'灰度图转换到RGB图,作为结果图像

ZV_GRAYTORGB(grabImg, colorImg)

if(TABLE(100)>0) then '如果识别到的字符数量大于0

for i=0 to TABLE(100)-1'将字符结果循环赋值给结果变量显示到界面中

result(i)=TABLE(50+i)

ZV_OCRSAMPLERECT2_(sample,i,150)'获取每个样本字符的最小外接矩阵,用于显示分割结果

'将样本的最小外接矩阵绘制到界面中

ZV_RECT2(colorImg,table(150),table(151),table(152),table(153),table(154),C_GREEN)

next

endif

ZV_LATCH(colorImg,0)'在锁存通道0中显示结果图像

END SUB



12.png


11.在main.bas文件中添加【运行】按钮响应的函数并关联动作函数。

[1] [2]
关键字:机器视觉 引用地址:VPLC系列机器视觉运动控制一体机快速入门(十)

上一篇:基于Modbus协议通讯的DEMO称重程序
下一篇:Modbus通讯协议4-20ma/0-10v转RS485数字模拟信号隔离AD转换模块

推荐阅读最新更新时间:2024-11-19 22:38

研发机器人激光视觉系统 英莱科技获2000万元B轮融资
据悉,机器人激光视觉系统研发商英莱科技获2000万元B轮融资,投资方为国投京津冀科技成果转化创投基金,本轮融资将主要用于团队建设、产品研发和推广。公开信息显示,英莱科技曾获北京诺宝通达资本运营中心A轮战略投资。 资料显示,英莱科技成立于2013年,主要从事激光视觉系统的研发生产。同时配合唐山英莱机器视觉工程技术应用中心,为用户提供工业机器人配套激光视觉传感器的解决方案。在焊接、涂胶、检测、搬运领域实现智能化、柔性化解决方案的设计开发、工艺测试、技术推广和项目合作。旗下产品有激光视觉焊缝跟踪系统包含5个系列。 激光视觉焊接系统在机器人通信上是一大难点,据悉,英莱科技的一大优势是,已取得德国KUKA、日本FANUC、瑞典ABB、日本安
[机器人]
机器视觉检测系统
1.引言 现代工业自动化生产中涉及到各种各样的检验、生产监视和零件识别应用,如汽车零配件批量加工的尺寸检查和自动装配的完整性检查、电子装配线的元件自动定位、IC上的字符识别等。通常这种带有高度重复性和智能性的工作是由肉眼来完成的,但在某些特殊情况下,如对微小尺寸的精确快速测量、形状匹配以及颜色辨识等,依靠肉眼根本无法连续稳定地进行,其它物理量传感器也难以胜任。人们开始考虑用CCD照相机抓取图像后送入计算机或专用的图像处理模块,通过数字化处理,根据像素分布和亮度、颜色等信息来进行尺寸、形状、颜色等的判别。这种方法是把计算机处理的快速性、可重复性与肉眼视觉的高度智能化和抽象能力相结合,由此产生了机器视觉检测技术的概念。 视觉检测技术
[测试测量]
机器视觉在半导体封装中实现过程
使用机械视觉技术就要使用到CCD、光源、图像采集卡、计算机等设备。CCD与光源固定在晶圆的上方,高度要根据镜头与放大倍数来调节,一旦设置好就锁紧它。为了提高视觉定位精度视野设置在10X10的范围内,在达到精度的情况下同时要兼顾它的经济性,可选用44M像素相机与采集卡,那么在X方向与Y方向的分辨率都达到0.01mm的精度要求。软件使用具有自主知识产权的mVison视觉系统来开发视觉定位软件。mVison具有丰富的基本功能和多种高级功能,高级功能都是在基本功能的基础上开发出来的,同样晶片定位功能也是在基本功能的基础上开发出来,它首先调用画图工具选定好ROI的范围,然后调用CK_IcSearch()函数找到晶片的位置。 除了要检
[嵌入式]
机器视觉上四大LED光源介绍
机器视觉上主要应用的四大LED光源有哪些?欢迎大家一起来看看这篇文章! 环形光源 环形光源由高密度LED阵列组成,结构紧凑,占用空间小,在机器视觉领域得到了广泛应用。提供多种颜色、多种不同角度的环形光源可供选择,也可针对具体的机器视觉应用场合来对环形光源进行定制,由于它更能体现出被测物体的三维轮廓信息,能够有效避免机器视觉照明中出现的对角照射阴影问题,因此在AOI 领域应用广泛。应用领域:液晶显示领域面板检测、PCB覆铜检测及精密测量等。 背光源 背光源是由大规模LED阵列构成,可提供高强度背光照明,照射面积大,能将被测物外形轮廓特征凸显出来,应用领域:划痕检测、IC 的外观检测。 同轴光源 同轴光源可以减少外界干扰因
[嵌入式]
采用LED模拟调光的机器视觉辨认系统电路设计指南
  由于发光二级管技术的不断发展,正逐步地应用于信号、显示、照明和机器视觉辨认等各种领域。而常用的LED 亮度控制方式主要是模拟调光和数字调光( PWM)。比起现有的模拟调光,数字调光能取得一个更高的调光比和电流精度,应用更为广泛。在普通照明中,PWM 调光的开关频率一般在几百到几千赫兹之间,可以有效的避免人眼可见的闪烁。但在机器视觉辨认和工业检验等领域,由于使用的高速摄像机和传感器响应速度速度比人眼快很多,因此在这些领域使用PWM调光必须增加开关频率到几十千甚至更高,实现较为复杂,而模拟调光却没有这方面的问题。本文通过可变降压和线性调光的两级电路实现了高效、准确、高动态范围的模拟调光输出,并使用TI 的 C2430 芯片来实现
[电源管理]
采用LED模拟调光的<font color='red'>机器</font><font color='red'>视觉</font>辨认系统电路设计指南
Cognex读码器提升博世零部件读码效率
博世汽车部件(长沙)有限公司是罗伯特·博世公司和博世(中国)投资有限公司投资设立的外商独资公司,主要经营汽车部件、汽车电子设备系统的生产、研发、应用和销售,主要产品有汽车用起动机、发电机、蒸发风机和冷凝风机、雨刮电机、举窗电机、座椅调节系统、防抱挚死系统等。 为了实现产品的可追溯性,每件产品生产出来都需要进行扫码,但是由于零部件的特点,在扫码过程中遇到了很多问题。由于零件表面带有凹凸面,二维码刚好打在纹路面上,所以一直没有找到好的方案将二维码成功读取,影响到了产品追溯。以前也曾用过其他读码器,但读码成功率不高,影响了生产效率,而采用了Cognex的DataMan 读码器后,功解决了之前读取率不高,甚至无法读取二维码的问题,几乎消除
[嵌入式]
未来中国机器视觉市场到2023年将达到160亿元以上的市场规模
节卡机器人亿元B轮融资刷新国内协作机器人领域最高单笔融资,树根互联5亿B轮融资创下中国工业互联网平台融资金额的全新纪录,旷视科技7.5亿美元D轮融资成今年融资大户。今年上半年,工业机器人融资依然热闹。 据不完全统计,2019年上半年,工业机器人领域累计融资案例达43起,AGV、、工业互联网这三个细分领获得融资的企业最多,融资案例分别为11起、10起、7起。系统集成领域中,4家企业获得融资;领域的汉升达获得1000万pre-A融资。此外,协作机器人领域的节卡、主营并联机器人的阿童木、SCARA领域的凯宝均在上半年斩获融资。 融资金额上,融资数额普遍在千万级别。除去未披露融资数额的4家企业,39家企业融资额均在千万级
[机器人]
机器视觉软件Sherlock的应用——标定
摘要:介绍机器视觉软件Sherlock如何对将相机像素坐标系转换成实际测量或检测所需要的坐标系,以及利用标定来修正相机CCD平面与物体测量平面不平行引起的畸变。 关键词:标定(calibrate) 校正 放射性失真 畸变 虚拟相机 在应用机器视觉进行检测或测量时,要得到精确的测量值,需要相机CCD平面和实际检测或测量零件的表面相平行。否则,将发生透视性失真,从而很难保证精度。相机CCD与零件表面的平行通常通过人工调整夹具来保证。但是,调整夹具不可能完全保证平行,而且需要耗费很长的时间。 相机所拍摄图像的坐标系并不是用户实际需要的坐标系,因此需要将坐标系转换成用户需要的坐标系。 机器视觉软件Sherlock利用标定很容易修正
[应用]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved