一乐电子

一乐电子百科

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

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

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

halcon视觉处理

[复制链接]
发表于 2011-11-26 21:09 | 显示全部楼层 |阅读模式
各位兄弟好,请问大家有没有接触过视觉处理软件呢?我手上正学OPENCV 和HALCON买了几本有关opencv 的书籍% S" N/ J* S! S  `" {" P

5 D; S# w- t- R1 g, |5 }8 Z以上是halcon的一些简单资料) A2 Y# n$ V: ^$ g  @/ F* [
! J9 Z$ Z2 E0 ^* U
halcon.pdf (725.43 KB, 下载次数: 327)
 楼主| 发表于 2011-11-26 21:38 | 显示全部楼层
再来一个
, S. n9 P. [. d6 g  R  q
: \4 u/ v9 `! U+ M+ k  x halcon-1.pdf (977.66 KB, 下载次数: 352)
 楼主| 发表于 2011-11-26 21:40 | 显示全部楼层
[OpenCV] 利用opencv捕获usb摄像头并写入视频文件/ a+ O7 f9 R% ~2 K& m8 N

' C: G( y1 m/ K
# A  u0 B& Z- A8 C
+ L0 Z. N" S8 u0 X1 H& W6 k' [6 a" O" J对于搞视频监控的朋友来说,视频文件的写入,几乎是必须的一个步骤。这里,我给出一个视频文件写入的例子。首先是利用opencv进行USB相机的视频捕获,然后,将视频帧写入到视频文件当中。在进行视频文件的写入之前,有两点需要提醒:8 p$ Q4 _- q/ H$ f3 Y

/ ]/ d2 H5 P* c  d& g% R(1)opencv只是一个图像处理的工具库,并不是视频处理的工具库!也就是说,它所处理的对象,应该是一张一张的图片,而opencv本身虽然有一些API函数可以进行USB相机的读取,但也仅仅是调用了windows 底层的vfw模块来实现,所以,如果你是windows vista,windows7之类的操作系统,很可能微软已经抛弃了vfw模块。而这个时候,再利用opencv的相机视频捕获函数,就无法获取视频帧了。5 b7 j5 D9 L; K% f2 c
& E! z" t' o, N( I
(2)视频文件(.mpeg,.mp4,.rmvb,.avi等格式)的读写,需要专门的视频编解码器。很显然,不同格式的视频文件,采用的视频编码技术是不相同的(值得提醒的是,.avi格式的视频文件,尽管后缀是相同的,但内部采用的视频编码算法仍可能不相同,具体可以参考这里http://blog.csdn.net/carson2005/article/details/6314089),所以,进行视频文件读写之前,你需要按照相应的视频编解码器。而暴风,kmplayer之类的视频播放器,其内部就已经包含了常用的视频格式文件的编解码器。所以,你可以直接利用他们进行视频文件的播放。' l) p. D! `1 p9 j! [. y9 v
4 F3 c/ H; |* U( i+ m$ A* u5 X1 f; P, g
OK,了解了上面两点,你就知道,在利用opencv进行视频文件写入之前,必须要下载相应的视频编解码器。常用的有divx,xvid,ffmpeg等,笔者在这里采用xvid(这里有个简单介绍:http://blog.csdn.net/carson2005/article/details/6553867)。
3 W7 R* n" P! m  n2 ^. \) `! \, r/ [
8 o+ B5 S! `7 E" G下面给出参考代码:
5 X! L; O% }  I; g7 @/ Z/ g4 Y1 K+ v
#include "stdafx.h"
- l' d4 @( d# P#include "cv.h"
- @* v2 y! L6 F) k8 y* T#include "highgui.h". F' p. Q4 p: v* d( j, F6 |6 _" L
#include "iostream"' G  h6 r; T: c  o% K  b' ^
using namespace std;) k* n1 |5 `* N( F6 h

2 [6 K0 J  ~& J. q& u6 O. y$ t/ i% B3 M

, ~3 t3 i9 m( f! e$ D6 C" ^int _tmain(int argc, _TCHAR* argv[])) D9 G+ |8 X  Z8 l
{
# q" p" T& e  {# F$ G$ }CvCapture *cap = cvCreateCameraCapture(0);//初始化相机捕获的指针
! U; t7 ]' `9 ^, vif (!cap)
& x- A( t9 d, q; M{
6 g5 q- J+ @# g  cout<<"create camera capture error..."<<endl;) ^* }  {+ F$ A  m: a1 {( f  _2 R
  system("pause");; _+ Q/ {4 G: L, G
  exit(-1);  g: U9 W* e' C( b& K# V7 @* L
}
& r; {8 G* i" L$ c, |8 T; @& [) m
IplImage *tempImg = cvQueryFrame(cap);
$ ?7 d8 ~$ D3 W* L. J" p  W# A* O7 ?+ Sdouble fps = 20;
' y$ n3 P( c1 d# dCvSize size = cvSize(! W7 I* e7 e) t% M# H8 B
  (int)cvGetCaptureProperty(cap, CV_CAP_PROP_FRAME_WIDTH),% ]1 y5 Q3 h$ U1 @$ ~4 v; v& {
  (int)cvGetCaptureProperty(cap, CV_CAP_PROP_FRAME_HEIGHT)9 r7 o9 y7 T5 m8 z' L+ V8 Q
  );
9 ^2 Z) b9 G5 d# x- I/ YCvVideoWriter *writer = cvCreateVideoWriter("c:/test.avi", CV_FOURCC('X','V','I','D'), fps, size);
% k" L. r# a5 l* G. x( S% E" {. Z. z/ p. U# E, d6 q
IplImage *img = cvCreateImage(size, 8, 3);
. {. Y- R( @+ |2 U2 l8 z$ Dwhile((tempImg=cvQueryFrame(cap)) != NULL)
- d' e- x: ?% T9 t{% A1 o6 g+ K+ ?" z  g8 `
  cvCopy(tempImg, img);* k0 \+ @3 o% S1 F8 V- R. L
  if (img->origin == IPL_ORIGIN_TL)3 j  X+ z! [) R  t3 Y% T
  {
8 v) _' n# A* X4 I6 p, Z9 d2 y   cvFlip(img, img);
; o2 W1 v  @* q4 q& h6 J1 r* z& W  }
$ S, B- c# N( D; }0 ^  cvWriteFrame(writer, img);" [% C9 z' I4 x2 c0 h7 f
}' p3 c( C+ }' R* [

" p( h7 T* U1 i# S6 @9 i- ?2 A+ _cvReleaseImage(&img);# Q+ ]0 Y$ I, P% d/ r( z  l: ]1 A
cvReleaseCapture(&cap);9 T8 N$ V6 Z$ @
cvReleaseVideoWriter(&writer);/ w' i2 I. l2 G* l' S
; ~( x+ G9 J6 T; ]/ E6 H* F! h
system("pause");
8 \% @6 |! s1 y7 y# r* W! P  |" Dreturn 0;
# u0 r- q3 s& c0 c1 u3 }+ F0 o! x}

本版积分规则

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

GMT+8, 2024-5-19 06:11 , Processed in 0.045533 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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