EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
给大家分享一下基于匠牛JN-mini5728套件的USB3.0工业相机采集案例。 一 工业相机概述6 Y# N+ S" s. A" k( m+ e
1 L: N, @+ W. K7 P
工业相机是机器视觉系统中的一个关键组件,其最本质的功能就是将光信号转变成为有序的电信号。3 D' E2 K/ H5 B; L
+ {; z- a3 D, n
选择合适的相机也是机器视觉系统设计中的重要环节,相机不仅决定图像分辨率、图像质量,同时也与整个系统的运行模式直接相关。6 j9 I! \3 x0 @5 d u
0 W6 l" A E" E# S9 T5 a1 z) I工业相机应具有高精度、高清晰度、色彩还原度、低噪声等特点,而且通过计算机可以编程控制曝光时间、亮度、增益等参数,另外图像窗口无级缩放,带有外触发输入,带有闪光灯控制输出等功能。7 e2 S& `1 d( l8 y
& W- X! d! W/ [# n8 H- a
工业相机由两大基本部件组成:图像感光芯片和数字化的数据接口。图像感光芯片由数十万至数百万个像素组成。像素把光线的强度转换为电压输出。这些像素的电压被以灰度值的形式输出,所有像素放在一起就形成了图像,发送给计算机。数据接口主要有USB 2.0、USB3.0、1394和千兆以太网。 一般工业相机都提供640x480像素的分辨率和30fps的帧速率。
; d* K' E/ y( G0 x6 c K7 ~* N5 b) w' W) o
二 实例详解
" J, J7 ^1 U p# q$ a3 I9 G6 ^' M' N- I5 G' U6 U0 J8 j6 S$ U
编译工业相机实例程序,在Ubuntu PC 运行如下命令:
( Q1 |/ e, k( j' P; l. c7 `1 s3 E% ]. _
cd SDK/JiangNiu-demo/FlyCapOpenCV
, J' `/ t( o. }: lmake1 Z: D" Y/ e2 ^! M. {( b% W
0 e! Q- j- m) O$ Y7 b2.1 视频采集实例) {8 j6 ^; v* j+ I% E
/ T3 L3 K+ S6 Q Z) I; {- l% o. t实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapVideo.cpp
) y1 F9 x! P0 [1 K
3 C- K! B, q0 n+ x, p5 h
$ I7 o2 h* w5 \2.1.1 实例运行步骤- r x" A! i T1 g
" C) Z0 K$ J7 x8 R _ C
1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVB USB3.0接口。0 \& B" k: I# \: z- |
$ r5 \1 T, k. U9 L- r2 | d4 ^, f& N
2 JN-miniVB运行如下命令,启动FlyCapVideo实例$ L) F2 S/ k K6 d2 u2 s
* r% I! \- d( G4 yroot@am57xx-evm:~#cd /opt/JiangNiu-demo/FlyCapOpenCV/0 M6 J2 `; v) U ?
root@am57xx-evm:~#./FlyCapVideo
- J) Y7 w3 f8 z1 L% z* K; |, ~9 a5 I" l% M, l
2.1.2 实例结果: s: J+ {4 T; F6 s
6 ~' L" k1 S! e2 U: z, `
HDMI显示界面如下图2-1-1所示:3 X7 y1 ?+ ^* x$ T" a
![]()
! k9 n/ K, S. D. U) h0 S 图2-1-1
; B) A$ [. Q4 M% H: h" |0 |4 [, J$ h* i9 @, _. d$ a2 ?
2.1.3 实例分析. {( U9 X* I4 H7 L6 G6 k, B. o+ y
$ J: T' y: T4 h, F7 C0 ?! Y1 }3 _FlyCapVideo程序是从工业相机获取采集数据,转到OpenCV环境下处理图像,并获取该图像长、宽、图像数据等参数,将图像转换为OpenCV Mat类型。
$ |* P' m8 l- d' O* Q5 h! J7 I" m, b7 F: c) M! Z/ u
详细过程如下图2-1-2所示:' X4 ?# R5 v2 M2 c/ P
![]()
, Y) X5 g* i" h& {# u' K2 P+ D图2-1-2
) ^- S& s; r$ |7 \
* x& `* F I0 a* P2.2 sobel边缘检测实例
* }5 U% t$ `( |* C/ N% a. k7 t& ]2 A" q x
" u" r: |/ ]- c实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapSobel.cpp
( S+ G! g2 F% l# x& m: s7 q
6 R& P: q# K& F7 ^' z6 n |& \8 g }2.2.1 实例运行步骤5 f7 p. J3 n4 I+ n
3 w+ H* F1 f9 w+ M- S! a
1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVB USB3.0接口。
2 o7 v' {8 J; F8 [
& S/ S( z }% r, n( Z k2 JN-miniVB运行如下命令,启动FlyCapSobel实例
/ ?/ X, L1 i! m/ W f, i! L
. o! M% x) q* j7 y t3 g% Groot@am57xx-evm:~#cd /opt/JiangNiu-demo/FlyCapOpenCV/
* Z0 @) ^2 l$ v4 v W1 Yroot@am57xx-evm:~#./FlyCapSobel
- V7 L: z$ h( h! Z' M1 C# N% e! c6 z" I+ }- E" }4 U+ ~; w* @+ m$ I {
2.2.2 实例结果4 u+ }3 @( m2 }2 _
" w& g4 z0 W J5 C. h: ^. NHDMI显示界面如下图2-2-1所示:
' V4 C0 b" K8 \1 d( g + Y5 y# O: i3 o4 K7 c& U
图2-2-1' Q5 I, E% ~: Y4 a
+ U2 m- Q) o* Q( R- q0 S. C- a4 j: k2.2.3 实例分析
6 U+ F& Y% j6 r2 _3 P) H& \$ A0 l+ V8 I! |' j! m
FlyCapSobel程序是对工业相机采集视频进行Sobel算法处理,分别处理图像的X方向和Y方向,然后将两个方向的处理结果加权求和。8 S* m8 B* y- \' q
5 K) _& B+ y7 |$ t# G$ n# [2.3 霍夫线检测实例/ x7 M& b4 N K) m1 D, R/ q% `
; l4 d% N# D5 h3 }: c9 }$ }实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapHoughlines.cpp1 C/ U+ D' S4 d' W
5 n! N" M$ k; M) Q# L7 W4 N
2.3.1 实例运行步骤
; F! X L" M3 p, H6 i
9 Y8 i/ M" H& Z1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVB USB3.0接口。
& L1 W0 u, ]! J, b7 i& L( r( w7 |; Q- F$ N" n+ f
2 JN-miniVB运行如下命令,启动FlyCapHoughlines实例9 c& `8 }) q1 M& ~5 O' i y0 _0 `
, P0 @$ C0 T) N
root@am57xx-evm:~#cd /opt/JiangNiu-demo/FlyCapOpenCV/
2 H, S- X- M& G# v- B3 b) troot@am57xx-evm:~#./FlyCapHoughlines
2 p4 j, M6 O4 b9 C' ?5 F8 j+ D, d6 x4 D; K! l9 I! Z7 l* a% {
2.3.2 实例结果
b& h! ^' [2 _; f M
" `' E1 f$ X, s! m$ K7 {HDMI显示界面如下图2-3-1所示:
+ |/ Q1 G x7 P 9 ?' m$ e! o( B8 \* u9 ^
图2-3-1
$ S/ B& b1 e& q. L+ h( _- a
4 p& i2 T# _8 s* j3 ` 2.3.3 实例分析
# v( `8 B) T) j' a6 c
: {$ u( G+ F8 M* j& }& _* o. y, a) fFlyCapHoughlines程序是从工业相机获取数据,转化为OpenCV下Mat类型对象。使用Canny算法检测图像边缘。将边缘图像进行霍夫线检测。 $ z6 f8 ?# E1 H, N" D
|