我已经找到了有关this主题的大约10个问题,但对不起,我没有从中得到任何答案。

我基本上是想使一个开放的cv应用程序与dslr相机的输入一起运行。

目前,我正在使用处理,从虹吸管获取相机输入,然后在有限的开放式简历上使用它。由于我需要使用姿势估计,因此无法在处理中做到这一点。另外,使用虹吸管,opencv和artoolkit库只能得到10 fps ...对我的原型(prototype)不利。

我正在尝试使用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;
}

有什么建议可以帮助我替换这行中的网络摄像头吗?

谢谢

最佳答案

EDSDK.h的存在意味着您应该使用相机API来获取数据,而不是VideoCapture cap(0)。开箱即用,OpenCV只能在afaik上将VideoCapture用于XIMEA摄像机(如果在makefile中将其打开)。因此,您必须在相机的API示例中找到如何获取数据指针,将其转换为通用格式之一,然后使用构造函数将此指针复制到您的Mat.data中:

Mat(image.height, image.width, CV_8UC3, dataPointer)

关于opencv - 从DSLR(EDSDK)实时流式传输到Open CV,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31590689/

10-12 03:42