首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Basler相机与DIPlib

Basler相机与DIPlib
EN

Stack Overflow用户
提问于 2020-04-21 17:17:27
回答 1查看 339关注 0票数 1

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

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

代码语言:javascript
复制
// 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);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-22 14:44:44

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

代码语言:javascript
复制
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更新到当前的主分支(我刚刚推动了这一变化)上面简化为:

代码语言:javascript
复制
dip::Image image(
   static_cast<uint8_t*>(pylonImage.GetBuffer()) // data pointer
   { ptrGrabResult->GetWidth(),
     ptrGrabResult->GetHeight() },               // width and heigh
   3                                             // 3 channels
);
image.SetColorSpace("RGB");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61349290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档