好的,对于那些对未来如何使用从 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/