1

如何将 Pylon 图像(来自 Basler 相机库)转换为 C++ 语言中的 DIPlib 图像?

下面的代码说明了如何将 Pylon 图像转换为 OpenCV 图像:

// Convert the grabbed buffer to a pylon image.
formatConverter.Convert(pylonImage, ptrGrabResult);

// Create an OpenCV image from a pylon image.
openCvImage = cv::Mat(ptrGrabResult->GetHeight(), ptrGrabResult->GetWidth(), CV_8UC3, (uint8_t *)pylonImage.GetBuffer());
cvtColor(openCvImage, openCvImage, COLOR_BGR2GRAY);
4

1 回答 1

0

我在网上搜索了 Pylon API 的文档,但找不到。尽管如此,使用您提供的 OpenCV 示例,很容易在 DIPlib 中进行等效操作:

dip::Image image(
   NonOwnedRefToDataSegment(pylonImage.GetBuffer()), // a random, non-owning pointer
   pylonImage.GetBuffer(),          // data
   dip::DT_UINT8,                   // pixel type (8-bit unsigned)
   { ptrGrabResult->GetWidth(),
     ptrGrabResult->GetHeight() },  // width and heigh
   {},                              // this one can stay empty
   dip::Tensor{3}                   // 3 channels
);
image.SetColorSpace("RGB");

有关详细信息,请参阅此构造函数的文档以及DIPlib 文档的这一部分


将 DIPlib 更新到当前的 master 分支(我刚刚推送了这个更改)上面简化为:

dip::Image image(
   static_cast<uint8_t*>(pylonImage.GetBuffer()) // data pointer
   { ptrGrabResult->GetWidth(),
     ptrGrabResult->GetHeight() },               // width and heigh
   3                                             // 3 channels
);
image.SetColorSpace("RGB");
于 2020-04-22T14:44:44.860 回答