社区
图形处理/算法
帖子详情
菜鸟告急:怎样将位图像素数据读入数组??(vc++)
RobJack
2009-05-11 10:31:40
get_image(int x, int y, int Dx, int Dy, BYTE *buf)//矩形窗口数据读入一维数组,x、y、Dx、Dy分别为左上角起始坐标,图像宽度和高度
例如
for(i = 0; i < Dy; i++)
{
get_image(x, y + i, Dx, i, buf); // 读出一行数据
……
}
具体如何将位图的一行数据读出来呢?请给代码,不胜感激!!
...全文
304
8
打赏
收藏
菜鸟告急:怎样将位图像素数据读入数组??(vc++)
get_image(int x, int y, int Dx, int Dy, BYTE *buf)//矩形窗口数据读入一维数组,x、y、Dx、Dy分别为左上角起始坐标,图像宽度和高度 例如 for(i = 0; i < Dy; i++) { get_image(x, y + i, Dx, i, buf);//读出一行数据 …… } 具体如何将位图的一行数据读出来呢?请给代码,不胜感激!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lucklizhan
2009-05-14
打赏
举报
回复
直接解析比较清楚一点
cau228charm
2009-05-14
打赏
举报
回复
这个函数的参数有问题吧
huguangdieying
2009-05-13
打赏
举报
回复
void bmpshift(void)
{
FILE *fp;
LONG i,j,MapHeight,MapWidth;
BITMAPINFOHEADER infoheader;
memset(&infoheader,0,sizeof(BITMAPINFOHEADER));
fp=fopen(".\\33.bmp","rb");
fseek(fp,14,SEEK_SET); //指针移动
fread(&infoheader,sizeof(BITMAPINFOHEADER),1,fp); //infoheader指向信息头 指针会移动
MapHeight=infoheader.biHeight;
MapWidth=infoheader.biWidth;
GLfloat r,g,b;
for(i=0;i<MapHeight;i++)
for(j=0;j<MapWidth;j++)
{
b=float(fgetc(fp));
g=float(fgetc(fp));
r=float(fgetc(fp));
if(infoheader.biBitCount==32)
fgetc(fp);
}
fclose(fp);
}可以读24位或32位的rgb数据
dujimache123
2009-05-13
打赏
举报
回复
BITMAPINFO * pBmpInfo;
BYTE * pBmpData;
BITMAPFILEHEADER bmpHeader;
BITMAPINFOHEADER bmpInfo;
CFile bmpFile;
CString strFileName;
CString strFilter = "位图文件(*.bmp)|*.bmp|所有文件(*.*)|*.*|";
CFileDialog dlg(TRUE,NULL,NULL,NULL,strFilter,this);
if (!dlg.DoModal() == IDOK) return;
strFileName = dlg.GetPathName();
/// 通过读取位图文件显示位图
if(!bmpFile.Open(strFileName,CFile::modeRead|CFile::typeBinary)) return;
if (bmpFile.Read(&bmpHeader,sizeof(BITMAPFILEHEADER)) != sizeof(BITMAPFILEHEADER))
{
AfxMessageBox("read bmp header failed!");
return;
}
if (bmpHeader.bfType != 0x4d42)
{
AfxMessageBox("invalid file type!");
return;
}
if (bmpFile.Read(&bmpInfo,sizeof(BITMAPINFOHEADER)) != sizeof(BITMAPINFOHEADER))
{
AfxMessageBox("read bmp infor header failed!");
return;
}
if (bmpInfo.biBitCount != 24)
{
AfxMessageBox("File is not 24 bit.Application doesn't support this kind of file!");
return;
}
pBmpInfo = (BITMAPINFO *)new char[sizeof(BITMAPINFOHEADER)];
if (!pBmpInfo)
{
AfxMessageBox("memory error!");
return;
}
memcpy(pBmpInfo,&bmpInfo,sizeof(BITMAPINFOHEADER));
DWORD dataBytes = bmpHeader.bfSize - bmpHeader.bfOffBits;
pBmpData = (BYTE*)new char[dataBytes];
if (!pBmpData)
{
AfxMessageBox("memory error!");
delete pBmpData;
return;
}
if (bmpFile.Read(pBmpData,dataBytes) != dataBytes)
{
AfxMessageBox("Read bmp data failed!");
delete pBmpInfo;
delete pBmpData;
return;
}
bmpFile.Close();
CClientDC *pDC = new CClientDC(this);
pDC->SetStretchBltMode(COLORONCOLOR);
StretchDIBits(pDC->GetSafeHdc(),0,0,bmpInfo.biWidth,bmpInfo.biHeight,0,0,bmpInfo.biWidth,bmpInfo.biHeight,pBmpData,pBmpInfo,DIB_RGB_COLORS,SRCCOPY);
doudouHuY
2009-05-13
打赏
举报
回复
方法1、自己解析bmp文件,分析bitmapheader获取位图信息,载入位图数据
方法2、直接将位图当做资源载入进来然后获取位图像素信息
chiwa737
2009-05-13
打赏
举报
回复
学习
-------------------------------------
http://slash-directx.blogspot.com/
TADICAN
2009-05-12
打赏
举报
回复
为什么不用Resource?
xsc2001
2009-05-12
打赏
举报
回复
这个还得看你的位图是8位还是24位的,不同的位图一个象素保存的数据大小不一样,你是要把象素弄到一个buf里?
VC小技巧:窗体中显示bmp图象
虽然在高手看来这是垃圾问题,但对于我们这些
菜鸟
,这是很必须的.因为高手很不屑写这些的,我刚刚学会,为了挽救普天之下和我一样的
菜鸟
们,就写了这样一篇文章。 在vc中显示BMP并不象VB那么简单,用个loadpicture,什么格式全部ok,在vc中又需要做一些额外工作.我们用 SDI作示范。 新建一个SDI的工程,所有都是默认.打开资源编辑器,右键,import 选择图片导入.使用默
用什么函数能获取屏幕当前
像素
值
我想获取屏幕上正在播放的视频中某点的
像素
值,但是用getpixel无法实现,整个视频画面的
像素
值都是(16,0,16),屏幕上其他各处
像素
值都可以判断,但播放中的视频却不行,请问有什么别的函数可以取得视频中正在变化的某点的
像素
值?
是啊,我就是这么做的,但是正在播放的视频好像不是在一个层面上的,getpixel取不到。。。悲剧啊,不知道该怎么弄
可能播放软件用了某种特殊的处理方法所以得不到不懂,也许,播放软件发的视频不是用gdi画的,
如果播放软件使用directd
基于VC的数字图像处理——BMP文件读取、存储、像元值统计
前言 本人为
菜鸟
未入门阶段,作业需要完成部分基本BMP数字图像处理,实时共享。 使用软件:Visual Studio 2010中Visual
C++
下Win32 控制台应用程序【使用visual studio 2012也可以,2017版的貌似一般下载安装后使用会缺少一些文件,导致运行错误(新建
C++
项目没有导航,就会在后面运行出错)】 本文件运行的图像为lena.BMP文件,像元为256*25...
pygame.surfarray.array3d()的作用
pygame.surfarray.array3d()Copy pixels into a 3d arrayarray3d(Surface) -> arrayCopy the pixels from a Surface into a 3D array. The bit depth of the surface will control the size of the integer values,
二值化的cv2.threshold函数
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
像素
高于阈值时,给
像素
图形处理/算法
19,464
社区成员
50,678
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章