一乐电子

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 5762|回复: 2

halcon视觉处理

[复制链接]
发表于 2011-11-26 21:09 | 显示全部楼层 |阅读模式
各位兄弟好,请问大家有没有接触过视觉处理软件呢?我手上正学OPENCV 和HALCON买了几本有关opencv 的书籍) p* Z: l. W* e4 X9 X: k

6 w, p+ o& a- E以上是halcon的一些简单资料
1 l; e' J% l; u2 C9 P: a8 C
7 ~+ m# D5 S) M halcon.pdf (725.43 KB, 下载次数: 327)
 楼主| 发表于 2011-11-26 21:38 | 显示全部楼层
再来一个
/ ~9 d; H5 \5 j& A% j( I1 V: G* v4 @
+ H& o+ e2 P  m$ U% a. j halcon-1.pdf (977.66 KB, 下载次数: 352)
回复

使用道具 举报

 楼主| 发表于 2011-11-26 21:40 | 显示全部楼层
[OpenCV] 利用opencv捕获usb摄像头并写入视频文件
- R" n. P& \6 J4 H8 P1 ~9 t+ E8 W6 O0 f0 \8 h/ [0 S
- C* j# G$ V( T+ p7 ]. W0 ?

) }+ d+ h; T2 z; ?对于搞视频监控的朋友来说,视频文件的写入,几乎是必须的一个步骤。这里,我给出一个视频文件写入的例子。首先是利用opencv进行USB相机的视频捕获,然后,将视频帧写入到视频文件当中。在进行视频文件的写入之前,有两点需要提醒:. q% f) @; p- f/ `! s

- b$ C! V/ G9 f. t% Y8 @9 N$ |(1)opencv只是一个图像处理的工具库,并不是视频处理的工具库!也就是说,它所处理的对象,应该是一张一张的图片,而opencv本身虽然有一些API函数可以进行USB相机的读取,但也仅仅是调用了windows 底层的vfw模块来实现,所以,如果你是windows vista,windows7之类的操作系统,很可能微软已经抛弃了vfw模块。而这个时候,再利用opencv的相机视频捕获函数,就无法获取视频帧了。
2 B: z( u6 M, X8 B( P( R7 b, e, F
* D9 ^* x: r% ?7 V. u(2)视频文件(.mpeg,.mp4,.rmvb,.avi等格式)的读写,需要专门的视频编解码器。很显然,不同格式的视频文件,采用的视频编码技术是不相同的(值得提醒的是,.avi格式的视频文件,尽管后缀是相同的,但内部采用的视频编码算法仍可能不相同,具体可以参考这里http://blog.csdn.net/carson2005/article/details/6314089),所以,进行视频文件读写之前,你需要按照相应的视频编解码器。而暴风,kmplayer之类的视频播放器,其内部就已经包含了常用的视频格式文件的编解码器。所以,你可以直接利用他们进行视频文件的播放。, t* |* ~% g0 e$ I: ^8 I

% [/ _7 ]& s" JOK,了解了上面两点,你就知道,在利用opencv进行视频文件写入之前,必须要下载相应的视频编解码器。常用的有divx,xvid,ffmpeg等,笔者在这里采用xvid(这里有个简单介绍:http://blog.csdn.net/carson2005/article/details/6553867)。9 x8 s4 c: @9 G2 f. \
% D& m" |  ^. C/ v4 d
下面给出参考代码:
7 T" {9 b8 N$ i9 N* ], g' C  A- v- o4 K% r7 j# q% F& E% C
#include "stdafx.h": l/ J7 z% o% u( o5 L) [* `
#include "cv.h"
* v+ W7 F$ |, {/ a#include "highgui.h". H  |; x7 A; p; _
#include "iostream"4 i: U# X3 g( w. L8 u
using namespace std;
' R6 R' ]  @- a- L; M1 D' a( M% X% e+ t2 }3 C
! s9 k: A8 f: \3 n; Y% i

+ x1 T3 }- L* Q; Rint _tmain(int argc, _TCHAR* argv[])
# M( P3 o  j, z0 o* Y7 i{- G3 d; c$ T$ A# p/ W
CvCapture *cap = cvCreateCameraCapture(0);//初始化相机捕获的指针
; q9 Y; @) v$ kif (!cap)
" K8 n/ K; c( [4 q{
- u" m- {8 @* C) o  cout<<"create camera capture error..."<<endl;
+ C0 I# z2 l' [" A7 r) d2 J+ y  system("pause");
7 g" ^& K3 k/ @  exit(-1);
1 u, L' w. h' J. X8 _6 h}
0 r7 T0 `0 U" c
" E9 h# F$ H- a! f3 J) j+ ^" ]/ U$ J, CIplImage *tempImg = cvQueryFrame(cap);" |0 R5 X* u& r" W8 t$ F1 i
double fps = 20;
$ j' Q1 h0 {( D: ]" X0 H: C5 KCvSize size = cvSize(
% b& r; \9 ]! }6 \  (int)cvGetCaptureProperty(cap, CV_CAP_PROP_FRAME_WIDTH),0 ]3 K* {& g5 [) b! H, y+ I
  (int)cvGetCaptureProperty(cap, CV_CAP_PROP_FRAME_HEIGHT)
( [' W/ {/ i8 {# f" L  );
$ X6 _# m  v  a1 t7 Y2 _1 jCvVideoWriter *writer = cvCreateVideoWriter("c:/test.avi", CV_FOURCC('X','V','I','D'), fps, size);1 g7 t/ f) E( {6 ^
4 d) _% a  x  z# B- P9 I6 K2 m
IplImage *img = cvCreateImage(size, 8, 3);
' ]8 z9 B& ~& N: m8 U$ Iwhile((tempImg=cvQueryFrame(cap)) != NULL)
4 V  i5 J+ O6 ~" T5 \! D" f( T{! [/ j' B2 E/ U( f5 [" S
  cvCopy(tempImg, img);' U& u9 m7 |; u8 F
  if (img->origin == IPL_ORIGIN_TL)0 V! `0 F" J+ r) ]! f$ T
  {
6 O% u" q* o  ]; L6 W3 M3 A   cvFlip(img, img);
5 C0 T6 v- \2 r; _/ _6 d( [  }
. ^, U/ Y4 v0 z, h( J, F& m  cvWriteFrame(writer, img);
( p" _: z* z/ I- [% c- J}
) E2 a4 ?" f3 I" F  K/ L% [/ l1 z' O7 w: J2 i: t
cvReleaseImage(&img);
6 e5 X  {8 o5 K5 EcvReleaseCapture(&cap);
) d. ?$ m" Q& h( scvReleaseVideoWriter(&writer);" p$ X5 N, v0 v0 h; x9 \+ C

! u% D) x8 m; e- osystem("pause");; I0 Y" V2 ^( }! z/ w' J, |0 v1 U
return 0;
1 R) M# @' Q4 S) i6 P}
回复

使用道具 举报

本版积分规则

QQ|一淘宝店|手机版|商店|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2026-2-25 15:06 , Processed in 0.033041 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表