社区
图形处理/算法
帖子详情
如何把一个8位灰度图像读到一个二维数组中?
cutelocust
2004-08-01 09:12:10
rt
...全文
193
2
打赏
收藏
如何把一个8位灰度图像读到一个二维数组中?
rt
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
howtotell
2004-08-01
打赏
举报
回复
位图的结构是比较复杂的,里面的数据和头都是以结构体的形式存在的,用一个二位数组表示不是很方便.你要读进内存,可以考虑使用内存映像文件,然后再像操作内存里的指针那样操作是比较可行的办法.
现实位图的方法很多:
#define HIMETRIC_INCH 2540
LPPICTURE gpPicture;
void CMasterView::ShowPicture(CDC *pDC, CString m_strBRoute, int x, int y, int width, int height)
{
HANDLE hFile = CreateFile(m_strBRoute, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
_ASSERTE(INVALID_HANDLE_VALUE != hFile);
// 取得文件大小
DWORD dwFileSize = GetFileSize(hFile, NULL);
_ASSERTE(-1 != dwFileSize);
LPVOID pvData = NULL;
//根据文件大小分配内存
HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, dwFileSize);
_ASSERTE(NULL != hGlobal);
pvData = GlobalLock(hGlobal);
_ASSERTE(NULL != pvData);
DWORD dwBytesRead = 0;
//读取文件并存入全局内存
BOOL bRead = ReadFile(hFile, pvData, dwFileSize, &dwBytesRead, NULL);
_ASSERTE(FALSE != bRead);
GlobalUnlock(hGlobal);
CloseHandle(hFile);
LPSTREAM pstm = NULL;
// 通过全局内存创建 IStream* 的指针
HRESULT hr = CreateStreamOnHGlobal(hGlobal, TRUE, &pstm);
_ASSERTE(SUCCEEDED(hr) && pstm);
//通过图形文件创建IPicture 对象
if (gpPicture)
gpPicture->Release();
hr = OleLoadPicture(pstm, dwFileSize, FALSE, IID_IPicture, (LPVOID *)&gpPicture);
_ASSERTE(SUCCEEDED(hr) && gpPicture);
pstm->Release();
HDC hdc;
hdc=pDC->GetSafeHdc();
if (gpPicture)
{
// 取得图片的宽和高
long hmWidth;
long hmHeight;
gpPicture->get_Width(&hmWidth);
gpPicture->get_Height(&hmHeight);
//宽高转换为象素
int nWidth = MulDiv(hmWidth, GetDeviceCaps(hdc, LOGPIXELSX), HIMETRIC_INCH);
int nHeight = MulDiv(hmHeight, GetDeviceCaps(hdc, LOGPIXELSY), HIMETRIC_INCH);
RECT rc;
GetClientRect(&rc);/*取得客户区*/
gpPicture->Render(hdc, x,y, (int)height*hmWidth/hmHeight,height, 0, hmHeight, hmWidth, -hmHeight, &rc);
/*显示图片*/
}
GlobalFree(hGlobal);
}
cutelocust
2004-08-01
打赏
举报
回复
还有,如何从数组中显示该图像?
opencv
灰度图像
和
二维数组
相互转换操作
OpenCV实现
灰度图像
到
二维数组
,数组到图像的相互转换存取
灰度直方图(字符串数组).cpp
一幅m×n的
灰度图像
可以用
一个
二维矩阵表示,矩阵
中
的每个元素表示对应像素的灰度值。 灰度直方图表示图像
中
具有每种灰度级的象素的个数,反映图像
中
每种灰度出现的频率。 假设图像灰度为16级(灰度值从0-15),现...
MATLAB图像处理
介绍MATLAB提供的图像处理功能,包括图像基础知识、图像合成、空间变换、邻域和块处理、局部滤波、正交变换、数学形态学、图像分析、图像增强、图像恢复、图像分割、图像配准和图像三维重建等内容。 所在套餐:...
LabVIEW不使用NI Vision将png图片转为RGB分量数组;自带图片函数将彩色图片转为RGB三通道的二维灰度数组的VI
可以使用LabVIEW自带的图片函数将图片转为RGB三个通道分量的灰度值,便于进行图像处理,可将载入的图像转为24位图像,
8位
和4位图像,并将相应位数的图像将RGB通道的灰度值分量为三个二维灰度数组,是图像处理的常用...
图像处理BSD68测试集
灰度图像
数字图像是指用工业相机、摄像机、扫描仪等设备经过拍摄得到的
一个
大的
二维数组
,该数组的元素称为像素,其值称为灰度值。图像处理技术一般包括图像压缩,增强和复原,匹配、描述和识别3个部分。
图形处理/算法
19,468
社区成员
50,698
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章