我有Creative Sync HD,我看到OpenCV不支持高于640x480的分辨率。我找到了一个解决方案 - videoinput.lib,但我不知道如何使用它。我只是为VC 2008下载了一个已编译的lib,但我在2012年工作(也许这就是问题所在)。好的,我把.h
放在项目中,将.lib
放在程序文件的VC11 lib文件夹中。我转到链接器并将lib添加到Additional Dependencies。现在我尝试编写代码,但是我找不到videoinput的任何文档,我也不太擅长OpenCV。有人可以给我一些简单的代码来检查它是否有效吗?我用过:
#include <stdafx.h>
#include "videoInput.h"
#include "opencv/cv.h"
#include "opencv/highgui.h"
#include "opencv2\opencv.hpp"
int main()
{
videoInput VI;
int numDevices = VI.listDevices();
int device1= 0;
VI.setupDevice(device1);
int width = VI.getWidth(device1);
int height = VI.getHeight(device1);
IplImage* image= cvCreateImage(cvSize(width, height), 8, 3);
unsigned char* yourBuffer = new unsigned char[VI.getSize(device1)];
cvNamedWindow("test");
while(1)
{
VI.getPixels(device1, yourBuffer, false, false);
image->imageData = (char*)yourBuffer;
cvConvertImage(image, image, CV_CVTIMG_FLIP);
cvShowImage("test", image);
if(cvWaitKey(15)==27) break;
}
VI.stopDevice(device1);
cvDestroyWindow("test");
cvReleaseImage(&image);
return 0;
}
但我有很多错误(gt,amp,imagedata undefined)。也许我安装了videoinput.lib错误。我确信OpenCV运行良好,我使用的是最新版本(2.4.6)。
答案 0 :(得分:1)
VideoInput lib已经是Opencv的一部分(它是Windows上的默认Capture实现)。
所以我想,再次编译它不会有助于你原来的问题。