已经有一幅matlab rgb图像矩阵的RGB数组,怎么才能显示出来

03-0403-04
03-0403-04
03-0403-04
@ 适新素材网
@ 版权所有图形处理/算法
已经有一幅图像的RGB数组,怎么才能显示出来
我是在vc6.0,平台下,基于对话框的MFC程序,现在已经获得了一幅图像的RGB数据,是一维数组,请问怎么才能显示出来,用不用picture控件都行,请给出一个具体实现的代码,谢谢
怎么没人嘛?
StretchDIBits...
请把你的代码给贴出来。显示的方式有很多&一般情况下位图bmp格式的文件比较简单。
不知道你的图片是什么格式的??
直接调用opencv吧。这个比你自己写要简单多了。bmp格式的文件压缩肯定要失真不少的。用opencv比较省事
试试CxImage吧,不难实现。
把数据给我,我给你显示,像素数据你都有了
最起码有一打方法可以显示。
获得一个控件的DC,
然后SetPixel就好了。
BITMAPINFOHEADER&
BITMAPINFO&
HBITMAP&hB
memset(&bih,0,sizeof(BITMAPINFOHEADER));
memset(&bi,0,sizeof(bi));
bih.biBitCount=&24;
bih.biHeight=&
bih.biPlanes=&1;
bih.biSize=&40;
bih.biWidth=&W
bi.bmiHeader=&
m_hdc=CreateCompatibleDC(hdc);
m_hBitmap=CreateDIBSection(hdc,&bi,DIB_RGB_COLORS,(void**)&Drawbit,NULL,0);
memcpy(Drawbit,&picbit,&size);//图像数据给Drawbit
m_hBitmap=(HBITMAP)SelectObject(m_hdc,m_hBitmap);
BitBlt(hdc,0,0,Width,height,m_hdc,0,0,SRCCOPY);
m_hBitmap=(HBITMAP)SelectObject(m_hdc,m_hBitmap);
DeleteObject(m_hBitmap);
DeleteDC(m_hdc);
我也遇到这问题,看看
回复
即使是一小步也想与你分享查看: 7266|回复: 6|关注: 0
Matlab怎样显示出RGB数组
<h1 style="color:# 麦片财富积分
新手, 积分 5, 距离下一级还需 45 积分
用matlab怎么样能够显示RGB值分别是多少?大家帮忙解答一下。谢谢!
<h1 style="color:# 麦片财富积分
可以用r=RGB(:,:,1);
b=RGB(:,:,3);来显示分量
<h1 style="color:# 麦片财富积分
如果你要显示某个像素点的RGB值,比如坐标点(10,12)的RGB,可以键入RGB(10,12,:)然后回车就可以得到所求值了
<h1 style="color:# 麦片财富积分
谢谢!明白
关注者: 189
RGB图像矩阵一般形式为m*n*3的矩阵
如果理解为三层二维矩阵叠加的话,那么高度信息(就是对应于x、y的三个值)就是该位置的RGB值向量
<h1 style="color:# 麦片财富积分
RGB图像矩阵一般形式为m*n*3的矩阵
如果理解为三层二维矩阵叠加的话,那么高度信息(就是对应于x、y的三个 ...
理解了 太感谢了
<h1 style="color:# 麦片财富积分
如果你要显示某个像素点的RGB值,比如坐标点(10,12)的RGB,可以键入RGB(10,12,:)然后回车就可以得到 ...
我按照您说的试了试,为什么显示的都是1啊
Powered by怎么将二维数组用图像显示 出来 - VC/MFC当前位置:& &&&怎么将二维数组用图像显示 出来怎么将二维数组用图像显示 出来&&网友分享于:&&浏览:411次求教:如何将二维数组用图像显示 出来我程序中得到了一个比较大的二维数组,256*256的,想用图像的形式把它显示在一个对话框里,在网上搜索后用了下面的代码:但是显示的不对, & int iWidth, iHeight, iBytesW & iWidth = 256; & iHeight = 256; & iBytesWidth = (iWidth % 4) ? (iWidth / 4 + 1) * 4 : iW & HANDLE hMem = GlobalAlloc(GMEM_MOVEABLE, iBytesWidth * iHeight * 3); & BYTE *Image = (BYTE*)GlobalLock(hMem);for(i=0;i&16;i++)
//应该是这里赋值的问题,但是为什么错了呢,应该怎样呢?for(j=0;j&16;j++){*(Image+i*iBytesWidth+j*3)=int(255*arry0[i][j]);*(Image+1+i*iBytesWidth+j*3)=int(255*arry0[i][j]);*(Image+2+i*iBytesWidth+j*3)=int(255*arry0[i][j]);} & BITMAPINFO & ZeroMemory(&bmi, sizeof(BITMAPINFO)); & bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); & bmi.bmiHeader.biWidth = iW & bmi.bmiHeader.biHeight = iH & bmi.bmiHeader.biPlanes = 1; & bmi.bmiHeader.biBitCount = 24; & bmi.bmiHeader.biCompression = BI_RGB; & ::SetDIBitsToDevice(dc.GetSafeHdc(), 0, 0, iWidth, iHeight, 0, 0, 0, iHeight, Image, &bmi, DIB_RGB_COLORS); & GlobalUnlock(hMem); & GlobalFree(hMem); & ------解决方案--------------------
iBytesWidth = (iWidth % 4) ? (iWidth / 4 + 1) * 4 : iW& //改为iBytesWidth=(iWidth*24+31)/32*4;
一个像素占3个字节,24位。然后转化为4字节整数倍不是256X256吗?怎么循环i j成了16?另外还需指定bmi.bmiHeader.biSizeImage = (Width*24+31)/32*4*H&
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有

我要回帖

更多关于 matlab显示rgb图像 的文章

 

随机推荐