急!已经有图像数据,想创建一个8位256级的位图,并把它显示出来。该如何下手? 在线等!

新生代码农NJ 2008-04-02 01:51:23
已经有图像数据,想创建一个8位256级的位图,并把它显示出来。在MFC中该如何下手?用的是单文档



如何按照自己的要求创建和显示图像,实现数据图像化!
...全文
142 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
新生代码农NJ 2008-04-04
  • 打赏
  • 举报
回复
我用的单文档程序,在程序中新添加的菜单命令“读取数据”,单击该菜单后出现以对话框,在该对话框中实现获得CCD采集到的一行一行的数据(即图像数据),把这些数据图像化,得到的图像显示在视图中。
这个对话框是用模态的好,还是非模态的好呢?
谢谢!
新生代码农NJ 2008-04-04
  • 打赏
  • 举报
回复
如果是DIB位图,必需定义一个封装DIB位图操作功能的CDib类吧。
fyrsl 2008-04-04
  • 打赏
  • 举报
回复
2楼方法不错!
新生代码农NJ 2008-04-04
  • 打赏
  • 举报
回复
还有没有人提供帮助的啊!
新生代码农NJ 2008-04-02
  • 打赏
  • 举报
回复
能不能给个例子参考一下啊!
睡在床板下_ 2008-04-02
  • 打赏
  • 举报
回复
可以看我的blog
lc2236 2008-04-02
  • 打赏
  • 举报
回复
1.读取图像数据
2.创建内存位图
3.创建灰度调色板(for r=g=b =0~255)
4.图像是8b直接写像素值,不是8bit创建图像查找表
新生代码农NJ 2008-04-02
  • 打赏
  • 举报
回复
图像重建如何实现?
新生代码农NJ 2008-04-02
  • 打赏
  • 举报
回复
谢谢!
alfwolf 2008-04-02
  • 打赏
  • 举报
回复
给你一个函数吧
这个函数传入参数是彩色的位图数据指针,里面有些变量是我的程序根据自己需要设置的。仅供参考
HANDLE CXXXCapture::Color2Gray(HANDLE pBits)
{
if(pBits == NULL)
{
return pBits;
}

//将RGB模式的位图转换为256色灰度位图
char *pgray = new char[BmpLength];
char *read = (char*)pBits + dwPixOffset;
char *write = pgray;

//构造调色板信息
for(int i=0;i<256;i++)
{
*(write+i*4) = i;
*(write+i*4+1) = i;
*(write+i*4+2) = i;
*(write+i*4+3) = 0;
}
write += sizeof(RGBQUAD)*256;

int r,g,b;
float Y;
BYTE gray;
for(int h=0;h<nDisplayHeight;h++)
{
for(int w=0;w<nDisplayWidth;w++)
{
g = (unsigned char)*read++;
b = (unsigned char)*read++;
r = (unsigned char)*read++;
//提取灰度分量
Y = (float)(r*0.299+g*0.587+b*0.114);
gray = (BYTE)Y;
*write = gray;
write++;
}
}

//拷贝新的灰度位图调色板信息和像素数据
memcpy((char*)pBits + dwPixOffset, pgray, nDisplayWidth*nDisplayHeight + sizeof(RGBQUAD)*256);

//释放分配的临时空间
delete pgray;

return pBits;
}
菜牛 2008-04-02
  • 打赏
  • 举报
回复
有了数据,构造位图信息头,用SetDIBitsToDevice显示。

19,469

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧