【问题标题】:Retrive frames from FLIR cameras using OpenCV使用 OpenCV 从 FLIR 相机中检索帧
【发布时间】:2021-01-07 02:08:57
【问题描述】:

我正在尝试连接 FLIR 相机并使用 OpenCV 处理帧。我用网线连接了摄像头,但 VideoCapture 对象未成功关联到摄像头;


cv::VideoCapture cam(0);            

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

看起来 OpenCv 找不到它。互联网电缆用作相机的电源,只是提到这可能是相关的。 我可以使用 Spinnaker SDK 来检索帧,但有没有办法不使用 sdk 并直接使用 OpenCV

【问题讨论】:

  • 有网线?你知道摄像机的 IP 地址吗?
  • 我最近使用了一台 FLIR 灰点相机。您应该明确地查看 Spinnaker SDK - 它是 FLIR 的官方 SDK - 安装 SDK 后,您还将看到有关如何将其与 OpenCV 一起使用的示例和文档。
  • 我有文档,但我看不到任何关于 OpenCV 的信息。我拥有的文档来自 SpinView 帮助。安装是什么意思,这只是一个 SDK。我不安装它只是将它添加到项目目录中。
  • 它是一个独立的安装程序,它带有 spinview (API)。在安装文件夹中有一堆关于如何使用它的示例代码,包括将它与 opencv 一起使用。只需google“spinaker下载”即可找到

标签: c++ opencv flir


【解决方案1】:

任何对未来如何使用从 PointGray 相机获取的图像在 OpenCv 中工作感兴趣的人都可以:

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

您必须从 Point Gray 网站 (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.flir.ca/support-center/iis/machine-vision/application-note/getting-started-with-opencv/

【讨论】:

  • “工业相机有其专有驱动程序”并不完全正确。计算机视觉相机是 USB3 vision (U3V) 或 GigE Vision,两者都是 GemICam 标准的层。 OpenCV 可能不支持这个开箱即用。 U3V 标准可能比 USB 视频更好。请参阅:genicam。它们支持更好地控制机器视觉应用、非常高的帧速率以及各种动态范围,以及多个成像设备的映射/同步。
【解决方案2】:

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

【讨论】:

  • 我可以用第三方软件打开相机。我只是想看看我是否可以避免使用带有 open cv 的 SDK
  • 如果摄像机使用 RTSP 广播,你可以给 opencv 提供 RTSP 连接并连接到摄像机 VideoCapture stream1("rtsp://");
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-05
  • 1970-01-01
  • 2017-05-18
  • 2023-04-06
  • 2019-12-09
  • 1970-01-01
相关资源
最近更新 更多