一乐电子

一乐电子百科

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

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
查看: 5203|回复: 2
收起左侧

halcon视觉处理

[复制链接]
发表于 2011-11-26 21:09 | 显示全部楼层 |阅读模式
各位兄弟好,请问大家有没有接触过视觉处理软件呢?我手上正学OPENCV 和HALCON买了几本有关opencv 的书籍( ^5 I- u1 t4 Z+ [
$ P; f4 ^! a- m9 h$ J: a5 B
以上是halcon的一些简单资料
* Y( x; W" N. R( I, y( m* p1 L6 s! p. M; s
halcon.pdf (725.43 KB, 下载次数: 327)
 楼主| 发表于 2011-11-26 21:38 | 显示全部楼层
再来一个: @; ]* n% Y( D% i# w4 S8 ]5 ]; Z- S

7 L: c+ b* [5 W- }/ a* ` halcon-1.pdf (977.66 KB, 下载次数: 352)
 楼主| 发表于 2011-11-26 21:40 | 显示全部楼层
[OpenCV] 利用opencv捕获usb摄像头并写入视频文件
% @$ f7 ?- j$ z% }' v2 V
3 K0 n+ j8 j: J% h
0 P7 S! T6 t2 b/ D* I8 D# k# Q
# h+ v5 q+ c: T1 l' D对于搞视频监控的朋友来说,视频文件的写入,几乎是必须的一个步骤。这里,我给出一个视频文件写入的例子。首先是利用opencv进行USB相机的视频捕获,然后,将视频帧写入到视频文件当中。在进行视频文件的写入之前,有两点需要提醒:: a4 ?  h1 a) h" s4 Q+ U& t" f

0 [* p' }( F3 P0 K# [7 s. S(1)opencv只是一个图像处理的工具库,并不是视频处理的工具库!也就是说,它所处理的对象,应该是一张一张的图片,而opencv本身虽然有一些API函数可以进行USB相机的读取,但也仅仅是调用了windows 底层的vfw模块来实现,所以,如果你是windows vista,windows7之类的操作系统,很可能微软已经抛弃了vfw模块。而这个时候,再利用opencv的相机视频捕获函数,就无法获取视频帧了。
8 u7 ?0 |5 U4 h/ w4 i
+ ~  b& S/ U# C, G9 s) b  K(2)视频文件(.mpeg,.mp4,.rmvb,.avi等格式)的读写,需要专门的视频编解码器。很显然,不同格式的视频文件,采用的视频编码技术是不相同的(值得提醒的是,.avi格式的视频文件,尽管后缀是相同的,但内部采用的视频编码算法仍可能不相同,具体可以参考这里http://blog.csdn.net/carson2005/article/details/6314089),所以,进行视频文件读写之前,你需要按照相应的视频编解码器。而暴风,kmplayer之类的视频播放器,其内部就已经包含了常用的视频格式文件的编解码器。所以,你可以直接利用他们进行视频文件的播放。
" F, {' H" P) p0 L, o
- Y$ W4 M1 k3 @: p  SOK,了解了上面两点,你就知道,在利用opencv进行视频文件写入之前,必须要下载相应的视频编解码器。常用的有divx,xvid,ffmpeg等,笔者在这里采用xvid(这里有个简单介绍:http://blog.csdn.net/carson2005/article/details/6553867)。
1 t: f! M/ i/ C
% Q" B0 I" e) o  f3 {  o& D& j下面给出参考代码:& o) c4 @; @- I* J# |/ }

+ ^* `3 D/ p7 w0 F  V#include "stdafx.h"1 ^: C7 O3 ^& v; q. Z4 @% B
#include "cv.h"5 E4 `7 h% o  `- ?% A
#include "highgui.h"
2 e2 ^2 o8 `/ b8 z  f#include "iostream", m- k. w7 @! r8 C: h; t
using namespace std;( p+ {5 @3 S7 {6 [1 t0 U/ O
1 X7 v* b4 x4 m

" s7 c, T6 C" d( O1 s" u. O, g& w' T& ^5 L- `5 Q* p
int _tmain(int argc, _TCHAR* argv[])
7 a( R' `- O; I+ F! L{+ b7 D7 Y* n) Y% T* ~
CvCapture *cap = cvCreateCameraCapture(0);//初始化相机捕获的指针7 l8 `- P6 \, `4 _' S$ _5 k! l
if (!cap)3 o- W* T. A8 x1 y5 _4 q! i2 D
{- J1 `9 i0 L, n2 l/ E: a
  cout<<"create camera capture error..."<<endl;  S# g0 S$ `3 s% l
  system("pause");
5 f% d" q8 Z4 r* |& D) r4 U' T% h  exit(-1);0 _  w$ X: H$ l8 ~: M% X
}
; n4 ~/ ^' r( {# R0 a( p5 @9 q! i4 W# T# R+ P
IplImage *tempImg = cvQueryFrame(cap);( J; Q: ]' v  N. I$ h0 x
double fps = 20;
/ I! i7 o$ v( s) D) I, YCvSize size = cvSize(( I' g% c8 s# V" j* K
  (int)cvGetCaptureProperty(cap, CV_CAP_PROP_FRAME_WIDTH),
1 k( U1 i, Z* c5 y8 \- l  (int)cvGetCaptureProperty(cap, CV_CAP_PROP_FRAME_HEIGHT)
5 Y$ I2 e* t8 o3 H. I  c  );
! W3 ^: _0 Q1 M  q: j1 s0 a5 K% KCvVideoWriter *writer = cvCreateVideoWriter("c:/test.avi", CV_FOURCC('X','V','I','D'), fps, size);) c; V5 B* X; b

) t8 w) I% c" j. [- N# aIplImage *img = cvCreateImage(size, 8, 3);  d8 c% ?/ R& y- m
while((tempImg=cvQueryFrame(cap)) != NULL)  b+ A+ R- R! Q3 e3 ~
{. k; G/ I) L8 w/ t% F3 R% x
  cvCopy(tempImg, img);
4 P/ g! a4 w" R3 ?$ x5 ^4 ?! z; ^9 N  if (img->origin == IPL_ORIGIN_TL)
0 _0 W% z8 [3 |! Q9 m$ Z  {
, v$ t9 C0 n' K6 ]: d: v2 r   cvFlip(img, img);
. E/ W& J: D+ F3 `2 R/ i& c  }- s! _* ?) S' a# t5 M9 T/ R
  cvWriteFrame(writer, img);: k: O! G7 j  I  {1 ^: p  s
}- }! r, G2 ^" T
1 G0 J, I; K( t& l2 o# J! j
cvReleaseImage(&img);+ F* Z, {1 }' b3 x: w- u; f
cvReleaseCapture(&cap);% m/ D2 m9 y2 l+ i& S4 f. d& L
cvReleaseVideoWriter(&writer);4 C' A9 j" u& p  R+ Y$ o

; f! c- Y9 v2 nsystem("pause");
  c# O. K$ ^6 ?return 0;
  w. p( M  G7 `9 R" `, M}

本版积分规则

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

GMT+8, 2025-4-28 16:57 , Processed in 0.049726 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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