一乐电子

一乐电子百科

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

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

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

halcon视觉处理

[复制链接]
发表于 2011-11-26 21:09 | 显示全部楼层 |阅读模式
各位兄弟好,请问大家有没有接触过视觉处理软件呢?我手上正学OPENCV 和HALCON买了几本有关opencv 的书籍9 V  |' C8 N2 g/ L

# W; Z; V; i8 J, N$ C  Y7 B! \7 S, n, T' D7 J以上是halcon的一些简单资料
" S9 m1 ?" u7 D/ t( a
  X/ P% B8 T/ t  Q% G9 R halcon.pdf (725.43 KB, 下载次数: 327)
 楼主| 发表于 2011-11-26 21:38 | 显示全部楼层
再来一个
5 h' a  ^$ j! m; u* l" N: I6 B- T/ M$ B+ c- }
halcon-1.pdf (977.66 KB, 下载次数: 352)
 楼主| 发表于 2011-11-26 21:40 | 显示全部楼层
[OpenCV] 利用opencv捕获usb摄像头并写入视频文件% w4 [. Z% J' F( T
' ^+ L# B: A3 k7 R2 c) q  y6 |0 d) X
! S4 Y8 @5 ^9 m+ \
1 Y3 o/ t: A; V' G
对于搞视频监控的朋友来说,视频文件的写入,几乎是必须的一个步骤。这里,我给出一个视频文件写入的例子。首先是利用opencv进行USB相机的视频捕获,然后,将视频帧写入到视频文件当中。在进行视频文件的写入之前,有两点需要提醒:
- B2 |. U  g' c. ]/ m4 @) _5 G. c. w6 A) F4 _) O2 _$ s7 Z& I/ `
(1)opencv只是一个图像处理的工具库,并不是视频处理的工具库!也就是说,它所处理的对象,应该是一张一张的图片,而opencv本身虽然有一些API函数可以进行USB相机的读取,但也仅仅是调用了windows 底层的vfw模块来实现,所以,如果你是windows vista,windows7之类的操作系统,很可能微软已经抛弃了vfw模块。而这个时候,再利用opencv的相机视频捕获函数,就无法获取视频帧了。
9 T$ X& P7 m! k$ e! P0 E6 d  j! H( M8 [# c4 I" Y
(2)视频文件(.mpeg,.mp4,.rmvb,.avi等格式)的读写,需要专门的视频编解码器。很显然,不同格式的视频文件,采用的视频编码技术是不相同的(值得提醒的是,.avi格式的视频文件,尽管后缀是相同的,但内部采用的视频编码算法仍可能不相同,具体可以参考这里http://blog.csdn.net/carson2005/article/details/6314089),所以,进行视频文件读写之前,你需要按照相应的视频编解码器。而暴风,kmplayer之类的视频播放器,其内部就已经包含了常用的视频格式文件的编解码器。所以,你可以直接利用他们进行视频文件的播放。  H4 Q2 p1 T  a6 ~- L. u+ Z* x
0 p* u, _5 a! A* x3 \
OK,了解了上面两点,你就知道,在利用opencv进行视频文件写入之前,必须要下载相应的视频编解码器。常用的有divx,xvid,ffmpeg等,笔者在这里采用xvid(这里有个简单介绍:http://blog.csdn.net/carson2005/article/details/6553867)。
6 \  a8 e# p" c0 B- Y1 s+ i' C7 f, ]8 y7 G0 A' z5 ~4 C5 X
下面给出参考代码:
3 J3 p$ d' U- j2 X2 U3 W+ d. a, V4 _; h8 L
#include "stdafx.h"
6 N3 i0 i) ^3 w1 x0 j- N. g#include "cv.h"
8 d% T! o! M% _* q- q& r3 a#include "highgui.h"
, {, m: P& S# U. d& a0 n#include "iostream"8 H- [3 Y$ \  V" a- B& g5 p( a- y
using namespace std;# a9 w7 r( Q( l9 g$ g* r5 j, m9 d. |

  P5 B" C; `3 ?2 a* O8 @2 o. b/ a- T; n) q- D- q9 m& Z

( b: {7 z! z! Q  B0 E# K: ?int _tmain(int argc, _TCHAR* argv[])! n9 j! w$ s& Y; J% [0 ?5 B
{" k0 }0 e  a* s3 T- A  z8 a
CvCapture *cap = cvCreateCameraCapture(0);//初始化相机捕获的指针
: R7 m; F: j0 j; U6 oif (!cap)
6 [$ V/ b8 [3 N{
2 c: _( Z. S9 R  cout<<"create camera capture error..."<<endl;4 l# X7 d4 i" P7 L- {0 Z
  system("pause");
6 |. _' g. q' W  [6 B3 ^  exit(-1);
3 B* |2 g; Q$ Y, @! {}
/ @7 V* q, y9 s3 c. n0 I- |/ G4 \$ I6 y& _! ?. `) q
IplImage *tempImg = cvQueryFrame(cap);
/ ]5 {# \" F& ^9 n" {double fps = 20;, D; O5 A- D2 d7 |1 @, U+ I
CvSize size = cvSize(
0 k. H* d2 L3 r  (int)cvGetCaptureProperty(cap, CV_CAP_PROP_FRAME_WIDTH),' q. S+ X. G4 T: L4 M
  (int)cvGetCaptureProperty(cap, CV_CAP_PROP_FRAME_HEIGHT)
2 ?4 H  Z; P; Q+ W  );6 u4 E7 J' q' F( A. a/ A
CvVideoWriter *writer = cvCreateVideoWriter("c:/test.avi", CV_FOURCC('X','V','I','D'), fps, size);
" d+ Z, W, _! d) _) H9 h" y% n+ i  r, y; q: W& E" `
IplImage *img = cvCreateImage(size, 8, 3);
1 N4 o7 C8 K! u5 ^$ W) [/ cwhile((tempImg=cvQueryFrame(cap)) != NULL)
. o8 k/ C( [" A. b; u) d  Y, S{
  x+ ^( k8 F- o+ K  cvCopy(tempImg, img);
0 K7 J) ?4 B5 @& f9 W5 ~  if (img->origin == IPL_ORIGIN_TL), B5 [% w5 r6 a+ d& L+ N, I
  {$ _% G1 |) s2 x
   cvFlip(img, img);. m6 A* f  g) v6 R% K7 ?
  }( d3 @% U" L" X9 n, D$ a6 o
  cvWriteFrame(writer, img);
; c/ j6 Q* i  Y4 B$ z4 H}! Z( O9 [8 n) e" P) Q

* ?. v4 ^- C( Z1 L2 c' C2 N) dcvReleaseImage(&img);# V7 [. w+ t# v+ @! v9 o
cvReleaseCapture(&cap);
5 t3 m* p5 n" h3 K( N( ocvReleaseVideoWriter(&writer);5 M8 s) P7 g4 C+ @# I$ w

) ^1 @1 l8 I% ]: p" esystem("pause");0 z, t7 N  K. x3 p
return 0;
, L, }2 ~+ r" E5 F! G}

本版积分规则

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

GMT+8, 2024-6-1 16:44 , Processed in 0.058914 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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