EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
给大家分享一下基于匠牛JN-mini5728套件的USB3.0工业相机采集案例。 一 工业相机概述- f3 N/ _' Q! t1 d
; N5 U( w. `! t Q; j工业相机是机器视觉系统中的一个关键组件,其最本质的功能就是将光信号转变成为有序的电信号。
4 l: y* O: |" ^+ [# N* ~6 o2 j' ^. ^( i( K# V. `
选择合适的相机也是机器视觉系统设计中的重要环节,相机不仅决定图像分辨率、图像质量,同时也与整个系统的运行模式直接相关。
# o5 S4 U$ t( v; s8 {* X* R- I' L# `# ~6 W9 t1 i6 A, d0 ~
工业相机应具有高精度、高清晰度、色彩还原度、低噪声等特点,而且通过计算机可以编程控制曝光时间、亮度、增益等参数,另外图像窗口无级缩放,带有外触发输入,带有闪光灯控制输出等功能。5 C, u& h) G" e: ?5 E9 @
3 L0 n6 \" E: P0 O; H3 `4 U工业相机由两大基本部件组成:图像感光芯片和数字化的数据接口。图像感光芯片由数十万至数百万个像素组成。像素把光线的强度转换为电压输出。这些像素的电压被以灰度值的形式输出,所有像素放在一起就形成了图像,发送给计算机。数据接口主要有USB 2.0、USB3.0、1394和千兆以太网。 一般工业相机都提供640x480像素的分辨率和30fps的帧速率。
% D+ r# b5 j/ n
( T) K! H. w& A, x8 J二 实例详解 D7 e# c2 _( O4 K. [4 D# |/ ]) d
7 D2 S% |. \+ V( t4 M4 q+ L9 ]* T. N
编译工业相机实例程序,在Ubuntu PC 运行如下命令:
0 o. z- B$ {5 _5 V/ b9 S
' O7 O1 @ _; ?2 {( }' K* z0 t; Ocd SDK/JiangNiu-demo/FlyCapOpenCV1 b1 @- R! [1 H9 |# O
make
* p* y* y3 _( w, w. \+ s S5 a D) |! K8 V# P0 H
2.1 视频采集实例: Z; W/ F7 a5 Q) ~8 U
- L9 @/ ?' G8 l( d7 k实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapVideo.cpp, d' S9 B i1 s' _# p. p
( t9 ], x* G1 }9 U0 | _' B+ r; v4 o7 p$ p# T c
2.1.1 实例运行步骤
$ y8 \, G3 @$ \ M, d. z1 w
; u' L' |5 w: F- u3 Z! L1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVB USB3.0接口。# p# Q7 M" L" g% v8 L8 U) D! L0 {
* Z$ q% ^2 d$ o5 ?$ x; h3 o' a2 JN-miniVB运行如下命令,启动FlyCapVideo实例
T1 \; w" P4 K9 j
& Q5 c; F% M. D4 Eroot@am57xx-evm:~#cd /opt/JiangNiu-demo/FlyCapOpenCV/
5 B l1 v1 M+ u w% U O& groot@am57xx-evm:~#./FlyCapVideo
" p. `+ a) z) p5 I4 _! M0 V" |+ l4 R# ^- V
2.1.2 实例结果
& X$ r) P+ z1 {1 \ {
0 \, s$ N% S$ Y$ |" }HDMI显示界面如下图2-1-1所示:* }, L8 k1 \: C7 `1 G0 K$ K5 |
![]()
: ~/ }, q9 A0 w& C1 M 图2-1-1' Z. N8 Y y+ Y* D' T. k7 r
" j, {7 p0 g$ ~/ W1 v2 `" J9 O% |
2.1.3 实例分析
0 i) w K' S3 i5 d: b# f& I/ i4 j7 q7 o# M
FlyCapVideo程序是从工业相机获取采集数据,转到OpenCV环境下处理图像,并获取该图像长、宽、图像数据等参数,将图像转换为OpenCV Mat类型。
1 [$ ]5 J- z' b/ d' e6 [
0 A2 j* S2 L; k, z/ h7 d4 p" A详细过程如下图2-1-2所示:0 N9 X }; i9 R1 M
![]()
0 I. w( b7 _2 I0 o5 t图2-1-2
+ ?# i$ r9 e1 j/ l! F
1 |) Y6 u& H" D& Z2.2 sobel边缘检测实例& _+ U' Y+ O4 `2 o# q
6 F7 ~ X* R4 h6 E7 T1 f' o" a- a实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapSobel.cpp
2 P2 U- v8 v' O5 j" h: g# P
" v: K2 G3 \, p5 c4 Z, K2.2.1 实例运行步骤
- o$ T6 V# b% \- m0 D% \% @" i+ l/ Z
1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVB USB3.0接口。: i9 @' z$ ]3 m' I/ `; ~ Y& U# I" D
4 X& c1 Y$ u9 u) R! Y+ h2 JN-miniVB运行如下命令,启动FlyCapSobel实例
8 e" m) ^: Y3 J
5 h& X0 j* M4 z# e' Vroot@am57xx-evm:~#cd /opt/JiangNiu-demo/FlyCapOpenCV/0 w8 q# ^2 E+ ^7 P5 F8 h2 V0 j' _
root@am57xx-evm:~#./FlyCapSobel
3 \/ X0 F5 P/ ^& w8 C: S7 R3 x$ V7 A0 @
2.2.2 实例结果
a/ T# y; T& ~( [( N; |4 c/ |6 f" O$ m0 w6 U
HDMI显示界面如下图2-2-1所示:2 U% }/ G* @) ]. `$ |
2 w9 Z' r2 P6 g& v3 U# B* g% D" T* D
图2-2-1
/ D( s$ Z! j8 p3 K- {
. }$ m1 q+ J: R5 [6 w7 y+ y: T0 t4 v2.2.3 实例分析7 B# ]/ ~$ q9 Q' }1 S* b
2 S; _3 s* k2 ~+ W, q0 c
FlyCapSobel程序是对工业相机采集视频进行Sobel算法处理,分别处理图像的X方向和Y方向,然后将两个方向的处理结果加权求和。
) p( j' e& C9 _- m
1 A0 s5 G$ K( E9 X5 D0 x- S2.3 霍夫线检测实例
; O1 z! Y# \4 r- u, b9 w m/ h4 r; @6 u9 e- E& r: a
实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapHoughlines.cpp" i# a4 _' B2 f) {
4 p' e. e1 `: b. c- c2 E, H0 x1 Q
2.3.1 实例运行步骤2 l: x' b4 G) o8 ?7 t7 e9 n1 f
8 L# ~5 Z) _3 [+ N' h, `1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVB USB3.0接口。7 \- |7 T+ U& i, `+ I s
; c: Y% G' A5 a* b8 Z
2 JN-miniVB运行如下命令,启动FlyCapHoughlines实例
- A+ I D) h; Z9 ]' O: h( S
; T4 @. P/ ^2 Y; G `8 R+ [root@am57xx-evm:~#cd /opt/JiangNiu-demo/FlyCapOpenCV/3 n8 E% ?2 Y! G) g: x
root@am57xx-evm:~#./FlyCapHoughlines& b' V2 U4 Y: O4 l9 |
' n8 J4 J7 n, Z* ~4 u2 t& w( q# r6 R2.3.2 实例结果) z* C1 z5 z7 R. x0 K3 X' d8 B
; v9 r0 P) B- x( X. Q6 s; b6 qHDMI显示界面如下图2-3-1所示:# P1 t" n) \. H. `/ B5 D& E+ j6 T
/ O1 b7 E9 o7 ~ Q$ r) d
图2-3-1
1 d) r% w ]4 e6 c! x( S6 g
2 C# O2 k8 d& d" m 2.3.3 实例分析
& a' j' L, Q. Z& B9 Q1 f- E7 T+ ^% d- l$ Y. a8 u
FlyCapHoughlines程序是从工业相机获取数据,转化为OpenCV下Mat类型对象。使用Canny算法检测图像边缘。将边缘图像进行霍夫线检测。 0 ]" b+ q* i: J8 A: _
|