我有一个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之前有任何代码?
答案 0 :(得分:1)
我为Point Grey工作,我会尽力帮助。请注意,您可以通过我们的支持网站ptgrey.com/support/直接与我们联系,我们也可以为您提供帮助。
查看附加的代码并查看openCV源代码,当您创建cvImage时,您只是将指针重新分配给数据,而不是制作数据的实际副本。
因此,只要数据大小保持不变(即每个像素保持24位),您对openCV图像所做的任何更改都应该反映在flycapture(cf2Img)数据中,并且能够妥善保存。
如果你能解释你试图回到flycapture图像的问题,或者向我们发送你如何做的源代码,我们可以帮助你。
总而言之,我希望你提供的代码之后对cvImage所做的任何操作都应该反映在cf2Img中而不需要转换回来,假设你没有改变图像的位深度。
我希望有所帮助,但如果我能帮助澄清任何内容,或者如果你能提供一个未能转换回fc2的例子,请告诉我。
谢谢你, 点灰支持