2016年7月14日
Capture类:从摄像头或者视频文件中取图像
命名空间:Emgu.CV
Capture类的构造函数:4个
public Capture()//使用默认摄像头
public Capture(
int camIndex//camINdex是int类型,从0开始(具体的官方文档也没说清楚)
)//使用指定的摄像头
public Capture(
string fileName
)//使用文件名或者视频流的url
这种构造方法应该是最为常用的,可以直接打开一个视频文件。
例:Capture myCapture = new Capture(filepath);
public Capture(
CaptureType captureType//Emgu.CV.CvEnum.CaptureType
)//使用特定摄像头
注:Emgu.CV.CvEnum.CaptureType可以取
Member name | Value | Description | |
| Any | 0 | Auto detect |
| Mil | 100 | MIL proprietary drivers |
| Vfw | 200 | Platform native |
| V4L | 200 | Platform native |
| V4L2 | 200 | Platform native |
| Firewire | 300 | IEEE 1394 drivers |
| IEEE1394 | 300 | IEEE 1394 drivers |
等等,要深入了解的请查看emgucv的文档。
方法:
public void Dispose()//处理函数实现了IDisposable接口(继承自DisposableObject)
//释放capture对象的资源
public virtual void DuplexQueryFrame()//WCF下查询一帧
public virtual void DuplexQuerySmallFrame()//WCF下查询一小帧
public double GetCaptureProperty(
CapProp index
)//获取capture对象的一些属性
CapProp Enumeration:
比较常用的几个枚举:
PosMsec:当前视频所在的毫秒数
PosFrames:当前视频所在帧数
PosAviRatio:当前视频位置在总视频中的相对位置
FrameWidth:帧宽
FrameHeight:帧长
Fps:帧速
FrameCount:帧数
Format:格式
public virtual bool Grab()//判断下一帧是否存在,并且使用后capture指向下一帧
public void Pause()//暂停grab如果grab在运行
public virtual Mat QueryFrame()//查询一帧(bgr颜色空间),并且使用后capture指向下一帧
public virtual Mat QuerySmallFrame()//一半长一半宽,称为small,通常与wcf搭配使用
public virtual bool Retrieve(
IOutputArray image,//输出的图像结构
int flag = 0//可选参数
)//grab之后得到一帧灰度图像
public bool SetCaptureProperty(
CapProp property,//要设置哪个属性
double value//要设置的值
)//设置capture的属性
public void Start()//在一个分开的线程中开始grab。一旦开始,使用ImageGrabbed event handler 和 RetrieveGrayFrame/RetrieveBgrFrame 去获得图像帧。
public void Stop()//停止grab线程
Capture属性
CaptureSource:capture的类型
FlipHorizontal:转成水平
FlipVertical:转成垂直
FlipType:得到或者设置flip的种类
Height:capture的高
Width:capture的宽
事件
public event EventHandler ImageGrabbed
//当grab的时候,这个事件被call