海康VisionMaster 学习笔记(USB 孔定位)

这个例子是获得图像中 USB 孔的中心的坐标。图像如下:

opencv打开海康usb相机 海康usb摄像头怎么用_opencv打开海康usb相机

首先,先加入一个‘本地图像’模块,把我们的标准图像加载进去。具体如何加载图片可以参考 VisionMaster 的帮助。

opencv打开海康usb相机 海康usb摄像头怎么用_特征匹配_02

然后查找 梯形孔四条边的直线 :上直线, 左直线 ,下右。这里用到‘定位->直线查找’模块,并且要用四个。

opencv打开海康usb相机 海康usb摄像头怎么用_特征匹配_03


使用直线查找模块首先要画出 ROI区域。如下图。

opencv打开海康usb相机 海康usb摄像头怎么用_特征匹配_04

之后是设置各种参数。设置的过程中可以点击 ‘执行’按钮观察效果。如果参数不合适,获取的直线会不是我们希望的那个直线。

opencv打开海康usb相机 海康usb摄像头怎么用_特征匹配_05

剩余的三个直线的参数如下:

opencv打开海康usb相机 海康usb摄像头怎么用_加载图片_06

opencv打开海康usb相机 海康usb摄像头怎么用_特征匹配_07

opencv打开海康usb相机 海康usb摄像头怎么用_加载图片_08

然后我们测量 出相邻两边的交点 :左上直线 交点, 右 下直线 交点 。这里要用到‘线线测量’模块,这个模块可以计算两个直线的交点。至此,程序结构如下:

opencv打开海康usb相机 海康usb摄像头怎么用_粗定位_09

然后呢,再计算两个交点的中心点,这里用到‘点点测量’。输入量为线线测量得到的两个交点:

opencv打开海康usb相机 海康usb摄像头怎么用_加载图片_10

运行一下程序,我们可以看到能够获得角度、距离、中心点坐标。

opencv打开海康usb相机 海康usb摄像头怎么用_加载图片_11

至此,我们的计算就完成了。但是这个程序还缺少一步,就是粗定位。我们前面的计算都是假设在 ROI 区域内能够找到我们希望的特征的。可是实际图像可能会有偏移,也会旋转。这里我们用‘定位->高精度特征匹配’模块和‘定位->位置修正’来做初步的定位。修改后的程序框图如下:

opencv打开海康usb相机 海康usb摄像头怎么用_特征匹配_12

特征匹配需要有个模板,模板也从这幅图像中取。选好区域后点击‘生成模型’。我们的模板就建好了。

opencv打开海康usb相机 海康usb摄像头怎么用_粗定位_13

特征匹配的作用是用来计算每幅图像相比标准图像偏移和旋转了多少的。这里获得的结果需要传递给下一个模块‘位置修正’。位置修正得到的结果传递给其他模块里面的 ROI 区域位置修正控制。比如有幅图像是向左偏的,那么特征匹配后,ROI 区域也都会向左偏移的。

opencv打开海康usb相机 海康usb摄像头怎么用_加载图片_14


位置修正模块有一个创建基准按钮,这个非常重要。我们选择标准图像,也就是不需要偏移和旋转的。然后点击这里的‘创建基准’。VisionMaster 就会以这幅图像为基准,也就是这幅图像的位置修正和角度修正参数都是 0。然后直线查找模块也要相应的设置一下。

opencv打开海康usb相机 海康usb摄像头怎么用_加载图片_15

我们导入几幅偏移和旋转的图像试试。

opencv打开海康usb相机 海康usb摄像头怎么用_加载图片_16

可以看到计算的结果很准。如果我们用快速特征匹配,匹配点会少一些,计算速度会快一些。但是对于我们的应用来说结果也不差。

opencv打开海康usb相机 海康usb摄像头怎么用_opencv打开海康usb相机_17