EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
给大家分享一下基于匠牛JN-mini5728套件的USB3.0工业相机采集案例。 一 工业相机概述
* x! y3 I& \1 n3 k' p
1 P D& P* g! V* b4 T0 k. H工业相机是机器视觉系统中的一个关键组件,其最本质的功能就是将光信号转变成为有序的电信号。
& g3 g7 i) r4 |$ z! T
, @# x6 r4 Y3 w1 f6 q% }* R3 O" v* L选择合适的相机也是机器视觉系统设计中的重要环节,相机不仅决定图像分辨率、图像质量,同时也与整个系统的运行模式直接相关。; R# q1 d- u7 C" N/ K2 M/ i
0 h3 S7 Q' t/ J" @5 Y/ P# C
工业相机应具有高精度、高清晰度、色彩还原度、低噪声等特点,而且通过计算机可以编程控制曝光时间、亮度、增益等参数,另外图像窗口无级缩放,带有外触发输入,带有闪光灯控制输出等功能。( [- x8 q/ |# y8 w1 p6 o' H# P t
. S/ V# Y. z& Q9 _0 j9 H
工业相机由两大基本部件组成:图像感光芯片和数字化的数据接口。图像感光芯片由数十万至数百万个像素组成。像素把光线的强度转换为电压输出。这些像素的电压被以灰度值的形式输出,所有像素放在一起就形成了图像,发送给计算机。数据接口主要有USB 2.0、USB3.0、1394和千兆以太网。 一般工业相机都提供640x480像素的分辨率和30fps的帧速率。
6 j ]* F$ v3 f% J3 k+ |4 a; y3 L) r" c8 K s8 z: q: }
二 实例详解5 e2 v9 n0 ~6 c6 Q
7 ^; a' m! w- ^% z
编译工业相机实例程序,在Ubuntu PC 运行如下命令:
: }9 f) n: Q" F" p1 p7 U8 W# j
, v- k/ B7 V: e _. R/ t) Ncd SDK/JiangNiu-demo/FlyCapOpenCV
5 z( }# ?5 @* O5 i, _% O' Nmake) _8 B( |$ d, l+ q9 |
8 @9 I, p- T: J7 G; {2 [- `# C
2.1 视频采集实例
a' ~2 W. ?% p1 H8 _
# ~( B; J6 {. K$ R7 v: K7 `实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapVideo.cpp# j% ]+ U7 a) v9 W/ S
1 r, f1 _& O: f' B* x
3 R( a& D, \9 B+ p, o: u2.1.1 实例运行步骤
4 f+ P0 I- h) v8 R: r& B$ t1 V' R8 P i" o# V% w: {- _, |/ [
1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVB USB3.0接口。, N9 A. w* I- r5 l& a6 i
0 Y3 B' `+ l% d0 y
2 JN-miniVB运行如下命令,启动FlyCapVideo实例5 ~5 u# K, S' O) p6 R$ }
/ N; A$ M( u! P6 _ h4 ~+ H9 Proot@am57xx-evm:~#cd /opt/JiangNiu-demo/FlyCapOpenCV/1 d7 ^# z" p" n2 V9 L
root@am57xx-evm:~#./FlyCapVideo
% |8 B. N* B% ]' P9 D* J4 b# f5 y
# p# c) A9 s- Z$ V, C& D5 p2.1.2 实例结果
2 v2 ^+ Y( c" e, u' Q+ r+ c- L1 t6 H* y3 P& l, d0 h1 O: W, l
HDMI显示界面如下图2-1-1所示:8 ]$ M& J) Q" X7 b, u( O y, @
% Z# K6 Z, r) I- J* c3 o
图2-1-1, R8 w, i) `7 _( c: z' g6 g
) a1 G( a* Z5 a% P/ B2.1.3 实例分析
# l; \; c0 c0 k% n! d0 q1 x) z3 W: D/ L
FlyCapVideo程序是从工业相机获取采集数据,转到OpenCV环境下处理图像,并获取该图像长、宽、图像数据等参数,将图像转换为OpenCV Mat类型。( {& P$ v8 ?2 M$ l$ u# Y. I8 }
- p* t6 x0 k3 Z( A
详细过程如下图2-1-2所示:; {, Q5 Z4 [* @& z
![]()
+ A( w' A; u& k+ t( |" R+ D1 |图2-1-2$ O/ U5 o( X, `
B5 l! i" i5 J8 [8 E/ k( S; F2.2 sobel边缘检测实例
5 C' k0 g% f3 L4 l* F7 \$ Y! Y% r6 v; Y& g2 h4 `
实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapSobel.cpp" l8 Q- P# q! c- q7 k1 G* \
$ q. v9 y( c% Y4 M
2.2.1 实例运行步骤. k: J; R" L5 D! p
$ g3 j2 x: Y5 \* X; r" z1 b% ^$ t6 {/ b
1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVB USB3.0接口。+ z4 Z: r& Q( ~0 P8 q1 H$ u
" p0 ^5 Z( X: O3 U: d
2 JN-miniVB运行如下命令,启动FlyCapSobel实例' ^: g" j; J% R8 _- l( J8 R
$ U/ A# M3 W. d! [* N7 `
root@am57xx-evm:~#cd /opt/JiangNiu-demo/FlyCapOpenCV/
/ G l8 N, K7 d' `9 S( Wroot@am57xx-evm:~#./FlyCapSobel
; [1 t A! a# m( ^6 n. R1 h0 _* ]. m+ ?5 f- N+ t5 M R6 e& x5 {( ^, K
2.2.2 实例结果
' H) t* k' y: Z$ i7 ~
' f. y! o# F# ?% kHDMI显示界面如下图2-2-1所示:! |3 P" t P4 s5 m
![]()
1 ]: b1 K: v1 ^! Z+ M/ i# a, n 图2-2-1
% F) I: I5 F% v2 [9 B) J
2 K9 I. l6 v! @% y8 v" Z# R2.2.3 实例分析
: F# @. Z3 l- H/ A/ R- g& k& S, @. \. J$ A" F# Q3 { a
FlyCapSobel程序是对工业相机采集视频进行Sobel算法处理,分别处理图像的X方向和Y方向,然后将两个方向的处理结果加权求和。! ] h- r2 X0 C+ O+ ]
0 S1 k/ r! v2 V# y; L2.3 霍夫线检测实例3 T# Q2 i" H0 z# r5 j- C) _( x+ C
5 k$ {5 F7 l4 Q- j* [. V
实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapHoughlines.cpp, e3 y% z8 q8 [8 l
0 C' l$ z9 `/ s' I5 ?: d
2.3.1 实例运行步骤
" p7 P" [2 B" D. @# T/ V+ y+ k' _ j* X6 Z- M4 g7 Q' l' I
1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVB USB3.0接口。% Z F1 ]6 ~/ T3 H+ R
; a9 `+ h* Y ^( c: o$ x7 n6 [2 JN-miniVB运行如下命令,启动FlyCapHoughlines实例1 _& j+ c' o* T
# R$ ]1 p1 [' n; Y6 o; U1 r
root@am57xx-evm:~#cd /opt/JiangNiu-demo/FlyCapOpenCV/7 m* [6 x. v" D0 V E' A' z
root@am57xx-evm:~#./FlyCapHoughlines3 E* f+ L9 j c' T
. C r6 ~( B, O/ K- T2.3.2 实例结果. u2 }1 m E7 l8 V
) x1 @6 S, {) T, @$ V* _/ VHDMI显示界面如下图2-3-1所示:9 L' R+ c z' c
![]()
/ n4 Z( l/ D* \2 ?' g8 c1 U! i图2-3-1
7 y- F& B. R4 _' `1 \4 [
( \! U8 y, |5 s# E/ [1 L 2.3.3 实例分析
" S8 X' S& A- `
: Z p' B' B! p) JFlyCapHoughlines程序是从工业相机获取数据,转化为OpenCV下Mat类型对象。使用Canny算法检测图像边缘。将边缘图像进行霍夫线检测。 0 i/ W: a, g. Y# c/ K2 m# Q
|