匠牛社区 AM5728开发板 USB3.0工业相机开发

2019-07-13 07:40发布

注:本案例是采用匠牛社区AM5728开发板JN-mini5728+JN-miniVB套件进行开发测试的。 一 工业相机概述

工业相机是机器视觉系统中的一个关键组件,其最本质的功能就是将光信号转变成为有序的电信号。

选择合适的相机也是机器视觉系统设计中的重要环节,相机不仅决定图像分辨率、图像质量,同时也与整个系统的运行模式直接相关。

工业相机应具有高精度、高清晰度、 {MOD}彩还原度、低噪声等特点,而且通过计算机可以编程控制曝光时间、亮度、增益等参数,另外图像窗口无级缩放,带有外触发输入,带有闪光灯控制输出等功能。

工业相机由两大基本部件组成:图像感光芯片和数字化的数据接口。图像感光芯片由数十万至数百万个像素组成。像素把光线的强度转换为电压输出。这些像素的电压被以灰度值的形式输出,所有像素放在一起就形成了图像,发送给计算机。数据接口主要有USB 2.0、USB3.0、1394和千兆以太网。 一般工业相机都提供640x480像素的分辨率和30fps的帧速率。

二 实例详解

编译工业相机实例程序,在Ubuntu PC 运行如下命令:

cd SDK/JiangNiu-demo/FlyCapOpenCV
make

2.1 视频采集实例

实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapVideo.cpp


2.1.1 实例运行步骤

1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVB USB3.0接口。

2 JN-miniVB运行如下命令,启动FlyCapVideo实例

root@am57xx-evm:~#cd /opt/JiangNiu-demo/FlyCapOpenCV/
root@am57xx-evm:~#./FlyCapVideo

2.1.2 实例结果

HDMI显示界面如下图2-1-1所示:

       图2-1-1

2.1.3 实例分析

FlyCapVideo程序是从工业相机获取采集数据,转到OpenCV环境下处理图像,并获取该图像长、宽、图像数据等参数,将图像转换为OpenCV Mat类型。

详细过程如下图2-1-2所示:
 
图2-1-2

2.2 sobel边缘检测实例

实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapSobel.cpp

2.2.1 实例运行步骤

1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVB USB3.0接口。

2 JN-miniVB运行如下命令,启动FlyCapSobel实例

root@am57xx-evm:~#cd /opt/JiangNiu-demo/FlyCapOpenCV/
root@am57xx-evm:~#./FlyCapSobel

2.2.2 实例结果

HDMI显示界面如下图2-2-1所示:
 
  图2-2-1

2.2.3 实例分析

FlyCapSobel程序是对工业相机采集视频进行Sobel算法处理,分别处理图像的X方向和Y方向,然后将两个方向的处理结果加权求和。

2.3 霍夫线检测实例

实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapHoughlines.cpp

2.3.1 实例运行步骤

1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVB USB3.0接口。

2 JN-miniVB运行如下命令,启动FlyCapHoughlines实例

root@am57xx-evm:~#cd /opt/JiangNiu-demo/FlyCapOpenCV/
root@am57xx-evm:~#./FlyCapHoughlines

2.3.2 实例结果

HDMI显示界面如下图2-3-1所示:
 
图2-3-1

2.3.3 实例分析

FlyCapHoughlines程序是从工业相机获取数据,转化为OpenCV下Mat类型对象。使用Canny算法检测图像边缘。将边缘图像进行霍夫线检测。