image - 如何将单 channel IplImage* 转换为位图^

标签 image bitmap opencv picturebox

如何将单 channel IplImage(灰度)深度 = 8 转换为位图?
以下代码运行,但以 256 色而不是灰度显示图像。 (颜色与原版差别很大)

btmap = gcnew Bitmap(
 cvImg->width , 
 cvImg->height , 
 cvImg->widthStep , 
 System::Drawing::Imaging::PixelFormat::Format8bppIndexed,
 (System::IntPtr)cvImg->imageData)
 ;

我相信我的问题在于 PixelFormat。我尝试将图像缩放为 16 位并将像素格式设置为 16bppGrayscale,但这会在上传图像时使表单崩溃。

目标是 C# 形式的 PicturePox。谢谢。

最佳答案

您需要创建 ColorPalette 实例,用灰度调色板填充它并分配给 btmap->Palette 属性。

编辑:实际上,创建 ColorPalette 类有点棘手,最好直接在 btmap->Palette 中修改颜色条目。将这些条目设置为 RGB(0,0,0)、RGB(1,1,1) ... RGB(255,255,255)。像这样的东西:

颜色调色板^调色板= btmap->调色板;

数组<颜色>^ 条目 = 调色板->条目;

对于 (int i = 0; i < 256;++i)

{

条目[i] = 颜色::FromArgb(i, i, i);

}

关于image - 如何将单 channel IplImage* 转换为位图^,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3656369/

相关文章:

android - 如何在 Android 中将整个 ListView 保存为图像?

c# - 生成带有一些透明部分的图像

python - 如何使用 Pyglet 在 Python 中调整图像大小

java - 如何给html img src 的绝对路径?

java - 在 Java Swt 和内存消耗中缩放图像

c# - 保存位图时发生 GDI+ 异常中的一般错误

python cv2.circle 子像素绘图

python-3.x - 为图像形态Python创建结构元素

python - 相机不适用于 opencv 但适用于 streamer

javascript - 在 cordova inappbrowser 中添加按钮以隐藏它编辑 : and add image via Javascript to inappbrowser