EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
给大家分享一下基于匠牛JN-mini5728套件的USB3.0工业相机采集案例。 一 工业相机概述; Y+ G" D4 I2 R# H0 ]8 |0 `9 Z9 R3 m
1 i+ p& R5 ^: H6 ]* ?工业相机是机器视觉系统中的一个关键组件,其最本质的功能就是将光信号转变成为有序的电信号。 [6 \4 ~" b5 U( h5 F1 a
. @5 x" ?! F* }& i* W( |4 h选择合适的相机也是机器视觉系统设计中的重要环节,相机不仅决定图像分辨率、图像质量,同时也与整个系统的运行模式直接相关。1 r% O' W7 r" c! j
: x/ L S8 s- t5 C
工业相机应具有高精度、高清晰度、色彩还原度、低噪声等特点,而且通过计算机可以编程控制曝光时间、亮度、增益等参数,另外图像窗口无级缩放,带有外触发输入,带有闪光灯控制输出等功能。2 L& ? v. k% O) G: b& a
: e6 W+ t! p I" ~工业相机由两大基本部件组成:图像感光芯片和数字化的数据接口。图像感光芯片由数十万至数百万个像素组成。像素把光线的强度转换为电压输出。这些像素的电压被以灰度值的形式输出,所有像素放在一起就形成了图像,发送给计算机。数据接口主要有USB 2.0、USB3.0、1394和千兆以太网。 一般工业相机都提供640x480像素的分辨率和30fps的帧速率。
5 _+ g' v1 Z" X
$ I0 } e3 l, G, o! w二 实例详解* Z' x E/ @* C. b
- J/ e1 `: c4 U" {6 d, w( j- a编译工业相机实例程序,在Ubuntu PC 运行如下命令:7 [7 G" n; t x J
6 l; U2 Q7 u) M9 ?
cd SDK/JiangNiu-demo/FlyCapOpenCV
2 _0 z6 ]4 N2 n0 Cmake
5 U6 _% H% l' P# D
' R x/ ?; H; t0 y2.1 视频采集实例, s1 z) I( j+ Z+ U
* y ?2 J( {. q8 c
实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapVideo.cpp
% G( X# n* D; E; e, r
! p0 p; y1 ~3 M/ k, R
0 d$ @/ x1 Z; c! y+ l: J2.1.1 实例运行步骤& K# @- X" k9 d$ ?# k" Z0 n, n. @
$ a# D$ C' T: `$ S
1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVB USB3.0接口。" M/ L* \0 D5 k* D# ^, |
# p6 U" A D# T3 j' h$ s/ o- H
2 JN-miniVB运行如下命令,启动FlyCapVideo实例* ?+ D8 ]2 Z: n& s5 L4 U
' o0 x1 M7 w- x; ]& k1 ^. h- C
root@am57xx-evm:~#cd /opt/JiangNiu-demo/FlyCapOpenCV/' q4 k6 e" ^, D
root@am57xx-evm:~#./FlyCapVideo
/ g2 a% ?5 \1 k. ~7 t- F( ~( C$ X5 p! c1 |
2.1.2 实例结果
% N" n2 B! q6 |- ?; v- P7 `- e% O. l7 C
HDMI显示界面如下图2-1-1所示:: A* ^2 G. \4 x. u+ f
![]()
4 A6 p! r1 {& s2 v) {! N 图2-1-11 N% r' T! z- F. g$ q& @* E
0 R) e: F" e4 W3 X' [+ }7 H2.1.3 实例分析' |- u6 Q/ d8 c4 y8 Z% D
1 Y4 v* s1 z, Z6 j9 }* ]' q
FlyCapVideo程序是从工业相机获取采集数据,转到OpenCV环境下处理图像,并获取该图像长、宽、图像数据等参数,将图像转换为OpenCV Mat类型。- e' _' R: `9 W
) D' J5 [1 T$ o( l+ {- a
详细过程如下图2-1-2所示: D+ G2 G# U* a! w5 h
6 {$ f" Q3 z0 B8 o$ ]
图2-1-2+ b3 `# t( X$ v+ e$ ]6 C0 k2 f
5 g. b& ~9 [- S
2.2 sobel边缘检测实例
) [9 S L# q t6 S1 |1 L8 C/ ^$ [$ l5 k
实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapSobel.cpp
8 t# @, J8 p& B" C: `8 f. m& H' ]; L. t1 a; t( W* q
2.2.1 实例运行步骤0 R# T: {$ u Z
7 L; |1 W5 k! \8 [" o* s* z1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVB USB3.0接口。
' n6 a6 U% q+ F2 D( N" w: u4 C' m5 L v
2 JN-miniVB运行如下命令,启动FlyCapSobel实例$ F' O- r: T1 S2 n% X( S* R
3 z" z. S* N/ S p( Oroot@am57xx-evm:~#cd /opt/JiangNiu-demo/FlyCapOpenCV/& y& t0 }1 T- q0 ]; o4 v
root@am57xx-evm:~#./FlyCapSobel
! K0 w4 F9 D& @0 r
2 t0 j% P# e, V# `( U1 Z2.2.2 实例结果# ^' w1 F0 O* E4 S+ k4 x5 a) g
) @* Y6 f0 x. Q' } {6 K
HDMI显示界面如下图2-2-1所示:
, ~: M3 R! p/ x& e0 x( G![]()
/ m/ t, n' j" ^. @ 图2-2-1
# q6 \" Y, {9 p! A h7 B
% n' G3 G$ c6 X8 s" G, f2.2.3 实例分析& X( n& h8 f4 A+ L, y
8 i; Y; ^* t9 Z+ t. c0 Y
FlyCapSobel程序是对工业相机采集视频进行Sobel算法处理,分别处理图像的X方向和Y方向,然后将两个方向的处理结果加权求和。
+ M- e3 K V2 [$ L- x N/ o& T
" a7 g g+ m7 N" R2.3 霍夫线检测实例
/ L7 v$ P. k. G; I% K4 c' B7 o. x0 D2 @: w; y F4 E- g1 A) U
实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapHoughlines.cpp
" Y" I) n) t, q- s. Q1 u1 T+ r- f R
2.3.1 实例运行步骤
3 j3 g C' V( j6 m3 J6 h% P; Z, r" v+ j, d- Y
1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVB USB3.0接口。
8 p4 i1 ~! i C; R: k1 _& |
! ^- I# n8 G! L4 Y6 ?! F; f0 |2 JN-miniVB运行如下命令,启动FlyCapHoughlines实例& _; Q; l, d) g% Q( p
9 J$ W# L+ |/ Q' ?7 Z$ aroot@am57xx-evm:~#cd /opt/JiangNiu-demo/FlyCapOpenCV/, Q6 _ L$ x- } Y# [
root@am57xx-evm:~#./FlyCapHoughlines
% X4 @* I7 ~4 o' k, T8 c. t0 j+ O/ C- L5 N
2.3.2 实例结果# B2 C8 {2 o4 ?* [0 I9 e
3 E5 ?* R2 Y9 U) y9 a5 JHDMI显示界面如下图2-3-1所示:( ]! {/ f+ u3 z. r0 j
![]()
9 S% G1 f$ @7 U5 ^$ R图2-3-1. K6 Q; T/ f' n: f5 ~) f
8 }( u# J5 ~) k 2.3.3 实例分析
- ?- V5 @' Z" C0 k+ p0 z3 [2 G. B, g3 \. K
FlyCapHoughlines程序是从工业相机获取数据,转化为OpenCV下Mat类型对象。使用Canny算法检测图像边缘。将边缘图像进行霍夫线检测。 3 f) T7 e9 k9 n- ]
|