EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
给大家分享一下基于匠牛JN-mini5728套件的USB3.0工业相机采集案例。 一 工业相机概述
" H, x/ t9 q ~0 B: x4 h+ A% d. p
+ j0 v5 q6 b' P2 B( q5 ], J工业相机是机器视觉系统中的一个关键组件,其最本质的功能就是将光信号转变成为有序的电信号。
5 C- ~, j% Y4 M, Y3 ~, m
7 Q9 T$ [( m+ N7 P; W; S选择合适的相机也是机器视觉系统设计中的重要环节,相机不仅决定图像分辨率、图像质量,同时也与整个系统的运行模式直接相关。
2 ^; ~- |9 y% [. ~2 F& `: E3 V [) @! U
工业相机应具有高精度、高清晰度、色彩还原度、低噪声等特点,而且通过计算机可以编程控制曝光时间、亮度、增益等参数,另外图像窗口无级缩放,带有外触发输入,带有闪光灯控制输出等功能。8 O B6 ?. g- c" i
( e: P; q T+ B, j% d工业相机由两大基本部件组成:图像感光芯片和数字化的数据接口。图像感光芯片由数十万至数百万个像素组成。像素把光线的强度转换为电压输出。这些像素的电压被以灰度值的形式输出,所有像素放在一起就形成了图像,发送给计算机。数据接口主要有USB 2.0、USB3.0、1394和千兆以太网。 一般工业相机都提供640x480像素的分辨率和30fps的帧速率。
( ]1 A5 m3 B$ `5 b, c t7 r5 ~" i8 ?% m5 L) @2 w+ h
二 实例详解0 b4 O8 _' P/ {9 n
5 i( H/ z" d& _# n" q& ~编译工业相机实例程序,在Ubuntu PC 运行如下命令:& b d0 p0 P+ U; j( r7 b
' P2 a0 n7 f2 C& R$ L" F% B
cd SDK/JiangNiu-demo/FlyCapOpenCV
/ }6 X# {7 C! J G# ]make2 |8 ]2 Y3 F2 T1 X9 W
) n- P2 I, E8 _0 ~7 N2.1 视频采集实例
, a# p1 `* t. s- m, N6 R: v0 q8 {- c( @" j" I7 E) A# p
实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapVideo.cpp8 T& B$ C+ S' l% r4 z% e
6 V- x: x7 |3 ]# [/ j; L5 O; B! P6 B% I+ E+ K% D
2.1.1 实例运行步骤: ^! m7 n- d; a, _6 }: V
" |) ~; F$ _ _) a7 c
1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVB USB3.0接口。
% N$ m3 [" z( I- r, b$ Y# ?
' ]- k0 `5 C- L5 r3 a; G! k2 JN-miniVB运行如下命令,启动FlyCapVideo实例$ {" y; c, ^* O2 x+ e( N8 \0 k9 x7 e
6 U' Q6 x- K c& i+ Proot@am57xx-evm:~#cd /opt/JiangNiu-demo/FlyCapOpenCV/
8 u8 {- }; L* W- {* T- E t1 Aroot@am57xx-evm:~#./FlyCapVideo* e! g. V8 `* ?. K5 f. t
" _! S8 N: m! n% Z& z2.1.2 实例结果- {/ F1 u. @( Q% g Y
5 r( w+ i. |9 f& \* O ]
HDMI显示界面如下图2-1-1所示:
6 ?- Y2 w0 V1 m" K, T; G4 e) P" `' g- ]
图2-1-19 M I- }5 ?7 e6 E/ G9 Y
/ ^3 Z* W$ K4 D3 R2.1.3 实例分析
* ~, A0 v) X, J3 K' j- g5 @- `9 E, i3 M7 H+ U7 e1 j- n+ e
FlyCapVideo程序是从工业相机获取采集数据,转到OpenCV环境下处理图像,并获取该图像长、宽、图像数据等参数,将图像转换为OpenCV Mat类型。
0 u5 j4 y' g% L- i3 d8 h' T, g' Z y/ F2 ~3 B# ^3 V# f) b
详细过程如下图2-1-2所示:
7 O& O ]! o5 r! q
. L& g" ?% r( B$ P2 t* w1 W图2-1-2
1 \. j# y/ Z6 ~2 l; y( x4 g& i4 _2 M0 R7 T
2.2 sobel边缘检测实例
& D) b D L. F6 w" g5 |0 X0 D c
- d7 m2 T y% L" A; a6 u实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapSobel.cpp2 ]% T0 Z# `+ F3 h6 s
/ } Z( ?. N7 Z! }- ^, e7 |, m# N( i2.2.1 实例运行步骤
+ o& o; `' Z# T* F; h" ~
j+ B# ]1 ?$ o. U" h* S8 u1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVB USB3.0接口。9 q+ p, g! ]( z
; I" e2 R% Z! K: S' k, g, x4 g
2 JN-miniVB运行如下命令,启动FlyCapSobel实例
. j$ [. \% ^& {8 r& S, _1 N% G* m }; g7 b; d) Y" q
root@am57xx-evm:~#cd /opt/JiangNiu-demo/FlyCapOpenCV// B+ w- w1 G! A# n
root@am57xx-evm:~#./FlyCapSobel
( J5 Z W( h' B! S$ I
3 V2 R0 a Q! F' W3 h2.2.2 实例结果. y3 g* u' e: m) x
& c4 k+ ~: Z. s5 r
HDMI显示界面如下图2-2-1所示:
/ w9 @3 d+ i7 h# A: U/ e3 K
1 L1 W$ s: _* I. w- G5 F$ c0 k T5 x 图2-2-15 ~* o& a; f/ x d% L& w& O
Z1 n/ w) p% `! N; p( E
2.2.3 实例分析
+ G- K, E$ I! b- p# M( a( S8 X+ u3 J" B Z6 X/ P* |
FlyCapSobel程序是对工业相机采集视频进行Sobel算法处理,分别处理图像的X方向和Y方向,然后将两个方向的处理结果加权求和。! i+ l, b' ~7 d/ `
+ {0 a0 z4 X' D9 F2.3 霍夫线检测实例) W; ^5 T" F' L- T# t8 x$ N
- W$ k' B" H- ~+ g5 z$ W) N* i实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapHoughlines.cpp
" l; K, L" V6 G; ~$ Y! u
6 y4 r, Z- u# {; i v6 R* }0 e Z2.3.1 实例运行步骤
# ~( g( E0 @3 _* ^! |% d {6 I) l& @6 j2 P1 q5 [5 d3 ~! r
1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVB USB3.0接口。
- H, @2 H5 v5 e2 g0 }9 g: G4 I- @+ [5 `% r
2 JN-miniVB运行如下命令,启动FlyCapHoughlines实例9 i5 q8 x7 N x* }0 U
; @/ ~' X1 v9 Q$ a- u$ @0 vroot@am57xx-evm:~#cd /opt/JiangNiu-demo/FlyCapOpenCV/
9 x3 c% W9 }6 _* I; ?& wroot@am57xx-evm:~#./FlyCapHoughlines1 E! m' J9 d2 g) Q! f
: I% s/ r N1 W9 y z6 q) O
2.3.2 实例结果5 N" f4 P) w' p$ G$ U
0 E8 W/ h0 n: | N8 r# d* xHDMI显示界面如下图2-3-1所示:
5 N" Z. ?% R0 G* F9 _3 q, {1 S! M/ D- y0 \; X" j1 T- [
图2-3-1- S9 \' Y! |2 j( ^
* V; D8 ^/ J7 B9 [' s9 G# B; S2 B 2.3.3 实例分析
& Z# N; m$ o+ x9 [+ a
, X) P$ ]7 U+ j: t9 fFlyCapHoughlines程序是从工业相机获取数据,转化为OpenCV下Mat类型对象。使用Canny算法检测图像边缘。将边缘图像进行霍夫线检测。
8 s& p4 Q$ ]! Z0 s# b |