一乐电子

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

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 5504|回复: 2

halcon视觉处理

[复制链接]
发表于 2011-11-26 21:09 | 显示全部楼层 |阅读模式
各位兄弟好,请问大家有没有接触过视觉处理软件呢?我手上正学OPENCV 和HALCON买了几本有关opencv 的书籍2 b# |' `4 d& z( w2 f

7 U) ?. D% O0 y& m( r# q% J以上是halcon的一些简单资料# I, I: Y1 Z$ M7 Y5 Q7 |/ X
( }* G/ r7 L  a) N  q
halcon.pdf (725.43 KB, 下载次数: 327)
 楼主| 发表于 2011-11-26 21:38 | 显示全部楼层
再来一个) t5 t2 h1 O" H9 \2 y5 g

5 s# |! z$ S9 b$ E- ? halcon-1.pdf (977.66 KB, 下载次数: 352)
回复

使用道具 举报

 楼主| 发表于 2011-11-26 21:40 | 显示全部楼层
[OpenCV] 利用opencv捕获usb摄像头并写入视频文件: _+ F4 {5 ]/ h& z- @  U4 e9 ]/ y, a

% G! _+ N( f8 B+ A& o# Q  ~* t$ e$ q7 |3 V9 g
7 Q7 \% Z+ d/ X
对于搞视频监控的朋友来说,视频文件的写入,几乎是必须的一个步骤。这里,我给出一个视频文件写入的例子。首先是利用opencv进行USB相机的视频捕获,然后,将视频帧写入到视频文件当中。在进行视频文件的写入之前,有两点需要提醒:( p; u+ c# d. a5 ^& b6 R

0 x* {0 r4 q2 m(1)opencv只是一个图像处理的工具库,并不是视频处理的工具库!也就是说,它所处理的对象,应该是一张一张的图片,而opencv本身虽然有一些API函数可以进行USB相机的读取,但也仅仅是调用了windows 底层的vfw模块来实现,所以,如果你是windows vista,windows7之类的操作系统,很可能微软已经抛弃了vfw模块。而这个时候,再利用opencv的相机视频捕获函数,就无法获取视频帧了。# m# C& a+ [; q8 M3 _$ d

% B6 k7 D& g* l2 w(2)视频文件(.mpeg,.mp4,.rmvb,.avi等格式)的读写,需要专门的视频编解码器。很显然,不同格式的视频文件,采用的视频编码技术是不相同的(值得提醒的是,.avi格式的视频文件,尽管后缀是相同的,但内部采用的视频编码算法仍可能不相同,具体可以参考这里http://blog.csdn.net/carson2005/article/details/6314089),所以,进行视频文件读写之前,你需要按照相应的视频编解码器。而暴风,kmplayer之类的视频播放器,其内部就已经包含了常用的视频格式文件的编解码器。所以,你可以直接利用他们进行视频文件的播放。6 r2 j' y+ ]2 q/ Z) K. c$ c5 D* f
. z( w! y! f+ U, n; A6 m/ w/ s
OK,了解了上面两点,你就知道,在利用opencv进行视频文件写入之前,必须要下载相应的视频编解码器。常用的有divx,xvid,ffmpeg等,笔者在这里采用xvid(这里有个简单介绍:http://blog.csdn.net/carson2005/article/details/6553867)。  {0 ~; v. i3 ?! d4 E+ c9 z9 C- H

- F9 {% ]- E+ r9 |& t下面给出参考代码:" ]8 q0 |2 A/ o- W  L7 H/ J) ]

3 @; ?- r1 W3 [; n#include "stdafx.h"
  L! M3 \4 b0 m/ |# E* B% p#include "cv.h"  r6 g- F. q0 C* z# s8 v" e
#include "highgui.h"
# x  h7 ]6 y' ~#include "iostream"( e& N1 \# Z( J  |+ _( X1 \
using namespace std;( ^) [, {7 r& E$ Y2 E9 ?: r

3 e  K1 T" G! [% |. }( B+ C. b6 \7 N2 N% Z# C: D/ A0 R
+ V( w! _0 \4 O$ c/ e
int _tmain(int argc, _TCHAR* argv[])
# u: T/ _/ }, u: K1 I{
7 J1 i/ h. B4 Y1 gCvCapture *cap = cvCreateCameraCapture(0);//初始化相机捕获的指针- {) y7 t; b- m2 @- e
if (!cap)
$ Y" P. g, S: K{# \* e% X# D3 A2 ]9 r0 |
  cout<<"create camera capture error..."<<endl;* {# m- D' c, l! x; [
  system("pause");( @. p8 l5 y6 }6 w  s7 S
  exit(-1);! B) G' B/ z1 J, x9 @7 O5 z! q
}
: V3 j% t+ Q& C& t$ K( u& Q
  p, Z9 |: V* G) f* EIplImage *tempImg = cvQueryFrame(cap);
1 l5 r; M0 y/ e, H7 t3 Udouble fps = 20;$ L8 c2 |) ?, S2 I% P
CvSize size = cvSize(
8 g; H4 Q5 K% U- _( g3 E: ]  (int)cvGetCaptureProperty(cap, CV_CAP_PROP_FRAME_WIDTH),4 c$ B+ f, U; f9 k; L1 r
  (int)cvGetCaptureProperty(cap, CV_CAP_PROP_FRAME_HEIGHT)8 O' k9 @) ^/ N' m* j- M
  );
$ ~) V/ [* n' N6 T: o7 M& YCvVideoWriter *writer = cvCreateVideoWriter("c:/test.avi", CV_FOURCC('X','V','I','D'), fps, size);8 m* K* E) m; N" W, ?8 T

' i$ k, z5 M- |  Z* `) ?% {" s$ yIplImage *img = cvCreateImage(size, 8, 3);
% C; k$ K6 h3 B: L' dwhile((tempImg=cvQueryFrame(cap)) != NULL)& ^  |# Z- x1 S* i( ?0 v- _
{
9 I" T% k3 j6 B2 b  cvCopy(tempImg, img);: k! q* q# t2 X4 p
  if (img->origin == IPL_ORIGIN_TL)& r6 g% B6 H! d5 |7 h  F) u4 x
  {
5 Z- p+ |. V) T   cvFlip(img, img);
; J3 g/ m, E- k! E$ N- o. ~) q  }
8 B: b# L" w3 E1 r' t' C8 G  cvWriteFrame(writer, img);( A9 Y4 `' X3 C- L7 e5 b
}
) {- E/ C7 l( j+ M
; ]2 R4 C* _9 M# \+ o7 p& j2 ]/ ZcvReleaseImage(&img);
; o! Y2 P/ ~+ h# kcvReleaseCapture(&cap);; G7 }& k& E, F
cvReleaseVideoWriter(&writer);. Y, w4 \0 K) x& O4 p$ X, R
# A8 m- Y" ]" V
system("pause");( e" e9 l7 T" S! j* N( v
return 0;" Y" i  n6 k  \+ L* i
}
回复

使用道具 举报

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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