如何将单通道 IplImage* 转换为位图^
如何将单通道 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。谢谢。
How can I convert single channel IplImage (grayscale), depth=8, into a Bitmap?
The following code runs, but displays the image in 256 color, not grayscale. (Color very different from the original)
btmap = gcnew Bitmap(
cvImg->width ,
cvImg->height ,
cvImg->widthStep ,
System::Drawing::Imaging::PixelFormat::Format8bppIndexed,
(System::IntPtr)cvImg->imageData)
;
I believe my problem lies in the PixelFormat. Ive tried scaling the image to 16bit and setting the pixel format to 16bppGrayscale, but this crashes the form when uploading the image.
The destination is a PicturePox in a C# form.Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您需要创建 ColorPalette 实例,用灰度调色板填充它并分配给 btmap->Palette 属性。
编辑:实际上,创建 ColorPalette 类有点棘手,最好直接在 btmap->Palette 中修改颜色条目。将这些条目设置为 RGB(0,0,0)、RGB(1,1,1) ... RGB(255,255,255)。像这样的东西:
You need to create ColorPalette instance, fill it with grayscale palette and assign to btmap->Palette property.
Edit: Actually, creating ColorPalette class is a bit tricky, it is better to modify color entries directly in btmap->Palette. Set these entries to RGB(0,0,0), RGB(1,1,1) ... RGB(255,255,255). Something like this:
这种方法可以正确地创建 IPLimage 的位图。
this way is correct to create a bitmap of a IPLimage.