EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
给大家分享一下基于匠牛JN-mini5728套件的USB3.0工业相机采集案例。 一 工业相机概述
4 R( x5 d* c/ G# z" K2 j" t) L2 U0 f2 J
工业相机是机器视觉系统中的一个关键组件,其最本质的功能就是将光信号转变成为有序的电信号。
1 h1 ^% X. l9 h% B1 x! n- T
$ B. t/ q) `6 r- u' Q选择合适的相机也是机器视觉系统设计中的重要环节,相机不仅决定图像分辨率、图像质量,同时也与整个系统的运行模式直接相关。
( P: ]: _7 w$ G( U' P$ m, X# S$ k, M1 R' Y6 c& R' y3 J
工业相机应具有高精度、高清晰度、色彩还原度、低噪声等特点,而且通过计算机可以编程控制曝光时间、亮度、增益等参数,另外图像窗口无级缩放,带有外触发输入,带有闪光灯控制输出等功能。
3 \, ?; T; E7 I3 G9 j& L. ?5 Z2 r2 N' n( r& T D, B2 Y
工业相机由两大基本部件组成:图像感光芯片和数字化的数据接口。图像感光芯片由数十万至数百万个像素组成。像素把光线的强度转换为电压输出。这些像素的电压被以灰度值的形式输出,所有像素放在一起就形成了图像,发送给计算机。数据接口主要有USB 2.0、USB3.0、1394和千兆以太网。 一般工业相机都提供640x480像素的分辨率和30fps的帧速率。( p9 T! K) [' I0 H2 }
! M& T1 T2 W% s! F1 s) p! r% p2 ]7 b
二 实例详解
; X+ a% M1 c! C. t5 ^ } u/ p |* O4 Z0 a% _
编译工业相机实例程序,在Ubuntu PC 运行如下命令:3 ]- Q* R* Z# p7 ~1 M+ I; E3 i
5 H: R: U/ f6 Rcd SDK/JiangNiu-demo/FlyCapOpenCV
- d" N. s8 N- x/ `3 l3 U/ ]make
9 K( p' S# ^/ N8 z% V* `2 Y2 S' _3 f3 ?& ~/ n
2.1 视频采集实例
) C/ \0 z" T e' y, t7 V H
3 S: |) Y# ` W6 J2 b& J实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapVideo.cpp. `+ F- ]2 _( c4 v+ T6 U8 h
! L$ F0 }/ C) y) `3 x" U" c
/ E9 u F, L1 j
2.1.1 实例运行步骤# ?0 S5 J M( a9 u; ]8 O
' l* t2 ?- ?: ^9 J! n0 a B5 ?
1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVB USB3.0接口。
* G8 ?. F+ C6 f6 O( A8 V, S6 X5 Z6 W6 P
2 JN-miniVB运行如下命令,启动FlyCapVideo实例
# R8 S$ r. l0 B* G! f( v+ E
, j* A: F. w0 O$ o& Wroot@am57xx-evm:~#cd /opt/JiangNiu-demo/FlyCapOpenCV/
) H9 H7 C! L. _1 Sroot@am57xx-evm:~#./FlyCapVideo
& G% M, }( L) b6 i7 Z, S
: j- p, j. U+ v2.1.2 实例结果" }9 o) J& j( d$ |
( u+ M* v. w) Z# l
HDMI显示界面如下图2-1-1所示:
1 J9 j! z' d% M9 L4 W# q9 ^4 b- b. @& C3 P M
图2-1-1, S+ I- n, O* q$ D
- r3 W6 c5 h5 z+ |7 j7 C: F+ j) s2.1.3 实例分析
2 v0 N5 n+ `! I9 k1 N/ J
# U. l# y% Y' E* @FlyCapVideo程序是从工业相机获取采集数据,转到OpenCV环境下处理图像,并获取该图像长、宽、图像数据等参数,将图像转换为OpenCV Mat类型。
6 o/ @; d. S5 S2 h# c: n# M
8 N3 {' o* b* e4 _- m9 N详细过程如下图2-1-2所示:7 X* I/ d) U7 g5 b( v
8 L R9 A6 G# m
图2-1-2# z: Z$ ^# Y, F+ ?% r/ f" [
* n0 v& { k+ ]3 ?. e" P2.2 sobel边缘检测实例) J* _' B* K! {: o
6 c' [! Z3 d2 d0 @ a$ Z! P
实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapSobel.cpp
$ a1 a( r$ t7 _7 z
. `% M9 d/ `: \' a) B$ z2.2.1 实例运行步骤! q% E' b8 r6 f
0 C9 C/ ~) x+ a4 T) g$ x( b" n
1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVB USB3.0接口。; O7 _9 ^2 u- Y% U9 [
! E4 N3 Y& T) T/ e( m
2 JN-miniVB运行如下命令,启动FlyCapSobel实例3 |* d" M/ z* P# L. V8 y- f
6 Y. k/ q2 f E
root@am57xx-evm:~#cd /opt/JiangNiu-demo/FlyCapOpenCV/1 R5 C) O3 S" H2 T$ o. \0 r
root@am57xx-evm:~#./FlyCapSobel
4 b7 X' v, M7 k- F& P, @
2 ^( n5 p* v1 ~ \ q2.2.2 实例结果
9 W; v1 N* ^. M$ L7 q
0 _% ^/ R2 H* A# W( {6 L6 @7 g- a" `HDMI显示界面如下图2-2-1所示:) L5 I6 g5 G N4 ?1 o, H" _/ b O0 k
& y- x6 q; f$ `4 J2 j( e8 z7 j
图2-2-1
0 ~( ?- J v" u1 P
0 t! k }1 d5 ? J2.2.3 实例分析0 ~% x7 @$ O7 Y- b6 s) A
. K, I3 k1 P6 C) E4 WFlyCapSobel程序是对工业相机采集视频进行Sobel算法处理,分别处理图像的X方向和Y方向,然后将两个方向的处理结果加权求和。
# B6 r" o6 d( v0 C/ R
1 B0 E' \2 U( t7 Z/ l0 E5 U, h6 H2.3 霍夫线检测实例/ x h" z) B/ }
( Y5 V0 Y! w- G3 p; w. ?实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapHoughlines.cpp n' b4 x3 i# [9 @( G
9 g& c, e! e a2.3.1 实例运行步骤
7 F+ O( K! a# [. `* r5 d+ ?* L/ t9 Q0 F1 Y. G- E
1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVB USB3.0接口。
+ e" R: U4 J7 v( ~) ^; n( T% z8 m1 o" G
2 JN-miniVB运行如下命令,启动FlyCapHoughlines实例0 r5 u6 Q2 g7 H# ~4 R
0 w9 s/ A! w' e- I0 proot@am57xx-evm:~#cd /opt/JiangNiu-demo/FlyCapOpenCV/
) `# c7 d3 b+ p- Z1 C4 wroot@am57xx-evm:~#./FlyCapHoughlines
) K1 S% x7 s, w- p" \8 N3 K
" _4 s# q T" t$ J" Z2.3.2 实例结果& X: P6 @% C& {: M
r- ]0 ~% X" _, u* b
HDMI显示界面如下图2-3-1所示: x. C( z- j; m' P4 x2 @4 ?
- A8 C0 N/ V. g9 E: _9 \- c
图2-3-1: ?# `1 v2 R2 Z/ k9 S
, ~/ V! y6 o: n/ `/ J 2.3.3 实例分析$ v. w: D3 f$ @1 m5 {& S7 s
# b% H0 W9 r4 z: a, S, S9 U) n3 aFlyCapHoughlines程序是从工业相机获取数据,转化为OpenCV下Mat类型对象。使用Canny算法检测图像边缘。将边缘图像进行霍夫线检测。 p0 D: k/ P* f: c7 u+ f
|