一乐电子

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

QQ登录

只需一步,快速开始

微信扫码登录

搜索
查看: 5353|回复: 2

halcon视觉处理

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

9 W% ?, a; a3 Z% R8 G% U以上是halcon的一些简单资料
; Y' R3 P. D- M6 O: @3 Q& Q- m2 Q! N7 t0 E% R4 w: F$ x; N
halcon.pdf (725.43 KB, 下载次数: 327)
 楼主| 发表于 2011-11-26 21:38 | 显示全部楼层
再来一个
8 L. ?* U3 @& W' I( @. `  W/ ~' z# V% \3 n
halcon-1.pdf (977.66 KB, 下载次数: 352)
回复

使用道具 举报

 楼主| 发表于 2011-11-26 21:40 | 显示全部楼层
[OpenCV] 利用opencv捕获usb摄像头并写入视频文件. p. w  w" p) K2 ^9 u; B1 A

) x* j; _) r( V: J. A$ I9 ?! Z% ~& d+ m- m6 @2 u

0 g. S  j4 M; M对于搞视频监控的朋友来说,视频文件的写入,几乎是必须的一个步骤。这里,我给出一个视频文件写入的例子。首先是利用opencv进行USB相机的视频捕获,然后,将视频帧写入到视频文件当中。在进行视频文件的写入之前,有两点需要提醒:
8 c, f% x# m' R* _; V% G, X+ ~+ `  P
(1)opencv只是一个图像处理的工具库,并不是视频处理的工具库!也就是说,它所处理的对象,应该是一张一张的图片,而opencv本身虽然有一些API函数可以进行USB相机的读取,但也仅仅是调用了windows 底层的vfw模块来实现,所以,如果你是windows vista,windows7之类的操作系统,很可能微软已经抛弃了vfw模块。而这个时候,再利用opencv的相机视频捕获函数,就无法获取视频帧了。5 `7 q0 k: N% L" D' A
2 G! Q2 |/ o! R9 i, N: P
(2)视频文件(.mpeg,.mp4,.rmvb,.avi等格式)的读写,需要专门的视频编解码器。很显然,不同格式的视频文件,采用的视频编码技术是不相同的(值得提醒的是,.avi格式的视频文件,尽管后缀是相同的,但内部采用的视频编码算法仍可能不相同,具体可以参考这里http://blog.csdn.net/carson2005/article/details/6314089),所以,进行视频文件读写之前,你需要按照相应的视频编解码器。而暴风,kmplayer之类的视频播放器,其内部就已经包含了常用的视频格式文件的编解码器。所以,你可以直接利用他们进行视频文件的播放。
: g, E% V- ~" S. \" }* P: ~* t" D! M7 \5 S1 Y. L" K
OK,了解了上面两点,你就知道,在利用opencv进行视频文件写入之前,必须要下载相应的视频编解码器。常用的有divx,xvid,ffmpeg等,笔者在这里采用xvid(这里有个简单介绍:http://blog.csdn.net/carson2005/article/details/6553867)。! Z4 C2 t  i8 X7 j% T. _4 J/ A

( E, ~6 z6 b' N8 }+ T0 H下面给出参考代码:# k9 J" `  E( g" u5 A

, k$ _: d: B& b" b2 e#include "stdafx.h"
5 @# ]0 d/ y$ a; z% Z4 j4 R& v#include "cv.h"
1 [7 j& @  a1 a2 N& R#include "highgui.h"
8 H  d. s& n4 H* o3 _' ?#include "iostream"' v: e5 \- ?; C$ f$ A7 x
using namespace std;
6 T0 v5 n2 K! _) S5 J! k
1 d7 R- p% b6 w6 ?2 @2 q0 N/ M; a* b7 i! R3 P7 o

2 A' I: Y. [4 H8 G9 j, Wint _tmain(int argc, _TCHAR* argv[])0 @: J  }! N# Q5 v" o+ E
{( q0 O1 T. g7 s7 f$ W4 F
CvCapture *cap = cvCreateCameraCapture(0);//初始化相机捕获的指针" p) J1 R) m, \* j
if (!cap)8 r9 I; N0 D) Y' T
{4 z8 ^$ K. f9 _9 R
  cout<<"create camera capture error..."<<endl;
8 b. m2 J9 E, a, O7 x8 n0 d8 C  system("pause");1 I8 y! h$ I; a' u/ Q* N: L, f
  exit(-1);
; [' f- \5 ^1 V# j0 ?7 C}4 \% M+ P2 w1 k/ _; F( \

& w" x/ v1 |4 ]0 w! @9 ~- FIplImage *tempImg = cvQueryFrame(cap);  \  L6 \$ g  B! b
double fps = 20;
# i; H0 N  ~/ W" i7 ACvSize size = cvSize(
$ F6 c9 R4 ^# W& J7 T, j# I9 n8 i  (int)cvGetCaptureProperty(cap, CV_CAP_PROP_FRAME_WIDTH),0 u& b0 T$ m3 v# P: N& C8 Q$ T
  (int)cvGetCaptureProperty(cap, CV_CAP_PROP_FRAME_HEIGHT)- v2 r% d( z% m8 L& Z5 o' F5 ]: V. R
  );
1 D5 }5 d/ }+ ^: N/ t- G' zCvVideoWriter *writer = cvCreateVideoWriter("c:/test.avi", CV_FOURCC('X','V','I','D'), fps, size);
: h% S  w9 r- B$ y6 K  c* i. m2 k5 n% Y% Q& w, {
IplImage *img = cvCreateImage(size, 8, 3);& Z* U0 U/ {' K  |* [& u
while((tempImg=cvQueryFrame(cap)) != NULL)
) h0 M7 l; [+ e* s/ [- L{
  h+ H( x5 V3 r, p( u, X  cvCopy(tempImg, img);
+ H5 Y6 T2 h  _2 v8 S/ ]# E  if (img->origin == IPL_ORIGIN_TL)( _( R4 e5 S" x% I- L5 [+ o# U$ O
  {2 j, b- z# e7 u2 A- W- J
   cvFlip(img, img);
- m) t1 E, U3 |& d" v; V  }
. ~9 ]- v5 C3 d4 n, {) `& H* f7 X  cvWriteFrame(writer, img);* P' J5 W: v# O* \" X% y
}3 _# ?( v1 r% k' d

8 i( @& L! p4 b; P9 j' AcvReleaseImage(&img);
/ b- g+ H9 s: N% |4 P7 u: DcvReleaseCapture(&cap);
1 t1 w7 z4 p1 S  S5 ]6 EcvReleaseVideoWriter(&writer);
  c/ U# [- G  y9 M8 X0 o5 P! S9 `( W5 }0 {3 X) L2 M5 u
system("pause");+ B" J  B* O' X# _2 U% Y
return 0;
  I+ }' H) P5 n) P4 y}
回复

使用道具 举报

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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