我试图连接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
答案 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;
}