gpt4 book ai didi

c# - 将 byte[] 转换为 Emgu/OpenCV 图像

转载 作者:太空宇宙 更新时间:2023-11-03 21:02:32 26 4
gpt4 key购买 nike

我有一个表示灰度图像的字节数组,我想使用 Emgu 包装器在 C# 中与 openCV 一起使用。我想弄清楚如何在不首先将其转换为 System.Drawing.Bitmap 的情况下将其转换为 Emu.CV.Image

到目前为止,this Image 的构造函数看起来很有前途。看起来它需要像素行、列,然后是包含我的数据的数组来构建图像。但是,它希望它们采用一种奇怪的格式,我正在为如何正确构造 TDepth[,,] 数据 参数而苦苦挣扎。

这是我目前所拥有的:

// This gets initialized in the constructor and filled in with greyscale image data elsewhere in the code:
byte[] depthPixelData

// Once my depthPixelData is processed, I'm trying to convert it to an Image and this is where I'm having issues
Image<Gray, Byte> depthImage = new Image<Gray, Byte>([depthBitmap.PixelHeight, depthBitmap.pixelWidth, depthPixelData]);

Visual Studio 让我明白,仅仅传入一个数组并不能解决问题,但我不知道如何用我的方法构造必需的 TDepth[,,] 对象要传递给 Image 构造函数的像素数据。

这段代码需要以 ~30fps 的速度运行,所以我试图在对象创建、内存分配等方面尽可能高效。

最佳答案

另一种解决方案是仅使用图像的宽度和高度来创建 EMGU.CV.Image。然后你可以这样做:

byte[] depthPixelData = new byte[640*480]; // your data

Image<Gray, byte> depthImage = new Image<Gray, byte>(640, 480);

depthImage.Bytes = depthPixelData;

只要宽高正确,宽度能被4整除(Emgu.CV.Image的实现方式)应该没有问题。如果您不需要保存对象,您甚至可以重用 Emgu.CV.Image 对象,只需更改每一帧的字节。

关于c# - 将 byte[] 转换为 Emgu/OpenCV 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29153967/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com