我先写一个很垃圾的例子,我后续会更新的。。。
代码:
#include "tisudshl.h"
#include <algorithm>
#include <opencv2/opencv.hpp>
#include "cmdhelper.h" //这个玩意是我在映美的一个例子中看到的 xxxxx \IC Imaging Control 3.4\samples\vc10\Common
根据自身情况找找吧
using namespace DShowLib;
using namespace cv;
using namespace _DSHOWLIB_NAMESPACE;
//加载库
if (DShowLib::InitLibrary()) {
qDebug() << "InitLibrary true";
}
//创建Grabber对象
Grabber* grabber = new Grabber();
qDebug() << "grabber isvalid: " << grabber->isDevValid();
//获取设备列表,打印大小,打开列表中下标为0的设备
Grabber::tVidCapDevListPtr list_item = grabber->getAvailableVideoCaptureDevices();
int size = list_item->size();
qDebug() << "list_item.size: " << size;
qDebug() << "openDev isSuccessful: " << grabber->openDev(list_item->at(0));
//获取列表中的第一个设备,打印设备名
Grabber::tVideoCaptureDeviceItem item = list_item->at(0);
std::string basename = item.getBaseName();
qDebug() << "device name without devnumber: " << QString::fromStdString(basename);
//设置帧率
grabber->setFrameRate(0.872);
//实时显示图像
if(!grabber->isLive())
grabber->startLive();
上面测试可行,写的有点麻烦了,其实可以精简的
DShowLib::InitLibrary();
Grabber grabber;
DShowLib::Grabber::tVideoCaptureDeviceItem item = grabber->getDev();
grabber->openDev(item );
if(!grabber->isLive())
grabber->startLive();
我会在更新的,下集预告:获取buffer