如何在用API函数调用可以capCreateCaptureWindow修改分辨率

常用函数调用可以及其用法举栗:



  • opencv 中的图像坐标问题:原图中的坐标Point 类中的坐标

  • Mat数据类型中指针ptr的使用:原图中的坐标Point 类中的坐标

对于Mat的ptr函数调用可以返回的是<type>中的模板类型指针,指向的是(row)中的第row行的起点地址
通常<type>中的类型和Mat的元素类型应该一致
然后再去访问该起点地址的[col]即对应col列位置嘚元素


flags 具体参数如下:

在原图基础上增加alpha通道
0
如果原图是16或32位,则为跟原图一样其他的就返回8位的


使用重载运算符 “ = ” 进行的拷贝是一種浅拷贝,虽然它们有不同的图像矩阵头但是二者共享相同的内存空间,二者内容相互关联任何一个变量变化的同时另一个变量也随の改变。

系统在使用这个函数调用可以之前实际上先使用create()函数调用可以开辟了一段内存:m.create(src.size(), src.type()); ,然后复制原图像这是一种深拷贝,真正地拷贝了一个新的图像矩阵此时二者相互之间没有影响,但是如果设置了ROI、COIcopyto()只会复制ROI、COI区域的内容。

clone()同样是一种深拷贝该函数调用可鉯会自己开一段内存,再复制好图像里面的数据然后返回这段内存中的数据。clone()是把所有的都复制过来不论你是否设置了ROI、COI等影响,clone()都會原封不动的克隆过来

用clone复制后,如果源图像在内存中消失复制的图像也变了,而用copy复制源图像消失后,复制的图像不变


其中:dstCn鼡于指定目标图像的通道数,如果指定的值是默认值0那么通道数将由输入图像和颜色转换码决定。
CV_RGB2GRAY表示将彩色图像转换至灰度图像因此,这里将彩色图像srcImage转化为灰度图像srcGray


  • 图像灰度值个数计算函数调用可以:calcHist()

其中,images可以有多个但必须满足:同等深度,同等大小同种數据类型(CV_8U或CV_32F),而通道数不需要一致
函数调用可以 calcHist() 的计算结果储存为一个尺寸为 256×1 的“列向量”,即


waitKey(t) → 表示 t 毫秒后程序自动退出,當 t≤0 时表示显示图片后,按下任意键后程序退出




  • 直线绘制函数调用可以:line()

lineType – 线段的类型。默认值为8邻接
  4 → 4邻接连接线和反锯齿連接线。
  CV_AA → 采用高斯滤波连接





参数 type,表示执行阈值分割的方法其具体种类如下:

0
Otsu,最大类间方差法

使用 Otsu 或者 Triangle 方法时输入图像只能是8位单通道图像


参数 shape,表示执行的形态学操作的结构元形状其具体参数可选如下:

0

参数 op,表示执行的形态学操作类型其具体参数如丅:

0 腐蚀,缩小细化图像中的物体特征
开运算对图像先腐蚀再膨胀
闭运算,对图像先膨胀再腐蚀
梯度膨胀与腐蚀之差,可以保留物体邊缘轮廓
顶帽原图像与开运算结果图之差
黑帽,闭运算结果图与原图像之差
击中、不击中在一幅图中匹配已知特征

在对图像进行形态學处理前,必须先设置结构元:使用函数调用可以 getStructuringElement()


参数 labels 是标记完成后的图像,是将原图像中的各个连通域中像素对应的位置从1开始依佽标记。例如:第一个连通域的所有像素位置均标记为“1”

最左边的 X 坐标,是水平方向边界框的开始
最上边的 Y 坐标是竖直方向边界框嘚开始
连通域的面积(像素点数)

参数 ccltype,表示计算连通域使用的算法类型具体包含:





  • 图像尺寸更改函数调用可以:resize()
0
双线性插值(默认的差值方式)
立方插值(4×4像素邻域内)


1、参数 param1 是第三个参数 method 设置的检测方法的对应的参数。对当前唯一的方法:霍夫梯度法它表示传递給 canny 边缘检测算子的高阈值,而低阈值为高阈值的一半
2、参数 param2 也是第三个参数method设置的检测方法的对应的参数。对当前唯一的方法:霍夫梯喥法它表示在检测阶段圆心的累加器阈值。它越小的话就可以检测到更多根本不存在的圆;而它越大的话,能通过检测的圆就更加接菦完美的圆形



一、mask 表示操作掩码,是一个8位单通道图像其尺寸比输入图像 image “大一圈”,即长和宽均大两个像素单位漫水填充算法不會填充掩膜 mask 的非零像素区域。因此若将一个边缘检测算子的输出图像加大“一圈”后用作掩膜,则可以有防止填充到边缘的作用

二、參数 flags 是操作标志符,共包含三个部分:

  1. 低八位(第0~7位)用于控制算法的连通性可取4 (4为缺省值) 或者 8。如果设为4表示填充算法只考虑当前潒素水平方向和垂直方向的相邻点;如果设为 8,除上述相邻点外还会包含对角线方向的相邻点。
  2. 高八位部分(16~23位)可以为 0 或者如下两种選项标识符的组合:
    <1>、FLOODFILL_FIXED_RANGE - 如果设置为这个标识符的话就会考虑当前像素与种子像素之间的差,否则就考虑当前像素与其相邻像素的差也僦是说,这个范围是浮动的
    <2>、FLOODFILL_MASK_ONLY - 如果设置为这个标识符的话,函数调用可以不会去填充改变原始图像 (也就是忽略第三个参数 newVal ), 而是去填充掩模图像(mask)这个标识符只对第二个版本的 floodFill 有用,因第一个版本里面压根就没有mask参数
  3. 中间八位部分,上面关于高八位 FLOODFILL_MASK_ONLY 标识符中已经说的佷明显需要输入符合要求的掩码。Floodfill 的 flags 参数的中间八位的值就是用于指定填充掩码图像的值的但如果 flags 中间八位的值为0,则掩码会用1来填充

如果传入对应的参数,可以直接打开视频文件或者要调用的摄像头例如:VideoCapture video(“E:\dog.mp4”);


  

该函数调用可以结合VideoCapture::grab()和VideoCapture::retrieve()其中之一被调用,用于捕获、解码和返回下一个视频帧这是一个最方便的函数调用可以对于读取视频文件或者捕获数据从解码和返回刚刚捕获的帧假如没有视频帧被捕获(相机没有连接或者视频文件中没有更多的帧)将返回false。
由此获取视频帧可以有多种方法 :

视频文件的当前位置(播放)以毫秒为單位
基于以0开始的被捕获或解码的帧索引
视频文件的相对位置(播放):0=视频开始,1=视频结束
编解码的4字-字符代码
返回后端特定的值该徝指示当前捕获模式
图像的亮度(仅适用于照相机)
图像的对比度(仅适用于照相机)
图像的饱和度(仅适用于照相机)
色调图像(仅适用于照相机)
图像增益(仅适用于照相机)(Gain在摄影中表示白平衡提升)
曝光(仅适用于照相机)
指示是否应将图像转换为RGB布尔标志
立体摄像机的矫正标注(目前只囿DC1394 v.2.x后端支持这个功能)












以下内容来源网络感谢原作者。

下面讲介绍VFW的视频捕获:

你可以使用windowsAVICap 类轻松地完成视频捕获AVICap 提供给应用程序一个简单的、基于消息的接口去访问视频设备和录音设備,并且可以控制处理视频流捕获

AVICap支持实是视频流捕获和实时单帧图像捕获。另外AVICap 提供了对视频源的控制(MCI媒体控制接口设备),因此使用者可以通过应用程序控制一个视频源开始和结束的位置并且可以加大对帧捕获的控制。

你使用AVICap 类可以完成如下的任务:

3.1.1视频捕获:朂简单的方法

视频捕获将数字化一个视频流和音频数据并且将他们保存在硬盘和其他存储设备上。

这里将描述如何在应用程序中简单地應用视频捕获它通过三句代码实现。它还介绍了如何通过发送消息给视频捕获窗口来结束或中断一个视频会话

AVICap 捕获窗口可以把捕获的喑视频信息写入一个AVI文件中。你的应用程序可以自由地处理这个AVI文件、管理缓存区的音视频数据、还可以在底层访问音视频设备的驱动器AVICap为应用程序提供了一个灵活的接口。你可以使用下面的代码在你的应用程序中加入视频捕获:

宏接口同样有用,你可以选择是使用宏接口还是SendMessage 函数调用可以来实现上面的功能不过宏接口可以让你的代码更加容易理解。下面就使用了宏接口

你的应用程序创建AVICap捕获窗口,并和视频设备建立连接后你创建的这个捕获窗口就准备捕获数据了。这时你可以通过发送WM_CAP_SEQUENCE消息(或capCaptureSequence 宏)开始对数据进行捕获。

WM_CAP_SEQUENCE将使鼡默认设置开始对视频和音频进行捕获,并把数据放在一个CAPTURE.AVI的文件中捕获动作将一直持续,除非有下面的事件发生:

在应用程序中伱可以通过发送WM_CAP_STOP命令(capCaptureStop)给捕获窗口,让它停止向文件写数据你还可以通过发送WM_CAP_ABORT命令(capCaptureAbort)给捕获窗口,让它中断捕获操作

3.1.2捕获基本设置

 通過对定义在CAPTUREPARMS结构中的捕获参数进行修改,你可以完成:

捕获的帧频率表示在一个捕获会话中每秒要捕获多少帧。你通过WM_CAP_GET_SEQUENCE_SETUP 成员中你可以對该值进行修改,从而去改变帧频率该值为捕获一帧要用的时间(单位是微秒

你可以让用户按这几种方法退出一个捕获会话,按键盘上的┅个键或几个组合键、或者按鼠标的左键或者是右键如果用户退出一个实时的捕获会话,那么捕获文件中的内容将被系统丢弃掉如果鼡户退出一个步帧(step-frame)捕获的会话,捕获文件将保存到退出时刻前的所有数据

成员中,当前的退出鼠标设置保存在fAbortLeftMouse

表示是否要对捕获操作限定时间 wTimeLimit 用于指定限定时间的最大值。

 捕获窗体类似于一个标准控件(不如按钮、列表框)它一般使用WS_CHILD WS_VISIBLE窗口类型。.

函数调用可以鈳以创建一个AVICap的捕获窗口这个函数调用可以返回一个窗口句柄,这个句柄就是捕获窗口的句柄后面其他操作就是通过发送消息给该句柄来实现。你可以在一个程序中创建多个捕获窗口并且每个窗口连接到不同的捕获设备上。

建立捕获窗口到捕获设备的连接

你可以动态哋连接或断开捕获窗口与设备间的链接通过使用WM_CAP_DRIVR_CONNECT消息(或capDriverConnect宏),可以实现捕获窗体与设备驱动间的连接当捕获窗体和捕获设备驱动连接后,你就可以发送针对设备的消息给该窗体了

如果你的系统安装了多个捕获设备,你可以通过在发送WM_CAP_DRIVER_CONNECT消息时设置wPrarm参数(integer)。来指定捕获窗口与那个具体的视频捕获设备相连接

WPrarm参数是一个整数,它表示一个系统已经安装的视频捕获设备列表的索引(注册表中或这System.ini [drivers]中的信息)该列表的索引从0开始。

       通过capGetDriverDescription函数调用可以可以获得安装的捕获驱动程序的名称和版本你的应用程序可以使用这个函数调用可以列举除安装的所有捕获设备,让用户可以选择其中一个去与捕获窗口相联

       同样地,假如父窗口尺寸改变了它可能需要发送一个通知消息给捕获窗口。相反如果捕获视频尺寸变化了,捕获窗口可能需要发一个通知消息给父窗口最简单的管理方法是让捕获窗口的尺寸等於捕获视频流的尺寸,随时把改变的尺寸告诉给父窗口

通过发送WM_CAP_GET_STATUS消息(capGetStatus宏),可以获得当前捕获窗口的状态这个消息得到一个CAPSTATUS结构体嘚拷贝,状态信息就在这个结构体的成员中

中的信息是动态的,你的应用程序应该随时去刷新这个结构体中的内容

改变捕获窗口的尺団对实际的视频流的尺寸没有影响。

3.1.4捕获和音频驱动器

视频捕获可以做这几个方面的工作:访问 视频源、显示选项、格式和压缩选项音頻捕获包括指定音频格式和选择压缩方式。

通过发送WM_CAP_DRIVER_GET_CAPS消息(capDriverGetCaps宏)可以获得当前连接的捕获设备的性能。发送该消息后会返回一个CAPDRIVERCAPS结构嘚对象。设备的性能信息就在这个对象中。

每个捕获设备的驱动程序都可以为控制视频信号和捕获处理和视频压缩提供4个对话框这些對话框中的内容都是视频捕获驱动程序定义的。

视频源对话框(Video Source dialog box)用于选择视频输入通道和视频图像的动态参数 它可以列举出当前连接视频設备的信号类型(SVHS和复合类型),并且可以通过该对话框去修改图像的色调、亮度、饱和度你可以通过使用WM_CAP_DLG_VIDEOSOURCE 消息 ( capDlgVideoSource )来显示和刷新这个窗口。

视频格式对话框(Video Format dialog box)用于选择数字视频的框架大小和视频图像的色深以及捕获视频图像的压缩格式。你可以通过使用WM_CAP_DLG_VIDEOFORMAT消息 (

box)用于控制视频外观在该对话框上进行了修改只是对视频显示起作用,对于实际的视频数据是不会造成改变的比如,可以改变显示的颜色飽和度等等....。你可以通过使用WM_CAP_DLG_VIDEODISPLAY消息 (

一般一个捕获驱动提供两种方式来观看输入的视频流:预览模式和覆盖模式。如果捕获驱动可以提供上面两种模式那么用户就可以选择其中的模式来使用。

预览模式从捕获设备硬件传输数据帧到系统的内存中并且在捕获窗口中使用GDI函数调用可以来显示这些数据帧。当捕获窗口的父窗体失去焦点的时候在应用程序的视频预览的数据将变慢,如果父窗体获的焦点后將对预览显示进行加速。因为预览处理的这种处理方式将大大提高整个系统的效率

这里用3个消息用于控制预览操作。

消息(capPreviewRate)可以设置预覽模式下图像的帧速度

打开或者关闭预览视频的缩放比例。

当预览和缩放比例属性都打开后那么视频将被缩放到和捕获窗口尺寸一样夶。打开预览模式后系统将自动关闭覆盖模式。

覆盖模式将不占用CPU的处理资源,直接在显示器上显示视频内容所用的处理是有捕获設备硬件来完成。发送WM_CAP_SET_OVERLAY消息(capOverlay)给捕获窗口可以打开覆盖模式。打开覆盖模式后将自动关闭预览格式。

无论是预览模式还是覆盖模式都可以通过发送WM_CAP_SETSCROLL消息(capSetScroollPos宏),可以设置图像的在整个视频帧的滚动位置(scroll position

通过发送WM_CAP_GET_VIDEOFORMAT消息(capGetVideoFormat)给视频捕获窗口可以得到一个结构,在这個结构体中就包含了视频的格式、大小

CAPTUREPARMS 数据结构包括了视频流的控制参数。它允许完成如下的任务:

对象发给捕获窗体就可以实现修妀。

3.1.5捕获文件和缓存区

保存捕获数据到一个新文件

这个消息不能改变捕获文件的名称和内容。你必须去指定新建的文件名因为捕获文件将保留原来的文件名称。

为捕获文件预分配磁盘空间

在捕获操作前先在磁盘上为捕获文件建一个指定大小的文件。预分配空间将减少數据保存时的处理时间可以通过WM_CAP_FILE_ALLOCATE消息(capFileAlloc)来预分配一个捕获文件。

你要预分配足够大的磁盘空间去保存预计最大的捕获文件预分配磁盘涳间没有限定捕获文件的大小。如果捕获的数据大于了分配的空间文件尺寸将自动变大。对一个捕获文件进行重写数据将对文件的已經分配的磁盘空间进行重写。

通过对捕获文件进行磁盘碎片整理可以提高捕获性能要对文件进行碎片整理,可以使用一个碎片整理工具來完成比如Disk Defragmenter

通过使用没压缩的磁盘来保存数据同样可以提高性能。因为在捕获期间压缩数据将对磁盘的吞吐量进行限制

       在每个AVI文件中都会使用一个指定大小的索引去查找音视频数据块。在一个索引的入口定位了一个视频帧或者一个波形声音的缓存器所以,这个索引的大小简接地限定了一个捕获文件所能保存的帧的数量上限

(允许32K 帧和想匹配的声音缓存器).

数据块的间隔尺寸是一个AVI文件的逻辑块大小。它用于写和读音视频数据块当向磁盘写音视频数据时, AVICap 将在每个数据块中加入一个必须的填充块(filler chunks (RIFF "JUNK" chunks) 去填充满该数据块

成员保存的昰当前的块间隔尺寸信息。通过对该成员的改写并发送WM_CAP_GET_SEQUENC_SETUP消息(capCaptureSetSetup),可以对其进行修改你设置该参数为零的话,那么块间隔尺寸的值就為磁盘的扇区大小

这个缓存区将视频数据放在内存的堆中。缓存区的大小可以改变并且它的大小是由CAPTUREPARMSwNumVideoRequested 成员和系统可以的内存大小来決定。

你可以使用下面三种方法来控制捕获的音频数据:

保存当前的音频缓存区的大小

除了对基于持续时间间隔的流捕获外,AVICap还支持如丅的捕获:

典型应用是这些消息用于向捕获文件添加单独的帧来创建一个动画, WM_CAP_SINGLE_FRAME_OPEN 为手动捕获操作打开一个文件,WM_CAP_SINGLE_FRAME用于捕获一个单独的帧放茬文件中

注:  该操作支持音视频同时捕获。

在一个帧缓存区中捕获一个图像你可以通过使用下面的消息来抓获当前显示的图形WM_CAP_GRAB_FRAME ,否则使用WM_CAP_GRAB_FRAME_NOSTOP

一旦开始捕获你可以拷贝图像给其他应用程序。你可以从帧缓存区拷贝一个图像到剪贴板(使用WM_CAP_EDIT_COPY

使用WM_CAP_SEUENCE_NOFILE消息(capCaptureSequenceNoFile宏)可以不向磁盤文件写入数据。该消息仅在配合回调函数调用可以时有用它允许你的应用程序直接使用音视频数据。例如在视频会议中,应用程序使用该消息区获得视频流回调函数调用可以将传输捕获的图像传送给远程的计算机。

MCI设备进行流捕获

MCI设备加强了实时捕获和步进帧(step-frame)捕獲的处理操作你可以指定一个MCI设备,比如一张影碟或者一盘录像带(VCR)来充当视频源通过发送消息并指定你要选定的MCI设备的名称。消息:WM_CAP_SET_MCI_DEVICE

控制MCI设备的规格信息保存在CAPTRUEPARMS数据结构体的数据成员中MCI兼容的视频源包括录像机(VCR)和光碟。如果fMCIControl数据成员为TRUE,捕获窗口采用MCI操作捕获窗口使用dwMCIStartTimedwMCIStopTime来获得开始和结束位置(毫秒)。

你可以使用Media Player 去快速检查MCI设备是否正确地连接到了你的系统上如果在视频显示显示了图像,僦表示这个视频源正确连接到了捕获硬件上

步进帧(step-frame)捕获控制的规格信息保存在CAPTRUEPARMS数据结构体的数据成员中。步进帧(step-frame)捕获除了使用视频捕获偠用的数据成员外还使用其他的数据成员:fStepMCIDevice, 毫秒)。捕获窗口使用fStepCaptureAt2x 来决定捕获硬件捕获的视频帧使用两个普通的分辨率使用 wStepCaptureAverageFrames 来指定捕獲时每帧图像使用的时间大小。

如果在一个步进帧(step-frame)捕获中指定fStepCaptureAt2xTRUE,那么捕获硬件将使用两个指定的解析度来进行捕获(高和宽的解析度都是雙倍的)。它使用软件在指定的解析度的基础上改写图像的象素,让其成为更高解析度的图像如果硬件不支持基于硬件的批量处理,你吔可以使用该选项并且捕获为RGB格式。

成员用于指定捕获一帧图像要使用的时间,它是一个采样的标准时间以后捕获图像捕获平均时间都會基于这个时间。采用这种机制降会减少在一个图像帧的随机数字化噪音。这个数据成员的标准值是5

关于MCI的信息可以查看MSDN上的信息。

3.1.7高级捕获选项

这节描述在一个捕获操作中你还可以进行的其他选择。

测量视频质量的一个方法是去限定在一个捕获操作期间丢掉的捕获圖像帧的数字当流捕获完成后,质量 = 丢掉的帧 /

通过WM_CAP_GET_SEQUENCE_SETUP消息(capCaptureGetSetup宏)可以得到当前用户初始化捕获的状态值该值存放在fMakeUserHitOKToCapture中。在开始一个捕获會话前设置该值为TRUE,可以为用户提供精确的控制系统为所有的音视频分配好数据缓存区后,AVICap会显示一个对话框它让用户清除因为软件初始化导致的捕获延迟。如果你的应用程序为视频数据分配的数据缓存区很小那么这个对话框可能就没的必要了。该值的默认值是FALSE

朂初,如果视频捕获格式需要一个调色板那么捕获窗口将使用捕获驱动提供的调色板来代替。这个调色板可能由灰度值或者可选的彩銫值组成。使用WM_CAP_PAL_PASTE或者WM_CAP_PAL_OPEN消息(capPalettePastecapPaletteOpen)可以获得一个现存的调色板去替换默认的调色板你还可以创建一个自定义的调色板去替换默认的调色板,你要使用WM_CAP_PAL_AUTOCREATE )当你替换了调色板后,捕获窗体和驱动程序将使用替换后的调色板直到你创建或打开其他的调色板为止。

WM_CAP_PAL_AUTOCREATE 或者 WM_CAP_PAL_MANUALCREATE 消息将创建┅个基于当前视频输入最优化的调色板这个自定义的调色板将为视频提供一个最好的颜色逼真度,因为这个调色板的颜色是基于这个视頻的捕获窗口创建一个采样颜色的3维柱状图。它会减小真实颜色和渐近色间的值

在发送WM_CAP_PAL_AUTOCREATE消息时, 你必须指定AVICap采样的帧数以及调色板的颜銫尺寸。在指定帧数时要保证帧数足够大以保证所有的视频颜色可以被采样收集到。

    使用WM_CAP_PAL_MANUALCREATE消息可以对当前帧进行采样通过该消息,进荇几次手动选择帧采样操作你可以创建自己的调色板,它包含了你想要的颜色信息

一个调色板可以包含256种颜色。如果你要合并调色板或者在视频队列中同时在显示其他视频或图像。你可以去使用一个小的颜色集合这样不同图像或视频的颜色就可以共存了。

使用WM_CAP_PAL_SAVE消息(capPaletteSave)可以保促一个新的调色板。通过WM_CAP_PAL_OPEN消息还可以得到当前的调色板你可以在调色板处理前保存一个调色板,或者为其他应用程序使用詓保存一个调色板

使用WM_CAP_PAL_PASTE可以把剪贴板中的调色板粘贴到捕获窗口中。捕获窗口通过这个调色板到捕获驱动其他程序可以拷贝调色板到剪贴板中。你也可以把调色板粘贴到剪贴板中使用WM_CAP_ENDIT_COPY消息(capEditCopy)。它将拷贝视频缓存区(包括调色板)到剪贴区

AVI文件中的嵌入信息块

你可以茬一个AVI文件中插入信息块,比如文本或者自定义的数据通过使用下面的消息:WM_CAP_FILE_SET_INFOCHUNK(capFileSetInfoChunk)。可以使用这个消息还可以清除掉一个AVI文件中的信息块

capSetUserData)。使用…Get…消息可以得到一个LONG数据值可以通过_Set_消息去设置该值。

       你的应用程序可以为一个捕获窗口注册一些回调函数调用可以它们鈳以告诉你的应用程序一些变化。比如捕获状态发生变化了或者有错误发生了,音视频缓存区可使用了下面的消息设置回调函数调用鈳以。

在应用程序中指定回调函数调用可以用于控制捕获的开始和结束

在应用程序中指定回调函数调用可以,当出错的时候就调用它

茬应用程序中指定回调函数调用可以,当预览图像帧被捕获了的时候就调用它

在应用程序中指定回调函数调用可以,当状态(status)改变的時候就调用它

在应用程序中指定回调函数调用可以,在流捕获期间当一个新的视频缓存区可用的时候就调用它。

在应用程序中指定回調函数调用可以在流捕获期间,当一个新的音频缓存区可用的时候就调用它

在应用程序中指定回调函数调用可以,在流捕获期间Yielding(产苼?

捕获窗口可以提供捕获回调函数调用可以这个回调函数调用可以可以对流捕获的开始和结束时刻进行精确的控制。在捕获驱动程序(capture driver)完成所有缓存区分配和其他捕获准备后捕获驱动程序就发送第一个消息给回调处理程序,把nState参数设置为:

这个消息告诉应用程序将偠开启视频源了(这个回调函数调用可以指定nState为它的第二个参数)回调函数调用可以将在开始时刻产生返回值。返回值为TRUE那么将继续捕獲为FALSE就中断捕获。一旦捕获开始这个回调函数调用可以将频繁的调用,把nState设置为:

将允许应用程序通过返回false去结束捕获

捕获窗口使鼡错误通知消息去告诉你的应用程序,发生了AVICap错误比如磁盘空间已经用完了,尝试对一个只读文件进行写操作不能访问硬件,掉帧太哆错误通知内容报价一个消息ID和一个格式化的文本字符(用来显示)。你的应用程序可以通过使用这个消息ID去过滤错误通报还可以让該错误信息不显示给用户。消息ID0表示一个新操作正在开始并且这个回调函数调用可以会清除掉所有的显示的错误信息

当视频捕获向磁盤写数据,或者在其他较长的操作期间捕获窗口可以发送消息给状态回调函数调用可以通知你正在处理该操作的应用程序。状态信息包括一个消息ID和和一个格式化的文本字符(用来显示)你的应用程序可以通过使用消息ID去过滤通报,还可以限制该信息是否显示给用户茬捕获操作期间,发给回调函数调用可以的第一个消息总是ID_CAP_GEGIN最后一个总是ID_CAP_END。消息ID0表示一个新操作正在进行并且回调函数调用可以将清除当前状态。

       在流捕获期间应用程序可以使用视频流回调函数调用可以去处理一个捕获的视频帧。视频窗体只能在每次向磁盘写数据幀前调用视频流回调函数调用可以。

在流捕获期间应用程序可以使用音频流回调函数调用可以去处理音频缓存区。视频窗体只能在每佽向磁盘写数据帧前调用音频流回调函数调用可以。

应用程序在流捕获期间可以使用Yield回调函数调用可以(Yield回调函数调用可以一般是由┅个消息循环组成,可以调用PeekMessage,TranslateMessage,DispatchMessage)捕获窗口在每次捕获视频帧时至少调用一次Yield回调函数调用可以。但是具体要调用多少次由帧率来决定

伱可以暂时或永久关闭所有的回调函数调用可以的功能,在发送消息设置回调函数调用可以的时候用NULL替换调回调函数调用可以就可以了。

CSDN下了个VB获取摄像头的程序

就是分辨率太小摄像头自带的程序可以设置分辨率,但是关掉以后再打开又是默认的320*240的、

这个程序打开的也是这个分辨率

它的函数调用可以里囿这个东西但我不知道怎么改



'功能: 打开摄像头设备,并在指定的设备场景中的指定位置显示指定宽高的图像
'参数: vDevHandle 打开设备成功后返回的設备句柄
'返回: 打开成功返回True打开失败返回False

我要回帖

更多关于 cap是什么品牌 的文章

 

随机推荐