一乐电子

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

QQ登录

只需一步,快速开始

微信扫码登录

搜索
查看: 5352|回复: 2

halcon视觉处理

[复制链接]
发表于 2011-11-26 21:09 | 显示全部楼层 |阅读模式
各位兄弟好,请问大家有没有接触过视觉处理软件呢?我手上正学OPENCV 和HALCON买了几本有关opencv 的书籍- f5 x  i8 u' o& {$ D; r
* h. O: a& b1 N* f+ w1 k: w' F7 X
以上是halcon的一些简单资料* c6 d( u: v1 t; ^/ c$ e

" w* t+ N" j( l7 g3 i3 Z2 m halcon.pdf (725.43 KB, 下载次数: 327)
 楼主| 发表于 2011-11-26 21:38 | 显示全部楼层
再来一个
4 ~0 C5 a1 G: y- n$ L' x, Z! n: r: v. U& R. U) F
halcon-1.pdf (977.66 KB, 下载次数: 352)
回复

使用道具 举报

 楼主| 发表于 2011-11-26 21:40 | 显示全部楼层
[OpenCV] 利用opencv捕获usb摄像头并写入视频文件: h" n' [% k; Y1 W7 g3 Z& n2 C, q" t

; X. V) s( `% U) c
: L# V' D" k8 T* u9 x4 V5 X5 u( o
对于搞视频监控的朋友来说,视频文件的写入,几乎是必须的一个步骤。这里,我给出一个视频文件写入的例子。首先是利用opencv进行USB相机的视频捕获,然后,将视频帧写入到视频文件当中。在进行视频文件的写入之前,有两点需要提醒:' |7 {5 D5 A9 U

4 \. ]) k7 p; ]" E. e(1)opencv只是一个图像处理的工具库,并不是视频处理的工具库!也就是说,它所处理的对象,应该是一张一张的图片,而opencv本身虽然有一些API函数可以进行USB相机的读取,但也仅仅是调用了windows 底层的vfw模块来实现,所以,如果你是windows vista,windows7之类的操作系统,很可能微软已经抛弃了vfw模块。而这个时候,再利用opencv的相机视频捕获函数,就无法获取视频帧了。9 i& i5 l% ?6 R4 C

- ?6 P/ x$ k1 y' Q( ~& M8 J(2)视频文件(.mpeg,.mp4,.rmvb,.avi等格式)的读写,需要专门的视频编解码器。很显然,不同格式的视频文件,采用的视频编码技术是不相同的(值得提醒的是,.avi格式的视频文件,尽管后缀是相同的,但内部采用的视频编码算法仍可能不相同,具体可以参考这里http://blog.csdn.net/carson2005/article/details/6314089),所以,进行视频文件读写之前,你需要按照相应的视频编解码器。而暴风,kmplayer之类的视频播放器,其内部就已经包含了常用的视频格式文件的编解码器。所以,你可以直接利用他们进行视频文件的播放。; R6 ~( i- e4 K" F; L3 F' `; }# v
$ E( l, \* L4 _& Y# o8 a
OK,了解了上面两点,你就知道,在利用opencv进行视频文件写入之前,必须要下载相应的视频编解码器。常用的有divx,xvid,ffmpeg等,笔者在这里采用xvid(这里有个简单介绍:http://blog.csdn.net/carson2005/article/details/6553867)。
$ b" y: A- ~3 f+ k- G+ }( Y" o
下面给出参考代码:
9 B+ ]" X8 l% I
* i, z( F2 R2 Z" h7 P6 E#include "stdafx.h"( ?( @4 t$ h+ O5 h# {1 C4 p+ K6 g( M
#include "cv.h"& q2 B6 Y+ o3 a! }" L$ f" \; y
#include "highgui.h"
( b! P5 X! @/ @; X- A0 g#include "iostream"& _1 n: S& V( n! H$ o3 ?- I5 G
using namespace std;8 b, t/ X6 n" C7 {" n
( E' y5 u; x. L/ Q* V. I

3 _2 O; B' W- N
: _0 p7 [' O8 P! O. g, kint _tmain(int argc, _TCHAR* argv[])0 O1 w' _; W$ x+ ^
{/ k7 x6 [1 c4 B- c6 v1 ]% o# ?
CvCapture *cap = cvCreateCameraCapture(0);//初始化相机捕获的指针% L6 m) k7 s* M+ X2 B1 r3 w' i
if (!cap)
9 j- T! P: ]/ j7 M: e7 T{# u3 w- Y' T7 q) P2 _: i& W6 d4 A
  cout<<"create camera capture error..."<<endl;
9 s% f1 L( e& A" h* b( t  system("pause");+ }! p! P3 ?( V+ C; C% }
  exit(-1);( P  {; N$ p) _8 c
}
2 a; a2 V% l% |4 [/ W! G0 x  @! g# m, h, z# k9 m( J+ I
IplImage *tempImg = cvQueryFrame(cap);& t* H3 e6 C& F
double fps = 20;
" H. d/ I+ x& G7 GCvSize size = cvSize(" _) V4 N* `+ R7 ^
  (int)cvGetCaptureProperty(cap, CV_CAP_PROP_FRAME_WIDTH),
4 l9 n( J) D8 V0 G0 {5 A  (int)cvGetCaptureProperty(cap, CV_CAP_PROP_FRAME_HEIGHT)/ f( }) g3 F+ A2 }6 V9 U5 v* P9 f' z, c
  );
9 \, W0 Q: v9 Q& _; {2 HCvVideoWriter *writer = cvCreateVideoWriter("c:/test.avi", CV_FOURCC('X','V','I','D'), fps, size);
  i4 a/ m6 y5 r6 g9 v- v, P/ k- P5 ~2 H9 ?1 p
IplImage *img = cvCreateImage(size, 8, 3);& d7 g" u/ T* ~7 i
while((tempImg=cvQueryFrame(cap)) != NULL)
% i9 K- W+ o. \# C/ N{
2 T# r8 }% I: G+ [  cvCopy(tempImg, img);! ]8 c& ]9 O7 e2 P
  if (img->origin == IPL_ORIGIN_TL)' d, v1 u: F0 {) f  A" O, ^
  {
( _9 n7 @/ Q& v+ Y   cvFlip(img, img);
3 c0 C, d* `2 U; ~/ z% J  }
, ^- F5 X+ _! N6 J0 [- R1 n  cvWriteFrame(writer, img);
; F% n0 M  F: H* x}
* L- Z" ^1 L3 E9 U/ A5 M/ f/ N
( G2 a/ W& y. KcvReleaseImage(&img);
9 K# Z* B/ y+ _. l' W: X- hcvReleaseCapture(&cap);
# D8 u: I1 _+ p2 L2 T& \cvReleaseVideoWriter(&writer);
+ @. b: O1 D1 c
2 H8 E! z" c5 |2 C. ?system("pause");/ c: X4 [& n" J* L) m7 y
return 0;/ n8 ^: n" a9 I6 v0 B+ D
}
回复

使用道具 举报

本版积分规则

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

GMT+8, 2025-8-20 12:03 , Processed in 0.040020 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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