EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
给大家分享一下基于匠牛JN-mini5728套件的USB3.0工业相机采集案例。 一 工业相机概述
8 H2 F$ A+ t0 R0 f- F! w0 D
`2 m% K+ T1 f8 ~4 c/ ?" ?工业相机是机器视觉系统中的一个关键组件,其最本质的功能就是将光信号转变成为有序的电信号。
7 K; j% Z. y9 f: G4 H* J/ j
4 Z, r7 J( \! z% x0 t# S( ~' Y8 H9 `选择合适的相机也是机器视觉系统设计中的重要环节,相机不仅决定图像分辨率、图像质量,同时也与整个系统的运行模式直接相关。
9 F2 j8 \; y+ d- R) _
6 ]2 I* Z! |/ f2 N7 M. R$ f工业相机应具有高精度、高清晰度、色彩还原度、低噪声等特点,而且通过计算机可以编程控制曝光时间、亮度、增益等参数,另外图像窗口无级缩放,带有外触发输入,带有闪光灯控制输出等功能。2 {, V6 [. w4 {3 `+ Q+ d
8 a9 Z2 }( j0 N2 y$ \
工业相机由两大基本部件组成:图像感光芯片和数字化的数据接口。图像感光芯片由数十万至数百万个像素组成。像素把光线的强度转换为电压输出。这些像素的电压被以灰度值的形式输出,所有像素放在一起就形成了图像,发送给计算机。数据接口主要有USB 2.0、USB3.0、1394和千兆以太网。 一般工业相机都提供640x480像素的分辨率和30fps的帧速率。
4 n; @, Z/ M4 R: |; L& l; ~1 ?# a. M9 h3 ]8 f. m5 l: `- p1 r
二 实例详解 K3 _; w3 D4 q6 I- b; K; @" n
' |. P8 k; y) e6 N0 r
编译工业相机实例程序,在Ubuntu PC 运行如下命令:# [3 u9 z& ?6 d* R1 }2 @6 b" A, Z( J
- h$ M; Z* s' }
cd SDK/JiangNiu-demo/FlyCapOpenCV& y9 M7 x8 r1 n: b
make- a! Q1 y& V* K* N, V# i
6 @0 h" T* p) m2.1 视频采集实例
4 U1 T2 d4 P" }) h- Z' a0 s! k# a3 x2 s' S/ u. Y
实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapVideo.cpp
1 ^% S' C6 ~7 E" }
' l8 {! }! v' T4 O
' j/ m8 j) {* J, @; t" r2.1.1 实例运行步骤
m6 M; l: ?. t; s6 I4 Y( N
" b* k1 h7 ]! h9 ^6 r1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVB USB3.0接口。
. |/ D. N% g& T- z% }$ h! |4 j# q& B# n5 u* K4 g& }
2 JN-miniVB运行如下命令,启动FlyCapVideo实例9 o3 m/ l" ?: x& {. }/ `; ]
( a9 d& s2 I) `7 D0 `( v, Y
root@am57xx-evm:~#cd /opt/JiangNiu-demo/FlyCapOpenCV/: j; ?* F0 j" ^9 b, q% u& F
root@am57xx-evm:~#./FlyCapVideo
+ C4 p/ c4 V+ U. h6 f% O" t* X) J5 R3 {
2.1.2 实例结果
4 ]# C8 i6 N8 v$ O" g+ \
8 ^1 M5 J2 q: o6 RHDMI显示界面如下图2-1-1所示:
]( x; g' y6 }8 i! Z 4 R$ _# S$ |' ?/ Q* C* C5 L8 N
图2-1-1$ R+ u* S- T8 O! f: k7 T' S
/ P3 s. y" Z- R+ g# ]2.1.3 实例分析& }) `( Z' H# h0 w5 x
' I/ S% P" p3 A! R" P# EFlyCapVideo程序是从工业相机获取采集数据,转到OpenCV环境下处理图像,并获取该图像长、宽、图像数据等参数,将图像转换为OpenCV Mat类型。# W+ J7 c! j* @) Q
) F; l. ]( x# C& q0 U
详细过程如下图2-1-2所示:
7 G& A. b9 k" l/ c2 e0 s# d![]()
. \2 Y( r! g& X0 i图2-1-2+ E H2 B0 ]! \5 {8 E
$ I' i% }, Z/ l3 h3 Z8 N/ z4 e
2.2 sobel边缘检测实例8 _% L5 ]; T7 C
, y' j' H# Z! C; k+ a3 F实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapSobel.cpp7 f* a+ Q5 F& E+ t
9 J8 g. z y1 Z$ |
2.2.1 实例运行步骤5 M3 ^# O9 P m5 x* J; G& |
( }' V5 b9 E) n# A+ \
1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVB USB3.0接口。 \4 }5 h, J/ [
9 d/ f4 e: B- A2 a- w0 S. F
2 JN-miniVB运行如下命令,启动FlyCapSobel实例
' \. ]0 ^5 _/ A/ ~: Y9 I. z2 D& o( l5 M- ~, N
root@am57xx-evm:~#cd /opt/JiangNiu-demo/FlyCapOpenCV/
6 b9 ` {5 ]( W) T; ?) E9 aroot@am57xx-evm:~#./FlyCapSobel
0 U z3 i$ _0 g+ `- V5 z" z6 p( d! ?3 T. }: R6 X, E/ ` T
2.2.2 实例结果& k' M/ R& ~2 i' h1 f0 c2 y
6 E" i. T1 s$ ]/ R/ u
HDMI显示界面如下图2-2-1所示:( k) V2 r. F* Y8 R6 z% q( N
![]()
& f! e) F8 J1 I) x6 [1 i( c5 U 图2-2-1
, L/ h( M) C3 V3 |5 X: v/ {
0 g+ v7 I+ f* x4 V; L2.2.3 实例分析
0 ~' R' q3 |0 o4 t, d9 g2 x
" c: `6 F2 K( N8 CFlyCapSobel程序是对工业相机采集视频进行Sobel算法处理,分别处理图像的X方向和Y方向,然后将两个方向的处理结果加权求和。4 }$ `. `! H% n( G; L2 z
- G$ v$ Q" |. L/ b( c
2.3 霍夫线检测实例- U4 q, L2 p2 q! [! z2 N5 n& Q- R
/ n" r8 H0 G2 e$ A6 t" w实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapHoughlines.cpp
6 e C! E/ ~, l! N- _( x1 C
% R% M1 Y3 X6 c( ]! C& s5 {2.3.1 实例运行步骤
8 E! W' }+ x$ W" F- L* }6 v! p/ s C/ F+ A7 g* z
1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVB USB3.0接口。
; F- i) N6 G1 W7 E4 X+ o, V- S* f/ d! q T( }! E) z1 V3 @
2 JN-miniVB运行如下命令,启动FlyCapHoughlines实例
, A1 \$ R. F0 i; L, j4 C$ s, x1 T: j0 c/ W# X" D) I
root@am57xx-evm:~#cd /opt/JiangNiu-demo/FlyCapOpenCV/+ V) r; q$ S, h% s, v0 g
root@am57xx-evm:~#./FlyCapHoughlines
- p- s D% z" a7 E( ~# G) l7 `# ~" |: y, A0 j& U5 ~
2.3.2 实例结果+ q" D5 C/ G' n2 m5 R C
4 E$ w ~8 r% DHDMI显示界面如下图2-3-1所示:% ~! t4 a- P' g2 g+ m5 X r- r# T# H
# g; b- O" V, a1 y9 Q3 G
图2-3-1
0 e# E3 v; I* e2 X6 `, ^1 G3 E( C8 T3 S3 J
2.3.3 实例分析+ n6 g; ?# r' ?
. K/ v1 q& m/ F
FlyCapHoughlines程序是从工业相机获取数据,转化为OpenCV下Mat类型对象。使用Canny算法检测图像边缘。将边缘图像进行霍夫线检测。 8 q4 z3 \8 A$ y9 v7 T" y- u: _
|