我在this主题上找到了大约10个问题,但我无法得到任何答案,抱歉。
我基本上试图使用来自dslr相机的输入来创建一个开放的cv应用程序。
此刻,我正在使用处理,从虹吸管获取相机输入,然后在处理有限的开放cv上使用它。由于我需要使用姿势估计,我无法在处理时进行。另外,我使用虹吸管,opencv和artoolkit库只有10 fps ...对我的原型不好。
我正在尝试使用open cv 3.0。我使用网络摄像头获得了校准样本文件。我只是想用EDSDK替换dslr相机的网络摄像头输入。但是我发现作为参考的所有代码都是完全断开的(不同的版本/语言)。
SDK附带的EDSDK示例文件过于复杂,因此我无法推断出代码。我不需要任何复杂性(UI,按钮,存储卡访问等)。只是用作网络摄像头的实时摄像头输入。
这是我在opencv上检索网络摄像头输入时可以做的最简单的代码。
#include "opencv2/opencv.hpp"
#import "EDSDK.h" //probably working fine
using namespace cv;
int main(int, char**)
{
VideoCapture cap(0); // replace here
if(!cap.isOpened()) // replace here
return -1;
namedWindow("edges",1);
for(;;)
{
Mat frame;
cap >> frame; // replace here
imshow("frame", frame); //shows it
if(waitKey(30) >= 0) break;
}
return 0;
}
有任何建议可以帮助我更换这行中的网络摄像头吗?
由于
答案 0 :(得分:1)
EDSDK.h的存在意味着您应该使用相机API来获取数据,而不是VideoCapture cap(0)
。开箱即用的OpenCV可以仅使用VideoCapture用于XIMEA相机(如果你在makefile中打开它)。所以你必须在相机的API示例中找到如何获取数据指针,将其转换为通用格式之一,然后使用构造函数将此指针复制到Mat.data:
Mat(image.height, image.width, CV_8UC3, dataPointer)