EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
给大家分享一下基于匠牛JN-mini5728套件的USB3.0工业相机采集案例。 一 工业相机概述+ E2 {) t. s2 \4 `1 {- Z
+ [! {0 F3 }. r+ n# u工业相机是机器视觉系统中的一个关键组件,其最本质的功能就是将光信号转变成为有序的电信号。: ]* m9 ~0 T. k" o9 G3 T% Q
# ]5 u7 [1 ^ R- S' Z- P$ x, B
选择合适的相机也是机器视觉系统设计中的重要环节,相机不仅决定图像分辨率、图像质量,同时也与整个系统的运行模式直接相关。+ r3 ?/ K5 }7 d D9 \
0 `* H: i1 x/ @# `工业相机应具有高精度、高清晰度、色彩还原度、低噪声等特点,而且通过计算机可以编程控制曝光时间、亮度、增益等参数,另外图像窗口无级缩放,带有外触发输入,带有闪光灯控制输出等功能。2 r, h' W) R; R) G
+ |7 r' m& G# q2 _8 r9 N" C) Q
工业相机由两大基本部件组成:图像感光芯片和数字化的数据接口。图像感光芯片由数十万至数百万个像素组成。像素把光线的强度转换为电压输出。这些像素的电压被以灰度值的形式输出,所有像素放在一起就形成了图像,发送给计算机。数据接口主要有USB 2.0、USB3.0、1394和千兆以太网。 一般工业相机都提供640x480像素的分辨率和30fps的帧速率。
) S! p$ h0 z/ ~9 l7 ~0 U4 K$ c8 Y
! W; e) |; u' [ V) \: s3 b. i& n二 实例详解
5 P" l6 F% ^. n: T- t% Y- k
. Q/ Y1 [5 J$ f: \+ f编译工业相机实例程序,在Ubuntu PC 运行如下命令:
% x$ Y3 ?( b# {8 |! m( u4 E9 B. u, a5 ^+ Q% [4 j- W+ [
cd SDK/JiangNiu-demo/FlyCapOpenCV
) i6 B! B6 ?0 |' u& P$ T. gmake
$ Q8 G$ @; }- J" _& H/ {! g) T" V9 i3 D
2.1 视频采集实例" j1 `6 `% b0 x
* M: z1 e3 j- B5 B( a
实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapVideo.cpp
9 \: t% a! j) W/ {7 d' A( r. a1 q" o- @: `- I% _" m
! k3 |! E9 \, t) K; W6 b. a
2.1.1 实例运行步骤9 K7 ]- L, a% \& R" c
8 T' d K: N/ B, f- P! \. V1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVB USB3.0接口。( s! V- C9 c2 [1 T2 }7 x2 O' b
+ y7 ?: j0 E% F" n& t2 JN-miniVB运行如下命令,启动FlyCapVideo实例! }+ d3 j( G, m, u
0 ~3 X; O& y q6 Z" s" [0 w2 _
root@am57xx-evm:~#cd /opt/JiangNiu-demo/FlyCapOpenCV/& n: z, i4 r, V
root@am57xx-evm:~#./FlyCapVideo" P: K2 j: A7 D* _; J4 Q. _
7 b1 C: q6 ^4 F) Z+ j" p
2.1.2 实例结果! v. J) T4 U* r- U G
4 L0 c( E3 {3 ^" W/ `
HDMI显示界面如下图2-1-1所示:, A8 D' N" }% `) ~" X3 O& q& B
2 n' }( P2 \, a! n8 h6 V
图2-1-1
" h# @3 }8 |+ c* B1 W8 Z3 s2 s5 t& Q% d% c3 T! o7 {- A
2.1.3 实例分析# |: P! ]1 ]' Y0 u- ]) J# u
+ X C' m# {5 s% S, QFlyCapVideo程序是从工业相机获取采集数据,转到OpenCV环境下处理图像,并获取该图像长、宽、图像数据等参数,将图像转换为OpenCV Mat类型。! m2 A: K* I2 m% s( O0 j9 V* h
; T" X; @( a5 B
详细过程如下图2-1-2所示:
) x/ v7 ]" j8 m7 V. Z8 s4 g ; b2 M& ?9 n0 Z6 m! N! b
图2-1-2, X5 D- g& V3 \3 D1 v9 h- q' {
0 b1 ]. H) L# j2 }+ d8 C f' N
2.2 sobel边缘检测实例5 b4 M! r5 z# n& p- ?+ Y
/ [% d, Z8 ?# y5 Q8 X, X实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapSobel.cpp& V2 a3 W! F; N Y9 @
7 g/ x8 M2 E8 v" R* J; P" z
2.2.1 实例运行步骤
/ P. _! {0 j; p+ V. S
, K, z4 T- m& R9 s1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVB USB3.0接口。) y$ H. e* P, r
( u& G: H9 [2 N* S3 C2 JN-miniVB运行如下命令,启动FlyCapSobel实例
9 G' c+ K5 N, w |4 d- \
{+ E) j) F4 Lroot@am57xx-evm:~#cd /opt/JiangNiu-demo/FlyCapOpenCV/
1 t ^0 o" V) \* aroot@am57xx-evm:~#./FlyCapSobel
+ h1 K/ I8 F. c/ E' @
3 |* C; p9 c% \/ s5 T2.2.2 实例结果: p0 a3 ^. |6 W' e( R. ~2 t& f
" f2 _+ h) m4 h+ wHDMI显示界面如下图2-2-1所示:4 |! Q$ I0 v( w' {6 e3 C0 _& z
![]()
5 Q2 [, X5 i! ^1 y 图2-2-1+ W0 d4 H6 ~9 C. H. H! f6 Y3 P4 a
" M" G1 P: K' i! p% z) b! n2.2.3 实例分析
6 i8 b0 |& ?2 H0 y8 V3 G2 r- ]3 m. ~% c' W3 q
FlyCapSobel程序是对工业相机采集视频进行Sobel算法处理,分别处理图像的X方向和Y方向,然后将两个方向的处理结果加权求和。: _: T8 T8 b1 h5 W4 @
5 q+ r3 n5 J+ C# ~
2.3 霍夫线检测实例
; S( W: D6 S6 i" I1 o
! m ~% U. N/ r4 T8 ?实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapHoughlines.cpp! @, d! p# O8 U, E) c0 C" c6 A% M
x' r4 V7 e: t! |) _8 T. u5 y2.3.1 实例运行步骤
4 S3 Z7 H1 e/ c7 L- v& Z I" }1 M/ ~7 s5 f0 L7 i$ p* l1 a
1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVB USB3.0接口。
1 K m( q; G+ [; ~- C( M3 b
) d2 ^7 J3 r; B2 V7 k2 JN-miniVB运行如下命令,启动FlyCapHoughlines实例/ B& D: P$ H$ w3 f$ a) p6 J F
4 e, v2 r8 R( T0 u1 o
root@am57xx-evm:~#cd /opt/JiangNiu-demo/FlyCapOpenCV/
! L: }, U0 Q1 B& r9 iroot@am57xx-evm:~#./FlyCapHoughlines
$ O" b5 k) \ k) Z' P" A7 Q& S! O3 A2 z5 U1 n1 D
2.3.2 实例结果
+ q+ c' y1 V4 I& e/ @5 R! h
$ _3 W z4 E7 C0 v5 l5 P& gHDMI显示界面如下图2-3-1所示:/ o0 i9 i) [. w$ _2 m1 Z- q( ]& l
$ Y5 g. Z! P1 i# F$ U* }$ @
图2-3-1
# O! T- b' ^+ x* ^* z
" M) P, R2 ?% G5 b 2.3.3 实例分析- r9 l( t4 A5 v7 B) R O) Y
2 n R# [7 B w! f- {) GFlyCapHoughlines程序是从工业相机获取数据,转化为OpenCV下Mat类型对象。使用Canny算法检测图像边缘。将边缘图像进行霍夫线检测。
+ e& R! A( O8 s n. U) X& P |