EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
给大家分享一下基于匠牛JN-mini5728套件的USB3.0工业相机采集案例。 一 工业相机概述6 p/ f; o0 M4 N
|! T2 Q" Q% v5 W
工业相机是机器视觉系统中的一个关键组件,其最本质的功能就是将光信号转变成为有序的电信号。. @& \2 Q- f& U
|( z8 Y; J; X6 k; \
选择合适的相机也是机器视觉系统设计中的重要环节,相机不仅决定图像分辨率、图像质量,同时也与整个系统的运行模式直接相关。
) y) k7 m H8 X2 H7 z( D5 |7 q/ |3 m0 ~# _
工业相机应具有高精度、高清晰度、色彩还原度、低噪声等特点,而且通过计算机可以编程控制曝光时间、亮度、增益等参数,另外图像窗口无级缩放,带有外触发输入,带有闪光灯控制输出等功能。
1 K$ j2 {2 d7 A3 I2 Z
2 D. z& a( K3 _工业相机由两大基本部件组成:图像感光芯片和数字化的数据接口。图像感光芯片由数十万至数百万个像素组成。像素把光线的强度转换为电压输出。这些像素的电压被以灰度值的形式输出,所有像素放在一起就形成了图像,发送给计算机。数据接口主要有USB 2.0、USB3.0、1394和千兆以太网。 一般工业相机都提供640x480像素的分辨率和30fps的帧速率。8 C# {8 r/ d' ]" Q4 X; k; E4 G
7 {% Q( C' a8 C7 ]. q
二 实例详解$ X$ Z1 L' N" F6 ]) | v
5 n; i- q- T) b; H% j, ^
编译工业相机实例程序,在Ubuntu PC 运行如下命令:( C J& y' M: d3 s+ g9 H, L
8 H5 i* e3 O: x$ Q8 ncd SDK/JiangNiu-demo/FlyCapOpenCV
1 c2 B! U1 a0 o* Amake
7 u; E5 E- I5 Z0 [
E/ h8 B# N4 a- @6 f" o2.1 视频采集实例. O: b) t" f) t
0 i8 K+ k8 N3 |( `
实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapVideo.cpp' F$ C7 @) |2 J2 ~3 J* f
: k# }; T7 p' s1 M" b5 U2 Q
2 f! x# x; T& Y( z( f: |' e, v2.1.1 实例运行步骤4 M$ l; C+ m+ g( r+ U
* I8 Q' m1 c: F" R$ p1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVB USB3.0接口。
8 `% Y2 G0 Z& c& @# Q2 t! k2 a1 Y5 z: Y8 R0 `8 D. U
2 JN-miniVB运行如下命令,启动FlyCapVideo实例' n5 [# Q, {9 {& A% V% X' P
( w- A9 K5 ]1 }1 A% i$ A
root@am57xx-evm:~#cd /opt/JiangNiu-demo/FlyCapOpenCV/4 I! f) c9 ?2 d) Z* j0 y
root@am57xx-evm:~#./FlyCapVideo9 y! {8 P$ `3 Y' {, | C R
+ ?% u% H* ^0 n1 ~9 P+ Z. C2.1.2 实例结果
. S$ T- n5 \* }) i2 I0 ^7 c: B" ^, r I y2 c: F
HDMI显示界面如下图2-1-1所示:
' l J: y) t0 L8 m0 C9 q: j
{9 `- c' ?- O @ 图2-1-1) D1 V* E% t1 t% N5 V
6 F$ L/ _& W4 O- M Y" u, w' a/ S
2.1.3 实例分析
, b$ _' ]; ?: @, l% T% ]3 A4 X3 T$ a: A% z6 X
FlyCapVideo程序是从工业相机获取采集数据,转到OpenCV环境下处理图像,并获取该图像长、宽、图像数据等参数,将图像转换为OpenCV Mat类型。
8 E: ~7 M) y: P) p8 B G3 V9 k; x6 U: T9 u# p; @
详细过程如下图2-1-2所示:: B2 H, {% x* p4 h# T% z! I& f; |
. r6 [7 |: {! n
图2-1-2* y: V4 Q4 t" Z2 K6 s
0 U- \9 f% c" W$ {$ H" R: i
2.2 sobel边缘检测实例
4 ?! j% d. r/ b' |5 A/ z8 F* v7 A3 U' G2 @2 G J3 B7 d: z$ F
实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapSobel.cpp' W- P. O7 k" e0 u
; d- l3 W9 @/ T4 @5 x
2.2.1 实例运行步骤& ]& G) D0 u& f4 U- p
' y2 G; E( f1 X* ]4 V
1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVB USB3.0接口。9 _' F/ u$ \3 L% |, a# t/ \9 t
3 K( V$ p t! C& P2 JN-miniVB运行如下命令,启动FlyCapSobel实例) [5 {/ f) X/ t+ F7 j: X
7 r( D) H3 L. J2 f' P' b
root@am57xx-evm:~#cd /opt/JiangNiu-demo/FlyCapOpenCV/) K# f, c; @' @# |2 f
root@am57xx-evm:~#./FlyCapSobel
9 \/ w1 P5 {, J' M' ]# K# Y% A! _7 t2 z
2.2.2 实例结果
; d m. d$ M: \( ^; w: k( [& Q& G& ~7 P
HDMI显示界面如下图2-2-1所示:' k- n8 R& r$ B4 t" ?2 D# j! C
1 V, d% \& K1 G7 C 图2-2-1
4 b) Q9 B" r( m- P: a" C' ?5 m+ W9 I4 ^' W! x0 h; u
2.2.3 实例分析2 E2 d0 z4 a+ u2 V9 C
' t: m. o( g- QFlyCapSobel程序是对工业相机采集视频进行Sobel算法处理,分别处理图像的X方向和Y方向,然后将两个方向的处理结果加权求和。
0 v+ E) N( F7 j: a) T) b" I
( E: \& D' t# k) H: u$ w+ y2.3 霍夫线检测实例# l0 T4 X( F1 c8 T1 r
+ ?. x# u8 ]% I* l$ t0 o实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapHoughlines.cpp& g) h- ~. _" _, M; D0 x
. @% ~, D2 u+ U/ F; o0 M* s0 N2.3.1 实例运行步骤
# w. ^ x4 I. C; Y. p4 j: ^6 ^
/ u4 P4 v) [* a. x; @5 v1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVB USB3.0接口。
0 |* p" \; y' `: ?1 \0 q5 h3 P; N# p7 h; C$ d4 D1 C" h/ _
2 JN-miniVB运行如下命令,启动FlyCapHoughlines实例8 U! g0 e% }* C
: s" c4 w. B0 G1 M* m! M" F' e& Broot@am57xx-evm:~#cd /opt/JiangNiu-demo/FlyCapOpenCV/- n: v" A' l7 u5 a' u0 E: w+ m
root@am57xx-evm:~#./FlyCapHoughlines
9 P( b/ e& p* V/ w2 `/ D r; I p
( \" [+ X! y3 F/ E; I2.3.2 实例结果8 R+ g- |5 H/ u- [. M& j$ L4 T
% @9 t# u0 w) v0 E: L( G, x& J+ s; _
HDMI显示界面如下图2-3-1所示:
[0 Q! J2 I( L" y4 `( P m; n, }% m
图2-3-1
R& g: K( ~" @1 r+ H6 f/ B1 `
( D7 R9 k' {8 s0 z4 Y) y 2.3.3 实例分析' U! {0 k3 I' g* P V
/ k) J+ k+ T- C# s4 GFlyCapHoughlines程序是从工业相机获取数据,转化为OpenCV下Mat类型对象。使用Canny算法检测图像边缘。将边缘图像进行霍夫线检测。 5 R7 B& u6 J1 T; Q% B- _+ s
|