OpenCV到FlyCapture2图像

时间:2014-09-02 21:00:49

标签: c++ opencv image-processing flycapture

我有一个bumblebee2,我正在使用flycapture SDK来捕获传入的图像。然后我将左flycapture2图像转换为openCV格式,以便我可以对它进行一些基本的操作。然后我想把它反馈给Flycapture SDK,但我似乎无法弄清楚如何。要将Flycapture转换为OpenCV,请执行以下操作:

FlyCapture2::Image cf2Img; 
grabbedImage.Convert(FlyCapture2::PIXEL_FORMAT_BGR, &cf2Img ); 
unsigned int rowBytes = (double)cf2Img.GetReceivedDataSize()/(double)cf2Img.GetRows(); 
cv::Mat cvImage = cv::Mat( cf2Img.GetRows(), cf2Img.GetCols(), CV_8UC3, cf2Img.GetData(), rowBytes ); 

然后我做了我的操作(阈值/轮廓检测/背景去除等),然后我想将这个图像反馈给Flycapture。我试图将其转换回来并没有奏效。

有没有人在将OpenCV格式带回Flycapture之前有任何代码?

1 个答案:

答案 0 :(得分:1)

我为Point Grey工作,我会尽力帮助。请注意,您可以通过我们的支持网站ptgrey.com/support/直接与我们联系,我们也可以为您提供帮助。

查看附加的代码并查看openCV源代码,当您创建cvImage时,您只是将指针重新分配给数据,而不是制作数据的实际副本。

因此,只要数据大小保持不变(即每个像素保持24位),您对openCV图像所做的任何更改都应该反映在flycapture(cf2Img)数据中,并且能够妥善保存。

如果你能解释你试图回到flycapture图像的问题,或者向我们发送你如何做的源代码,我们可以帮助你。

总而言之,我希望你提供的代码之后对cvImage所做的任何操作都应该反映在cf2Img中而不需要转换回来,假设你没有改变图像的位深度。

我希望有所帮助,但如果我能帮助澄清任何内容,或者如果你能提供一个未能转换回fc2的例子,请告诉我。

谢谢你, 点灰支持