vc视频采集代码

转载 2012年03月28日 23:37:30
vfw(Video For Windows)是常用的视频采集方式,在vc中可以方便地采集来自usb摄像头、视频采集卡等各种支持vfw方式的视频采集设备。在新建的对话框中包含"vfw.h"头文件,在Project-》Setting中包含"Vfw32.lib",创建ID为IDC_PIC的pic控件,然后加入下面的初始化和结束代码,就采集和处理自己的视频图像了。


#include "vfw.h"

HWND ghCapWnd;
CAPDRIVERCAPS gCapDrvCaps;
CString gCapFilename;

LRESULT CALLBACK FrameCallbackProc(HWND ghWnd, LPVIDEOHDR lpVData)
{
    if (!ghCapWnd)
        return FALSE;

    //图像处理代码

    return (LRESULT) TRUE ;
}

    //在OnInitDialog中添加初始化代码
    CWnd *pWnd;
    CRect rect;

    pWnd = AfxGetMainWnd()->GetDlgItem(IDC_PIC);
    pWnd->GetWindowRect(&rect);
    pWnd->GetSafeHwnd();
    ghCapWnd = capCreateCaptureWindow((LPCTSTR)(_T("视频窗")),
                                            WS_CHILD|WS_VISIBLE|WS_EX_CLIENTEDGE|WS_EX_DLGMODALFRAME,
                                            0,
                                            0,
                                            rect.Width(),
                                            rect.Height(),
                                            pWnd->GetSafeHwnd(),
                                            0);
    ASSERT(ghCapWnd);
    if (capDriverConnect(ghCapWnd, 0))/*判断采集窗口是否与0号捕获卡驱动程序相连接,这里采用简化的方法,因只一块捕获卡,计算机自动登记号码通常是为0*/
    {
        capDriverGetCaps(ghCapWnd, &gCapDrvCaps, sizeof(CAPDRIVERCAPS)); /*作默认值初始化,并得到驱动器的性能,存入CAPDRIVERCAPS结构中*/
        if (gCapDrvCaps.fCaptureInitialized) //如初始化成功
        {
            capPreviewRate(ghCapWnd, 33); //设置预视帧频
            capPreview(ghCapWnd, TRUE); /*设置成预视模式(preview),该方式是通过内存作为缓冲区来存放视频数据,它是获得视频数据的必要条件。另一种称为Overlay模式,它是不经过内存而直接将数据传入显存中。它不符合我们要求。*/
            capSetCallbackOnFrame(ghCapWnd, FrameCallbackProc); //设置每帧结束后所调用的回调函数(第二部作解释)
        }
        else{//初始化不成功
            AfxMessageBox("捕获卡初始化失败"); //初始化不成功的消息框显示
            AfxGetMainWnd()->PostMessage(WM_CLOSE);//发送WM_CLOSE消息,关闭对话框
        }
    }
    else{//连接不成功
        AfxMessageBox("捕获卡连接失败"); //连接不成功的消息框显示
    }

    //在OnDestroy中加入结束采集代码
    capDriverDisconnect(ghCapWnd); //断开视频窗口与捕获驱动程序的连接



常用函数,添加在按钮事件中即可:
    capDlgVideoFormat( ghCapWnd); /*产生一视频格式对话框,这是捕获卡驱动程序中提供的,用户可通过它来选择视频格式*/


    capDlgVideoSource( ghCapWnd); //产生一视频源选择对话框产生一视频源选择对话框,它也是驱动程序中带有的    


    capGrabFrameNoStop(ghCapWnd); //该函数从捕获卡获得的帧数据不被压缩地存入视频缓冲区中,之后将其显示出来,而采用capGrabCapFrame( )会产生图象冻结效果。
    capEditCopy(ghCapWnd); //将单帧图象复制到粘帖板上


    // 写视频数据存盘程序
    capCaptureSequence(ghCapWnd); //开始保存AVI文件到默认的文件中"C:\Capture.avi"。    


    capCaptureSequenceNoFile(ghCapWnd); //结束存盘操作,但视频仍然显示

http://www.cnfgg.com/article/Vc/vc_videoCapture.htm

视频采集的基本流程

1、 视频采集的基本流程 一般的,视频采集都有如下流程: 2、 打开视频设备 在V4L2中,视频设备被看做一个文件。使用open函数打开这个设备: // 用非阻塞模式打开摄像头设备 ...
  • piaozhiye
  • piaozhiye
  • 2012年05月05日 13:44
  • 6720

iOS视频采集(四)

本篇在前面三篇的基础加入写入文件功能,代码见 MARK:-写入文件 注释(文中共有5处,一处设置 一处代理 三处写入步骤) 附:在真机设备中查看录制的音视频文件 Xcode windows -> ...
  • callzjy
  • callzjy
  • 2016年11月12日 21:44
  • 395

windows 视频采集开源库

现在进行windows上视频采集,主要的库有 opencv  ffmpeg videoinpu
  • zwj61336190
  • zwj61336190
  • 2014年11月16日 06:51
  • 1240

基于VC视频采集的实现

视频采集作者:孔康下载源代码  前一段时间写的“实时语音通信”,朋友们给了我很大鼓励,甚感欣慰!但是就那个程序,现在让我困苦不堪。在这里恳请高手帮助解决这些问题:1、回放问题,仍然没有实现的双缓冲播放...
  • hmill
  • hmill
  • 2005年07月19日 16:31
  • 3267

V4L2视频采集与视频编码学习目录及总结

摄像头输出三类数据:YUV,RGB,JPEG。YUV是大多数视频编码所需要的数据格式,比如X264编码器编码h264视频格式,它需要独立分离Y,U,V三个分量上的数据。RGB 数据可以直接发送到显示屏...
  • li_wen01
  • li_wen01
  • 2017年04月22日 17:10
  • 1116

linux下视频采集代码

/*  *==============================================================================  *            ...
  • hao1056531028
  • hao1056531028
  • 2012年03月16日 20:10
  • 531

【视频采集方案】

Android视频采集,传输,编码解码的方案总结  ipcamera-for-android 服务器 :    Android手机充当服务器,使用NanoHTTPD充当服务器 ...
  • u013378580
  • u013378580
  • 2017年05月25日 17:05
  • 1065

浅谈视频采集方案

现在手头上有一个项目就是需要优化采集方案。 我们这边之前使用的是作者Shiqi Yu写的开源代码,底层是基于DShow做的封装。但使用后发现采集到的视频流在进行回显时有点模糊,特别是文字部分。 现在通...
  • liuyi820729
  • liuyi820729
  • 2016年03月11日 10:43
  • 1197

用QT5实现视频采集

学习QT也有一段时间了,对QT稍有一点感觉,第一次自己写了一个相对有点用的程序,刚写完就献给广大热爱QT的好友,望你们参考,不对的地方请多多指教。QT5 的用法我就不说了,不会的看看其他的教程。 首...
  • SteveJobws
  • SteveJobws
  • 2017年02月11日 09:24
  • 461

Android 音视频采集与软编码总结

前言 本文总结了笔者在 Android 音视频采集与软编码中的一些经验与技巧,包括移植 FFmpeg、YUV 视频帧处理、最新的 JNI 编写技巧、 ndk 开发技巧等,为了不扯太远本文不会对音视...
  • mabeijianxi
  • mabeijianxi
  • 2017年07月22日 21:06
  • 3216
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:vc视频采集代码
举报原因:
原因补充:

(最多只允许输入30个字)