注:本案例是采用匠牛社区AM5728开发板JN-mini5728+JN-miniVB套件进行开发测试的。
一 工业相机概述
工业相机是机器视觉系统中的一个关键组件,其最本质的功能就是将光信号转变成为有序的电信号。
选择合适的相机也是机器视觉系统设计中的重要环节,相机不仅决定图像分辨率、图像质量,同时也与整个系统的运行模式直接相关。
工业相机应具有高精度、高清晰度、色彩还原度、低噪声等特点,而且通过计算机可以编程控制曝光时间、亮度、增益等参数,另外图像窗口无级缩放,带有外触发输入,带有闪光灯控制输出等功能。
工业相机由两大基本部件组成:图像感光芯片和数字化的数据接口。图像感光芯片由数十万至数百万个像素组成。像素把光线的强度转换为电压输出。这些像素的电压被以灰度值的形式输出,所有像素放在一起就形成了图像,发送给计算机。数据接口主要有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算法检测图像边缘。将边缘图像进行霍夫线检测。
更多回帖