EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
给大家分享一下基于匠牛JN-mini5728套件的USB3.0工业相机采集案例。 一 工业相机概述
" m% k N1 z. S8 R! S- G$ v$ N; W3 @) [0 p# I: E9 R4 ?3 n
工业相机是机器视觉系统中的一个关键组件,其最本质的功能就是将光信号转变成为有序的电信号。7 Q; ^+ r; J4 X
o3 O9 a7 [4 T4 m2 E& j/ R1 M
选择合适的相机也是机器视觉系统设计中的重要环节,相机不仅决定图像分辨率、图像质量,同时也与整个系统的运行模式直接相关。
; ~& a: }3 D( \, x: a6 q: k3 U5 w* ^( n T# D" i6 v
工业相机应具有高精度、高清晰度、色彩还原度、低噪声等特点,而且通过计算机可以编程控制曝光时间、亮度、增益等参数,另外图像窗口无级缩放,带有外触发输入,带有闪光灯控制输出等功能。2 C3 w: j& z7 I" L
; Y! }% t7 M+ ]# Y; W F5 [) D工业相机由两大基本部件组成:图像感光芯片和数字化的数据接口。图像感光芯片由数十万至数百万个像素组成。像素把光线的强度转换为电压输出。这些像素的电压被以灰度值的形式输出,所有像素放在一起就形成了图像,发送给计算机。数据接口主要有USB 2.0、USB3.0、1394和千兆以太网。 一般工业相机都提供640x480像素的分辨率和30fps的帧速率。' p) e! p! w4 Y! I4 Z1 T# O0 q
' {* P/ w6 \2 ]4 K/ r4 z二 实例详解- I7 i; ~, `% q- A4 C, I
0 M2 K; w3 l& Y; Z% n b
编译工业相机实例程序,在Ubuntu PC 运行如下命令:" u" p3 l/ A; n6 w
. J2 Q, c m3 qcd SDK/JiangNiu-demo/FlyCapOpenCV
a3 o* y9 {! ?& Omake# H. y1 p5 J( q& r9 F
& u( Z. Y! A3 g/ h
2.1 视频采集实例
, _4 h& n) ~3 K2 j0 X% p( Q
1 ?5 d; \. ]/ F/ T$ F3 u6 J实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapVideo.cpp
; W! [1 W) f; f, V. z6 J @% L& d/ @. t9 C$ w) m8 ?) D
, m: c5 w. G# {6 t5 j2.1.1 实例运行步骤. h" J1 C& m; c" L
* J; k* {; A" h3 l& n. K/ [" \! B1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVB USB3.0接口。5 @. w. _% j0 j2 M1 R
7 z! A: b* T! B8 T1 l
2 JN-miniVB运行如下命令,启动FlyCapVideo实例- }7 ?( M+ S! R# |' k
$ b, K; e* Z7 \! {+ a
root@am57xx-evm:~#cd /opt/JiangNiu-demo/FlyCapOpenCV// H3 C8 m6 ^" [
root@am57xx-evm:~#./FlyCapVideo* \9 J7 Z# g! ^" }- U' }; G5 n
! H, [* B) W, G3 g4 H
2.1.2 实例结果; D1 _" o4 {6 Y! C
& h2 M3 l1 N5 O1 s4 E: e
HDMI显示界面如下图2-1-1所示:
2 `. A- ?7 Z9 s v. f/ I3 i
) i: I9 ?6 G+ F4 R: |, D7 L 图2-1-1! S& g7 r8 T& [
$ f! Z$ l! j6 Q- x2.1.3 实例分析
+ ~& J8 r, C' m2 c) C
! W' k- Z8 |7 T* r2 _7 u. V0 Q( \FlyCapVideo程序是从工业相机获取采集数据,转到OpenCV环境下处理图像,并获取该图像长、宽、图像数据等参数,将图像转换为OpenCV Mat类型。
3 T' g4 q3 s* H, i/ F8 l- M4 s0 l4 m; [5 L" k" Q. Z$ s4 n% q2 Z% T
详细过程如下图2-1-2所示:# P2 v% g8 T0 y7 J7 V, g
" A- u9 d4 [. V* d Q图2-1-22 ~* F# p. l. s' T, O# N) ~2 I/ U
. e) }& q; }7 a2.2 sobel边缘检测实例. f* V3 t+ [2 o; \" x" T
9 e5 F* o0 m" b
实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapSobel.cpp
) |) s m/ A$ F9 C) H* w( ?& q5 X, y5 w
2.2.1 实例运行步骤
7 a% M$ G# x1 r9 h" _4 c
& }3 u# b# P& H9 \. _3 m1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVB USB3.0接口。
# ^$ ^0 y' X' f# f- v6 |0 j4 ]. \" X; h) }
2 JN-miniVB运行如下命令,启动FlyCapSobel实例
" Q; }/ l6 i. }- [: k3 a1 W) J9 D0 F
root@am57xx-evm:~#cd /opt/JiangNiu-demo/FlyCapOpenCV/
, }1 T7 y/ T" _6 a, `5 [/ Iroot@am57xx-evm:~#./FlyCapSobel a4 E/ \7 O& c
+ O3 z4 x% ^ o. ^+ D# o& f
2.2.2 实例结果) @2 Y. w" o, |. N3 w. Z# x
# z& ~1 o: l" q! oHDMI显示界面如下图2-2-1所示:
' K1 A e- `4 n1 {; N+ R6 i4 T1 l2 e( T4 _
图2-2-14 w% r: n8 h4 a4 z( n
6 ~ \1 j0 _% t) v( G/ w
2.2.3 实例分析
0 b/ F+ @# P0 h9 H
4 S2 E! w1 e* q% wFlyCapSobel程序是对工业相机采集视频进行Sobel算法处理,分别处理图像的X方向和Y方向,然后将两个方向的处理结果加权求和。
2 G9 I. b+ O+ s( g S # g3 b. ^$ i* r8 ]5 ]$ v; e; Q. W! g
2.3 霍夫线检测实例" b) g$ z5 p2 \9 N; d" D' P
& y4 {( v3 [& N4 |/ K9 ~
实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapHoughlines.cpp0 j, E2 }, i; K# P5 Q0 G. q
) C; Z8 K+ u G# G3 P y
2.3.1 实例运行步骤* C0 J5 h% @* H; F4 K- Y7 L( {
3 i$ G: H: ]% d) d
1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVB USB3.0接口。7 ^& ]7 n1 X7 d3 {7 z8 Q* M
4 i& S/ `: V' M( n2 JN-miniVB运行如下命令,启动FlyCapHoughlines实例7 X5 c. j, V; `, k' C' i, O$ @
. g8 M( G; K# S. o i
root@am57xx-evm:~#cd /opt/JiangNiu-demo/FlyCapOpenCV/
0 l' j& P* {7 Croot@am57xx-evm:~#./FlyCapHoughlines
) Z4 V7 a3 O- g" o$ }' N# j$ D; i: a1 q) i
2.3.2 实例结果! n1 U; k$ |- G; c
6 E7 U$ B q' O* ~, o4 \) PHDMI显示界面如下图2-3-1所示:' K0 R) e, o% @: G1 w
! y5 j" t8 t; S+ w. X图2-3-1
9 o$ ]% q8 y* D$ n* r7 A$ s- P( F- f& W
2.3.3 实例分析
9 W% f2 M' N x/ [% i" ~7 q b* j" B
FlyCapHoughlines程序是从工业相机获取数据,转化为OpenCV下Mat类型对象。使用Canny算法检测图像边缘。将边缘图像进行霍夫线检测。 $ S) r6 S6 k r: N5 `
|