一乐电子

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

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 5505|回复: 2

halcon视觉处理

[复制链接]
发表于 2011-11-26 21:09 | 显示全部楼层 |阅读模式
各位兄弟好,请问大家有没有接触过视觉处理软件呢?我手上正学OPENCV 和HALCON买了几本有关opencv 的书籍
& Y9 \5 l0 Z2 u$ H7 ^7 W5 C* f7 }' h/ K
以上是halcon的一些简单资料
+ A* I" x1 ^, \) n3 K
6 G8 c1 [/ L4 G) v# [- T- ]* U halcon.pdf (725.43 KB, 下载次数: 327)
 楼主| 发表于 2011-11-26 21:38 | 显示全部楼层
再来一个
9 J. ], X5 o0 E* H) g9 `+ ~
+ L- ^: B- g; U+ b. x; |1 a halcon-1.pdf (977.66 KB, 下载次数: 352)
回复

使用道具 举报

 楼主| 发表于 2011-11-26 21:40 | 显示全部楼层
[OpenCV] 利用opencv捕获usb摄像头并写入视频文件: Z9 y2 ?- K6 Y& K

" J$ e  G! h/ V, m# ?0 ~- d
& u9 Y9 r3 ?9 e" |4 z4 l2 g3 _9 z9 H/ r
对于搞视频监控的朋友来说,视频文件的写入,几乎是必须的一个步骤。这里,我给出一个视频文件写入的例子。首先是利用opencv进行USB相机的视频捕获,然后,将视频帧写入到视频文件当中。在进行视频文件的写入之前,有两点需要提醒:/ r1 O) U* W8 r5 m- J
; ?$ F& q. I8 E: E9 Z- D
(1)opencv只是一个图像处理的工具库,并不是视频处理的工具库!也就是说,它所处理的对象,应该是一张一张的图片,而opencv本身虽然有一些API函数可以进行USB相机的读取,但也仅仅是调用了windows 底层的vfw模块来实现,所以,如果你是windows vista,windows7之类的操作系统,很可能微软已经抛弃了vfw模块。而这个时候,再利用opencv的相机视频捕获函数,就无法获取视频帧了。
0 d" u  e1 f/ T  r# p, ~& P7 p3 Z+ H7 b4 e/ j
(2)视频文件(.mpeg,.mp4,.rmvb,.avi等格式)的读写,需要专门的视频编解码器。很显然,不同格式的视频文件,采用的视频编码技术是不相同的(值得提醒的是,.avi格式的视频文件,尽管后缀是相同的,但内部采用的视频编码算法仍可能不相同,具体可以参考这里http://blog.csdn.net/carson2005/article/details/6314089),所以,进行视频文件读写之前,你需要按照相应的视频编解码器。而暴风,kmplayer之类的视频播放器,其内部就已经包含了常用的视频格式文件的编解码器。所以,你可以直接利用他们进行视频文件的播放。
5 H6 d  U3 g) F5 ]4 [# q" Q1 n0 w/ C$ B( e) {: e2 @! e
OK,了解了上面两点,你就知道,在利用opencv进行视频文件写入之前,必须要下载相应的视频编解码器。常用的有divx,xvid,ffmpeg等,笔者在这里采用xvid(这里有个简单介绍:http://blog.csdn.net/carson2005/article/details/6553867)。
5 C3 i5 t) Z, M/ M* m' K6 H
  @4 p1 v- `0 |3 g  I+ z下面给出参考代码:
( X# N1 L% W( j) {. L
" d) l) q) O# x- }#include "stdafx.h"
$ X  x. {% q3 w- Q, e' ]#include "cv.h"
+ Y3 E1 u  H. W4 t#include "highgui.h"" O7 {6 Y5 c0 G) B
#include "iostream"
$ J. I5 I6 j6 F1 h8 Gusing namespace std;3 o2 U! S  F0 G# c; ]4 o

9 s4 p. a) j4 e7 I+ {/ l6 K% [( }% h7 }

- V" Z1 g* ^! }; v- qint _tmain(int argc, _TCHAR* argv[])! i  O% K( V  E$ m
{
2 d4 n, ]! y" d& QCvCapture *cap = cvCreateCameraCapture(0);//初始化相机捕获的指针
' c! s( |# Q) q4 d$ e0 Dif (!cap)
; r; I+ p4 y* h5 \. v. |{: B! P3 N( y2 x
  cout<<"create camera capture error..."<<endl;; `3 G9 t# b6 r# Y$ |
  system("pause");
6 E8 \; \4 `( P/ V  exit(-1);
* F8 Z! c4 e# n/ B}
& ?( S, b, [0 p. X! k% H( A' a1 V5 s$ C# b( S2 {! W. }
IplImage *tempImg = cvQueryFrame(cap);
, j2 P/ j+ T4 a4 r% K0 S, c+ Bdouble fps = 20;0 X7 r9 U: M4 e  _7 x$ @
CvSize size = cvSize(
9 a+ b9 F* }3 m5 m. ~4 U+ _8 H  (int)cvGetCaptureProperty(cap, CV_CAP_PROP_FRAME_WIDTH),/ X' G3 e+ l& z2 e2 N3 l9 u) H/ ~
  (int)cvGetCaptureProperty(cap, CV_CAP_PROP_FRAME_HEIGHT)
, j5 ]5 d% G1 c& B  );
* a; c5 J3 B3 q+ i% ZCvVideoWriter *writer = cvCreateVideoWriter("c:/test.avi", CV_FOURCC('X','V','I','D'), fps, size);2 W' X; v. e" u" ?1 G- w
( s$ n/ E% M8 q4 u6 a
IplImage *img = cvCreateImage(size, 8, 3);4 E. y) l- A/ s* L
while((tempImg=cvQueryFrame(cap)) != NULL)
* F) Y$ r" X2 i9 W4 y{4 a, K# M! U: W6 g( Q: H
  cvCopy(tempImg, img);
+ I( v( X! x+ l9 {* h$ _  if (img->origin == IPL_ORIGIN_TL)6 `  }1 d* Q" E9 h' E0 ~; F
  {1 `2 |/ K8 x% _; N2 @
   cvFlip(img, img);) i5 t  T  d0 E6 J7 A
  }
; A. n) p6 F& z. u' s6 M' p, \  cvWriteFrame(writer, img);' \+ X; B1 F" V: u- J& @
}' I6 e5 d  J& i' e
% c7 y7 r8 k2 w( f) B: [2 g
cvReleaseImage(&img);: {" d+ r; c# p
cvReleaseCapture(&cap);
2 i- E6 T, R  s; k* ~8 W8 B7 NcvReleaseVideoWriter(&writer);
" A$ m2 X3 l9 H4 U! X! B- v; y6 Y" [5 M! w$ J* h! x) Y
system("pause");
: e2 K3 Q: o9 B7 f+ Areturn 0;
" K4 _/ i% S' V; Q- a! q}
回复

使用道具 举报

本版积分规则

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

GMT+8, 2025-10-28 12:47 , Processed in 0.029738 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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