OpenCV to FlyCapture2 Image
OpenCV to FlyCapture2 Image
我有一个大黄蜂2,我正在使用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吗?
我在灰点工作,我会尽力在这里提供帮助。请注意,尽管您可以通过我们的支持网站ptgray.com/support/直接与我们联系,我们也可以帮助您。
查看您所附的代码和openCV源代码,当您制作cvImage时,您只是将指针重新分配给数据,而不是制作数据的实际副本。
因此,只要数据的大小保持不变(即保持每像素24位),您对openCV图像所做的任何更改都应该反映在flycapture(cf2mg)数据中,并且能够正确保存。
如果您能解释您在尝试移回flycapture图像时遇到的问题,或者向我们发送您如何操作的源代码,我们可以进一步帮助您。
总之,我希望在您提供的代码之后,您对cvImage所做的任何操作都应该反映在cf2Img中,而不需要转换回,假设您没有更改图像的位深度。
我希望这会有所帮助,但请让我知道我是否可以帮助澄清任何事情,或者你是否可以提供一个无法转换回fc2的例子。
谢谢,点灰支持
我用FlyCapture2 v2.13.3.61_x64和Visual Studio:解决了灰度级8位深度图像的问题
using namespace FlyCapture2;
[...]
Camera cam;
[...]
// Acquire the image
cam.RetrieveBuffer(&image);
if (error != PGRERROR_OK)
{
PrintError(error);
break;
}
// Copy FlyCapture2 image into OpenCV struct
// convert to rgb
Image rgbImage;
image.Convert( FlyCapture2::PIXEL_FORMAT_BGR, &rgbImage );
// convert to OpenCV Mat
unsigned int rowBytes =
(double)rgbImage.GetReceivedDataSize()/(double)rgbImage.GetRows();
cv::Mat img = cv::Mat(rgbImage.GetRows(), rgbImage.GetCols(), CV_8UC3,
rgbImage.GetData(),rowBytes);
// show the captured image
cv::imshow("image", img);
key = cv::waitKey(30);
这对我也有好处:
using namespace FlyCapture2;
const int col_size = 24;
const int row_size = 480;
const int data_size = row_size * col_size;
[...]
// Grab camera grayscale image and convert into
// an OpenCV image
void GrabImages( Camera* pcam,
IplImage* pimg,
IplImage* pimg_bw,
CvMemStorage* pstorage,
int cnt )
{
Image image;
[...]
// Retrieve image before starting main loop
Error error = pcam->RetrieveBuffer( &image );
if ( error != PGRERROR_OK )
{
// TODO.
}
// Copy FlyCapture2 image into OpenCV struct
memcpy( pimg->imageData, image.GetData(), data_size );
// Save the bitmap to file
cvSaveImage( "orig.bmp", pimg );
[...]
- 以线程安全的方式调用"QQuickPaintedItem::updateImage(const QImage&image)"(no QThread)
- Inference pytorch C++ with alexnet and cv::imread image
- 如何在QTextEdit中添加URL或IMAGE-URL
- JNA 将 HICON 转换为 Java Image
- 如何在c++中将image.jpg转换为image.ppm
- Magick++ Blob to Image Error
- 将带有零的 Mat 内核填充到 Image 的大小
- 运行"OpenPose C++ API Tutorial - Example 3 - Body from image"失败
- magick 对magick :: image :: columns的未定义引用
- 通过QT WebSocket将OpenCV Mat Image发送到HTML客户端
- OpenCV Image Mat to 1D CHW(RR...R, GG..G, BB..B) vector
- 如何使用由 PNG 数据构建的 blob 初始化 Magick::Image obj(PNG 由 cv::imencod
- C++ 我的函数在我的 Image 类中工作,但不在主例程中工作
- 从标准::basic_string撰写cv::Mat <char>Image
- (gtk:4783): gtk-关键**: gtk_image_set_from_pixbuf: 断言'GTK_IS_IMAGE (image)'失败
- "The image cannot be displayed error"通过套接字发送图像时C++
- PE 中的"Isolated Image"属性是什么?
- rosserial publish sensor_msgs/Image from windows
- 如何将System :: Drawing :: Image^转换为未签名的字符
- OpenCV to FlyCapture2 Image