EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
给大家分享一下基于匠牛JN-mini5728套件的USB3.0工业相机采集案例。 一 工业相机概述- e) ?2 A m4 \. ^4 K, p
) l5 m! m9 k$ D N% V- w
工业相机是机器视觉系统中的一个关键组件,其最本质的功能就是将光信号转变成为有序的电信号。
6 \6 Q# W9 ^ x9 G$ ~8 q+ j9 J$ ]$ ^4 h0 g& q- Z$ i
选择合适的相机也是机器视觉系统设计中的重要环节,相机不仅决定图像分辨率、图像质量,同时也与整个系统的运行模式直接相关。
6 `( {/ H+ r! C( c6 h7 W, ?0 G7 k* q/ F9 c; _, L% N
工业相机应具有高精度、高清晰度、色彩还原度、低噪声等特点,而且通过计算机可以编程控制曝光时间、亮度、增益等参数,另外图像窗口无级缩放,带有外触发输入,带有闪光灯控制输出等功能。1 t; U+ @) w @5 |# |3 `
) e8 g* m* F( k7 Y
工业相机由两大基本部件组成:图像感光芯片和数字化的数据接口。图像感光芯片由数十万至数百万个像素组成。像素把光线的强度转换为电压输出。这些像素的电压被以灰度值的形式输出,所有像素放在一起就形成了图像,发送给计算机。数据接口主要有USB 2.0、USB3.0、1394和千兆以太网。 一般工业相机都提供640x480像素的分辨率和30fps的帧速率。2 k% V/ o0 S$ ~6 |& ?4 b5 p$ R
1 `+ p$ {% U |# z5 _$ n2 r- L
二 实例详解3 u2 n9 a& d' \2 Q, E' @, V7 E
' e$ w! r* T3 u6 w% v& j编译工业相机实例程序,在Ubuntu PC 运行如下命令:
& E* }+ I5 {6 n# H
4 P5 `6 K' c/ X# s% ]) o9 ccd SDK/JiangNiu-demo/FlyCapOpenCV
& x0 X/ y, R0 t3 S% J7 kmake, d: j3 W- ^6 U
# m# z' l2 P5 `1 h `
2.1 视频采集实例! v( e, Y% y3 @( k3 @ K' o9 S
# u; N! F- g! m. q. Y; d3 T
实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapVideo.cpp
* C4 h% {5 ~8 Y* v
7 E& w% Z% x+ a* F1 I
+ M) p# I* G5 \# S' r2.1.1 实例运行步骤3 n$ s+ w5 _" ]8 N. T$ B9 a* O
& J: _4 }9 F8 V: Y' [1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVB USB3.0接口。6 _/ V. B* {& k# f h
* [; Q+ p( l4 E
2 JN-miniVB运行如下命令,启动FlyCapVideo实例6 ?. l" o+ P0 I( U# i& {1 A
8 m W+ S$ ?7 P$ B( k- n
root@am57xx-evm:~#cd /opt/JiangNiu-demo/FlyCapOpenCV/% j) `; N1 N1 I9 a
root@am57xx-evm:~#./FlyCapVideo
. m0 h) `+ y0 Z* U. f
9 e* R, \1 u x+ o) L! R2.1.2 实例结果1 F4 P& i. K6 S m. F
) Q6 `# M! r: v" M8 l4 T6 X+ V. ?
HDMI显示界面如下图2-1-1所示:
* K# U: E! z6 n. q$ o) ]: A5 ?: S/ f# g9 i/ Z- ]6 {) V) }2 g0 ~
图2-1-1 L: s0 A! k) q% C/ Y# {
+ [. j. I8 r& r; t) G- I5 v/ e
2.1.3 实例分析1 F1 S7 w: R/ U0 O8 {' t( G
1 N5 M) h8 E( ]+ W
FlyCapVideo程序是从工业相机获取采集数据,转到OpenCV环境下处理图像,并获取该图像长、宽、图像数据等参数,将图像转换为OpenCV Mat类型。
! ?$ ?0 Y, w: C& g' z5 P; K% w# h
. O7 e2 q. X6 U9 t7 k5 U! x& R' k详细过程如下图2-1-2所示:' Q# C1 M4 V# T) F
3 G" J! h% \' o6 f图2-1-2& |; {$ Q7 }. @7 n3 Z' p
" [7 X1 z) p! m/ {; g2.2 sobel边缘检测实例
2 v5 u4 W6 w3 {) v* Z
8 |6 B) z2 G- e; L1 e' p: V实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapSobel.cpp3 N1 U: @& ]! u! L" w
: q/ }. b$ o& c2 u+ H2.2.1 实例运行步骤
5 Y0 j5 R7 {8 E
% ]5 j8 r8 T0 e8 x$ T+ T4 Z& k& a0 T. ~1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVB USB3.0接口。. Z+ X+ n$ V5 U& ?0 u- G4 W A8 q
+ ?& q$ D5 x/ h- F: `. k
2 JN-miniVB运行如下命令,启动FlyCapSobel实例! u, i/ T' T( j- i0 d
1 T) Q1 N3 E; g* r- i# z6 S
root@am57xx-evm:~#cd /opt/JiangNiu-demo/FlyCapOpenCV/0 m9 q' A+ E& D1 u+ \" j$ W# ]
root@am57xx-evm:~#./FlyCapSobel9 n) h; K! s0 m }
+ z+ n/ ^: F) \7 l9 q2.2.2 实例结果
9 d/ J' _- R$ c% f! R. ~5 n+ w1 @1 b6 t3 t. g
HDMI显示界面如下图2-2-1所示:* \7 D/ {1 ?' ~ @0 G
L R" d" q8 N/ }- d 图2-2-1
! `7 J% |* Z% y2 y' |
' o( N( o4 N1 U8 Q+ p2 A2.2.3 实例分析; a4 z$ q6 c0 _" Z5 s9 \
) G" Z/ z1 R( F7 p
FlyCapSobel程序是对工业相机采集视频进行Sobel算法处理,分别处理图像的X方向和Y方向,然后将两个方向的处理结果加权求和。 g9 y- t8 c3 f# p
' j( _" N M0 {% I2 E2.3 霍夫线检测实例0 U, h9 |) ? O& W3 J: D
% d, `. j5 }- l
实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapHoughlines.cpp
r4 H: F! d9 Q- H7 w! Y1 \, b) e; E/ ?: H
2.3.1 实例运行步骤" ]6 h3 z' D' c' I
1 a3 _* A7 R/ ^8 t2 X' s A
1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVB USB3.0接口。. j1 T# }: N; o; r# K5 z
, R# E8 N/ S& ? e; M# q2 JN-miniVB运行如下命令,启动FlyCapHoughlines实例$ ~8 E% B: E6 T" s( G) w
+ c7 u s9 L9 y1 O! vroot@am57xx-evm:~#cd /opt/JiangNiu-demo/FlyCapOpenCV/% n) W0 N& t+ ]3 @/ _4 v
root@am57xx-evm:~#./FlyCapHoughlines* d5 D: {5 a2 \, _2 x
1 ~/ e* b) ~$ G
2.3.2 实例结果
- c9 G) F5 F( I5 e
7 b- ~2 F2 P! A" Y% \HDMI显示界面如下图2-3-1所示:" b. [; f& }. b# h8 A& ]
S1 }3 L2 c8 B+ h+ ~
图2-3-17 i# I1 d5 Q. U6 t$ |
( V. W6 U2 C# v# Z$ |2 l
2.3.3 实例分析
; o; A% ?2 I5 ~5 Q% P, o) `: l% {9 W2 _& M6 f4 p, A
FlyCapHoughlines程序是从工业相机获取数据,转化为OpenCV下Mat类型对象。使用Canny算法检测图像边缘。将边缘图像进行霍夫线检测。
) ]- }4 `& F; W4 }2 M3 E$ G |