EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
给大家分享一下基于匠牛JN-mini5728套件的USB3.0工业相机采集案例。 一 工业相机概述& [8 A0 s, \6 F- y. u( w! |
) w- }+ i$ b8 |工业相机是机器视觉系统中的一个关键组件,其最本质的功能就是将光信号转变成为有序的电信号。' e" e7 Q$ Y4 i% B" u& G8 s! q
$ r7 ^. [ X, w$ X& N" u G2 ?6 |
选择合适的相机也是机器视觉系统设计中的重要环节,相机不仅决定图像分辨率、图像质量,同时也与整个系统的运行模式直接相关。/ _; u% g. V4 f
$ y7 j0 N( s5 h: c& X" f# o
工业相机应具有高精度、高清晰度、色彩还原度、低噪声等特点,而且通过计算机可以编程控制曝光时间、亮度、增益等参数,另外图像窗口无级缩放,带有外触发输入,带有闪光灯控制输出等功能。
# [6 M! z* B( a! B/ D
: R) n1 ]+ v; W; g. n% s工业相机由两大基本部件组成:图像感光芯片和数字化的数据接口。图像感光芯片由数十万至数百万个像素组成。像素把光线的强度转换为电压输出。这些像素的电压被以灰度值的形式输出,所有像素放在一起就形成了图像,发送给计算机。数据接口主要有USB 2.0、USB3.0、1394和千兆以太网。 一般工业相机都提供640x480像素的分辨率和30fps的帧速率。
% F4 F2 N" A4 z% D" A- D1 ^
* t- R- z8 D7 Q3 `5 t& G7 B二 实例详解! p# q. C' _6 P5 ?7 C# I+ W
! \. h1 H" L4 }* \
编译工业相机实例程序,在Ubuntu PC 运行如下命令: K; _( |; P7 O( W. h: ~
( K& p3 {7 }/ i0 L
cd SDK/JiangNiu-demo/FlyCapOpenCV: [6 p, B+ w) q' w$ k% d/ [
make( U# J! [5 g1 Y4 T! }
- V/ Z, o# {$ t8 |$ Q4 S/ Y
2.1 视频采集实例
7 L3 P; b# ]( W; s" u0 N1 J
0 g4 ^/ V/ b ~' Z实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapVideo.cpp
5 K- W/ v- R/ r" u/ V$ b; D, G& ]; M. z( I( }% M* x% W& i
; V2 O4 c9 m. r$ M
2.1.1 实例运行步骤" x% O' h& c' C, L. B
$ B# t% I: {, L- {7 v7 R" f, z6 l1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVB USB3.0接口。& r2 I j* e: j, |& G% k6 T4 j0 Y2 R9 m
8 e7 e( v8 T$ k0 c9 i) y
2 JN-miniVB运行如下命令,启动FlyCapVideo实例5 T; S/ n3 p! D0 Z
0 l! t, D, O3 |4 r+ ~/ iroot@am57xx-evm:~#cd /opt/JiangNiu-demo/FlyCapOpenCV/ P0 o1 R7 H$ Y) |( u. n
root@am57xx-evm:~#./FlyCapVideo$ A: ]) v+ { { |% l& J, |: k1 s, f
! z. Z- m6 [: z! D) X
2.1.2 实例结果 B( _& {0 t- p) o6 C1 o
+ I6 i8 [3 ^$ HHDMI显示界面如下图2-1-1所示:4 b0 p. N6 R1 _' b: S% j5 K P4 d% G
3 ?* g: z" A7 C$ k' b4 ~- M0 n
图2-1-16 S5 Q' E% B6 m9 u, D1 |* e( k! p! U
8 k5 v5 S9 ^1 [- }( J
2.1.3 实例分析) e. e F0 o* ~; ~: E( j) L
. r+ p" V/ b' ?; Q" t, @8 i$ f; _
FlyCapVideo程序是从工业相机获取采集数据,转到OpenCV环境下处理图像,并获取该图像长、宽、图像数据等参数,将图像转换为OpenCV Mat类型。
* `/ G6 r' X3 _3 Z+ S: f* X! F& s: S; |) `1 V) G
详细过程如下图2-1-2所示:, I2 h) X( h5 T1 y' @: _5 Y
) ~. C, Y" b( @! X- [图2-1-2
3 ?7 q( Z: F0 g8 u- w. z, w! U6 x+ v+ i; ~9 k
2.2 sobel边缘检测实例0 k, f* n- n4 Y8 G3 b" U
) F8 A! L1 C& N; S) A实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapSobel.cpp
2 D# N* P3 F' }0 s! w) A4 v( L4 R
9 _% S# {% i: x7 g% q# |/ y2.2.1 实例运行步骤3 ^. {. e3 K! L9 ^9 }: l
+ `3 [( Q- Y4 d6 I( h4 |6 O
1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVB USB3.0接口。
4 A; C) @ O5 b1 v( h9 o9 T& H/ a3 Q' L/ B8 c' d! {
2 JN-miniVB运行如下命令,启动FlyCapSobel实例
1 n. t1 O5 v- k% G6 P/ A) q' v) T: g; t B# n) U1 s
root@am57xx-evm:~#cd /opt/JiangNiu-demo/FlyCapOpenCV/
; _$ i' Q7 j1 M d% w Groot@am57xx-evm:~#./FlyCapSobel
5 E4 C. F/ o* j/ ?6 O+ R3 B4 W+ B' A0 W6 K; R) I5 q
2.2.2 实例结果
4 g: `$ R H; ^. x( k& `, O$ r! k+ Y9 S- e" R
HDMI显示界面如下图2-2-1所示:% i4 T0 W6 k+ Q. Y" N5 O
2 H5 k- I2 ?9 L
图2-2-11 A, n/ T- w7 T/ I" m2 ]; i) r
( M7 [2 k' Q5 Y6 I
2.2.3 实例分析
9 d' l9 T6 y# v d# ?* y$ h3 G
5 ~5 q5 P# j: b% kFlyCapSobel程序是对工业相机采集视频进行Sobel算法处理,分别处理图像的X方向和Y方向,然后将两个方向的处理结果加权求和。; N$ V2 o4 c* t4 ?: L( M [8 n
9 [# r' I# }' y& L) f1 k: H2.3 霍夫线检测实例
$ o/ Z/ J( H1 S1 I# y# V! o! Q4 p8 l6 b$ P0 y1 U4 m0 t+ U
实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapHoughlines.cpp: H) \+ m3 ~$ v' l, I. z
; R+ Z, I( ^( m. Z6 U% Q% U
2.3.1 实例运行步骤
7 v8 Z2 W6 Q" D4 n+ F% ^* p" l. t& `6 s2 M$ @
1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVB USB3.0接口。. K; @: M8 _: P% g2 \, I* W9 H3 L
2 k1 c, ~0 n( p) x; M* z% [
2 JN-miniVB运行如下命令,启动FlyCapHoughlines实例
6 t& Y5 q8 ~# H) J& R5 n
" I: p3 {# y% { |root@am57xx-evm:~#cd /opt/JiangNiu-demo/FlyCapOpenCV/) f$ q( \& f) M/ a7 R$ B4 p
root@am57xx-evm:~#./FlyCapHoughlines8 V' I0 \$ b0 H! _2 G+ S) n
M8 B) J9 g- s4 W( X) L2.3.2 实例结果5 ^: Z, b* T4 C9 B% L& c( s
& M+ X5 j8 }+ @* }* c# f( Q
HDMI显示界面如下图2-3-1所示:
1 C9 G | ^# x6 o: J9 d$ |, ~1 C9 {8 q: r( O8 G' R
图2-3-1
6 V) ^/ K) V1 D' ^3 J
. u2 J! ^6 {/ G& E 2.3.3 实例分析, M$ M# V' ^/ C
& w$ b# a7 M! |& ?
FlyCapHoughlines程序是从工业相机获取数据,转化为OpenCV下Mat类型对象。使用Canny算法检测图像边缘。将边缘图像进行霍夫线检测。
& u; J! P0 I5 x; d. o |