使用OpenCV从FLIR摄像机中检索帧

时间:2019-03-06 13:33:39

标签: c++ opencv flir

我试图连接FLIR cammera,并使用OpenCV处理帧。我用网络电缆连接了摄像机,但是VideoCapture对象未成功与凸轮关联;


cv::VideoCapture cam(0);            

    if (cam.isOpened() == false) {                               
        std::cout << "error: capWebcam not accessed successfully\n\n";      
        _getch();                                                          
        return(0);                                                          
    }

似乎OpenCv找不到它。互联网电缆是Cammera的电源,只是提到它是否合适。 我可以使用Spinnaker SDK来检索框架,但是有某种方式不使用sdk并直接使用OpenCV

2 个答案:

答案 0 :(得分:0)

cv :: VideoCapture cam(0);适用于安装在PC上的相机 查看您是否可以使用VLC或任何其他应用程序打开 您可能需要通过与摄像机的RTSP连接打开VideoCapture

答案 1 :(得分:0)

对于将来对如何使用从PointGray相机获得的imagies在OpenCv中工作感兴趣的人来说,好吧:

工业相机具有其专有的驱动程序,它们不使用操作系统的标准视频接口。这是正常现象,因为这些摄像机非常复杂,通常用于更复杂的情况下,在这些情况下您需要对摄像机进行完全控制。

您必须从Point Grey网站(https://www.ptgrey.com/support/downloads)下载相机的SDK,并自己实现捕获。

然后,您可以将捕获的缓冲区转换为OpenCV Mat。

int ConvertToCVmat(ImagePtr pImage)
{
    int result = 0;
    ImagePtr convertedImage = pImage->Convert(PixelFormat_BGR8, NEAREST_NEIGHBOR);

    unsigned int XPadding = convertedImage->GetXPadding();
    unsigned int YPadding = convertedImage->GetYPadding();
    unsigned int rowsize = convertedImage->GetWidth();
    unsigned int colsize = convertedImage->GetHeight();

    //image data contains padding. When allocating Mat container size, you need to account for the X,Y image data padding. 
    Mat cvimg = cv::Mat(colsize + YPadding, rowsize + XPadding, CV_8UC3, convertedImage->GetData(), convertedImage->GetStride());
    namedWindow("current Image", CV_WINDOW_AUTOSIZE);
    imshow("current Image", cvimg);
    resizeWindow("current Image", rowsize / 2, colsize / 2);
    waitKey(1);//otherwise the image will not display...

    return result;
}

这也很有帮助https://www.ptgrey.com/tan/10861