Basler相机和DIPlib
Basler camera and DIPlib
如何将 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);
我在网上搜索了 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");
有关详细信息,请参阅 this constructor as well as this section of the DIPlib documentation 的文档。
将 DIPlib 更新到当前主分支(我刚刚推送 this change)以上简化为:
dip::Image image(
static_cast<uint8_t*>(pylonImage.GetBuffer()) // data pointer
{ ptrGrabResult->GetWidth(),
ptrGrabResult->GetHeight() }, // width and heigh
3 // 3 channels
);
image.SetColorSpace("RGB");
如何将 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);
我在网上搜索了 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");
有关详细信息,请参阅 this constructor as well as this section of the DIPlib documentation 的文档。
将 DIPlib 更新到当前主分支(我刚刚推送 this change)以上简化为:
dip::Image image(
static_cast<uint8_t*>(pylonImage.GetBuffer()) // data pointer
{ ptrGrabResult->GetWidth(),
ptrGrabResult->GetHeight() }, // width and heigh
3 // 3 channels
);
image.SetColorSpace("RGB");