我有一个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之前使用的任何代码?

最佳答案

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

查看附加的代码和openCV源代码,制作cvImage时,只是在重新分配指向数据的指针,而不是在实际复制数据。

因此,只要数据大小保持不变(即,将其保持在每个像素24位),对openCV图像所做的任何更改都应反射(reflect)在flycapture(cf2Img)数据中,并能够正确保存。

如果您可以解释遇到的问题,或者试图将其移回flycapture图像,或者将您的操作方式的源代码发送给我们,我们将为您提供进一步帮助。

总而言之,我希望您在提供的代码之后对cvImage所做的任何操作都应仅反射(reflect)在cf2Img中,而无需进行转换,前提是您不更改图像的位深度。

希望能对您有所帮助,但是请让我知道是否可以帮助您澄清任何事情,或者是否可以提供无法转换回fc2的示例。

谢谢,
点灰色支持

09-06 11:53