EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
给大家分享一下基于匠牛JN-mini5728套件的USB3.0工业相机采集案例。 一 工业相机概述# [! n Z/ U% d3 H
! y" I+ q4 n" q8 u1 F+ w
工业相机是机器视觉系统中的一个关键组件,其最本质的功能就是将光信号转变成为有序的电信号。
3 v7 v# Q" A) h1 G) Z# L& r3 p+ Z7 G
选择合适的相机也是机器视觉系统设计中的重要环节,相机不仅决定图像分辨率、图像质量,同时也与整个系统的运行模式直接相关。
; m: t$ V' C( L9 i: ?' S+ Q$ h W6 M" T& q
工业相机应具有高精度、高清晰度、色彩还原度、低噪声等特点,而且通过计算机可以编程控制曝光时间、亮度、增益等参数,另外图像窗口无级缩放,带有外触发输入,带有闪光灯控制输出等功能。
& S) s* K, `# t; a0 U) t8 i- t) W3 i1 u6 G# ~
工业相机由两大基本部件组成:图像感光芯片和数字化的数据接口。图像感光芯片由数十万至数百万个像素组成。像素把光线的强度转换为电压输出。这些像素的电压被以灰度值的形式输出,所有像素放在一起就形成了图像,发送给计算机。数据接口主要有USB 2.0、USB3.0、1394和千兆以太网。 一般工业相机都提供640x480像素的分辨率和30fps的帧速率。
R2 g1 X X! S- S
; p' d4 z5 |, j+ j6 ^: t5 R二 实例详解& o$ N. x" X) J; h7 F
4 A( g6 {- O6 c; k2 E编译工业相机实例程序,在Ubuntu PC 运行如下命令:
3 v. r' z; D9 A, |) w, c& A w1 f- w% w( I
cd SDK/JiangNiu-demo/FlyCapOpenCV
% D F9 Q$ s! h- V, V$ }3 E! H7 hmake
, x( ]; K; ?2 \# a' L0 ~ p6 n* x
2.1 视频采集实例
3 M u1 n p9 c- D7 u3 a' _/ H7 M, F) N; P
实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapVideo.cpp# F6 h# ?1 B. J
% r) G/ A0 i# }# s. j$ O
7 q; q% M6 b0 m& X2 c. l2.1.1 实例运行步骤
0 {, Q7 P0 Q! Q, z; v$ Q
p: g5 |1 V* D" U' v$ D& p1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVB USB3.0接口。
6 L7 P* _0 F y# ?! i
; H8 {$ }# M& @! M6 }- G& x2 JN-miniVB运行如下命令,启动FlyCapVideo实例
* [1 B, \/ x' K& v! l
8 o* X, \1 e( L" M3 I2 groot@am57xx-evm:~#cd /opt/JiangNiu-demo/FlyCapOpenCV/
4 J: n8 U' N) m. ~. T' Kroot@am57xx-evm:~#./FlyCapVideo2 [. c) p7 j( [6 b
5 Q, F% F! Z3 [
2.1.2 实例结果7 |4 D0 ~; n8 y( {) F; H
) |: Q. B; C+ R. @7 QHDMI显示界面如下图2-1-1所示:
* g' R! G8 Y2 {# t! {$ T% q![]()
: D- ]: H) \0 |# {# { 图2-1-1
) H* A( L+ } E; P$ G
: k1 f4 k# a& J$ h3 B% t4 Z2.1.3 实例分析3 w4 S3 [& N( A
" ]2 \: S$ u U/ ]9 o8 MFlyCapVideo程序是从工业相机获取采集数据,转到OpenCV环境下处理图像,并获取该图像长、宽、图像数据等参数,将图像转换为OpenCV Mat类型。
; W% J+ u6 m V2 ]! Z/ I
# U( x2 M# X% d( E7 X详细过程如下图2-1-2所示:% Q+ a' T r ]% h4 C# h% s
![]()
6 H5 X' t" @5 |$ J图2-1-2
/ l% Q1 {# l( L+ J
0 |# ^" U- u: f, w2.2 sobel边缘检测实例
' K" l+ Q, L# h6 J8 j6 h- Q) T$ i
实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapSobel.cpp& ~' f5 \8 k$ o8 A7 \( y
3 D/ i" s6 q& P* w2.2.1 实例运行步骤
, d; o& ]: U! w( [1 i& O9 o% T0 F: L1 S; F$ Z* `
1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVB USB3.0接口。
- x" a- Y m5 C9 H: ^) Z$ W9 e
) C+ T9 Z% T1 x" \5 C7 @+ d3 j0 `2 JN-miniVB运行如下命令,启动FlyCapSobel实例4 @6 R& x2 M [+ H0 H8 {
4 n2 x6 P' c6 K* O0 A
root@am57xx-evm:~#cd /opt/JiangNiu-demo/FlyCapOpenCV/, f; l: r# p. Y6 e
root@am57xx-evm:~#./FlyCapSobel
& @" ]7 ~+ V- H3 a
% A3 h. O( q% s& o2.2.2 实例结果( h' ?& i: \7 |, y' ^
6 N# x1 f; v' I3 Z$ A/ b7 u: g, ~
HDMI显示界面如下图2-2-1所示:
' V* L" v( ~) k; K $ }" @$ Q- C* {( J' R
图2-2-1
J% ^4 f# C& n8 a' ^/ a( R" }; V! ]% \2 ?
2.2.3 实例分析$ T) X# [' H) X* W
/ U7 s0 d6 X$ S4 L
FlyCapSobel程序是对工业相机采集视频进行Sobel算法处理,分别处理图像的X方向和Y方向,然后将两个方向的处理结果加权求和。
. O) f! K0 O- ?" t) ?2 D% q
2 D+ ?6 U' \- V% e$ P8 `, }2.3 霍夫线检测实例
( n( p5 N( d3 c6 V: | f3 B5 y4 [/ u3 i# [
- \3 m) f- V6 X) c% R- A) B实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapHoughlines.cpp( e2 T" d( n) f
8 x0 M/ {+ [5 G9 a3 j! k n6 X; M
2.3.1 实例运行步骤4 a2 E. R4 G0 Z" [4 b3 I
5 `/ ?. [# B9 H# v# F% G" [
1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVB USB3.0接口。
& ~4 A5 p2 D1 F" [) E1 X; V8 {# V$ ?+ p* P5 d, U; s' U, i4 _: R
2 JN-miniVB运行如下命令,启动FlyCapHoughlines实例
9 o, a7 ?, f& c8 H
2 L" H1 h3 j- ~root@am57xx-evm:~#cd /opt/JiangNiu-demo/FlyCapOpenCV/$ g1 F" U* U ^9 G
root@am57xx-evm:~#./FlyCapHoughlines6 _' I, k9 I5 g u3 W+ d# \# _
3 P) G1 e+ I7 Q7 v4 n& E# f2.3.2 实例结果1 N& ?& k& \' w4 w/ M/ [5 s
) C0 v# \% @4 J f0 Y8 \HDMI显示界面如下图2-3-1所示:
" p( F# R7 ?+ ~8 l' R![]()
( l- n% E! T8 W; B4 c: g3 K图2-3-1: U/ k2 `! \( G# L
, Y2 ?. J# m7 e 2.3.3 实例分析
* B# o1 S B" z k% {1 L2 R! c, _" L2 k
FlyCapHoughlines程序是从工业相机获取数据,转化为OpenCV下Mat类型对象。使用Canny算法检测图像边缘。将边缘图像进行霍夫线检测。
0 x/ s' J. S; Q% Q9 i |