bmp图像 getPixel的问题

疯魔症 疯魔症 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
已经建立了一个CDIB类,构造函数和显示图像都没问题,但是操作像素时,抱错,内存不能为读
没有头绪,在这求助大家帮忙,谢谢
下面是DibAddress和getPixel的代码
BYTE * CDIB::DibAddress(int x,int y) //取像素数据存储地址
{
BYTE * lp;
int le;
int yy;

if(bitCount<8) //检查像素为数,只处理8位以上
{AfxMessageBox("本程序只处理 8 位以上的图像"); return 0;}
if((x<0) || (y<0) || (x>=(int)wid) || (y>=(int)hei)) //检查参数是否超出范围
{AfxMessageBox("参数超出范围");return 0;}

le=(int)bpl * yy + bpp * x; //计算偏移的位置
lp=(BYTE *) lpPixel + le; //加上像素区域首地址
AfxMessageBox("2222");
return lp;
}

DWORD CDIB::pixel(int x,int y,DWORD c) //前提条件:x,y是像素列和行,c为0xffffffff时取,否则存
//执行结果:存入像素或取出像素
{
BYTE * lp;
DWORD dd=0;
lp = DibAddress (x,y);
if(lp =NULL) return 0;
if(c == 0xffffffff)
{
AfxMessageBox("3333");
memcpy(&dd,lp,bpp); //取像素数据 这里内存不能为读
}
else
{
AfxMessageBox("4444");
memcpy(lp,&c,bpp); //存像素数据内存不能为写[color=#FF0000][/color
}
return dd;
}
...全文

相关推荐

24位BMP转32位BMP

24位BMP转32位BMP的c#代码测试可用,适用于linux开发板的LCD需要32位深度的BMP的场合,代码参看了网友彭军的代码,我将它实现了并上传....柏林

Brave_QQ596140538

VC++图像边缘检测实战:Canny算法实现与性能优化

在工业视觉与图像处理领域,边缘检测是提取目标轮廓、实现尺寸测量与特征分析的核心步骤。Canny算法凭借其完善的去噪、梯度计算、非极大值抑制与双阈值连接流程,成为工程应用中最常用的边缘检测方案。然而在实际部署中,Python与OpenCV在运行时依赖、内存控制和执行效率上存在局限,原生C++实现的算法模块更契合Windows工控机与嵌入式工具链的需求。本文从BMP像素读取、Sobel梯度计算到非极大值抑制与滞后阈值连接,完整解析Canny算法的纯C++实现链路,并通过多线程分块、缓存友好设计及Otsu自适应阈

外币兑换

VB浮雕效果(BMP图像)

内容索引:VB源码,图形处理,浮雕  VB编程实现将一幅BMP图片处理成类似Photoshop一样的浮雕效果,处理的效果很好,就是处理时候有点慢。

weixin_38686267

易语言远控桌面算法BMP分割源码

资源介绍:。源码实现了BMP图像分割,BMP像素点阵截图。资源作者:。@易语言入门源码。资源界面:。资源下载:。

虚坏叔叔

图像灰度值

详细的叙述了图像灰度值的计算,让我们更清楚的了解图像灰度值

mouxiaobai
评论 7
收藏 已收藏
分享
返回顶部
疯魔症
图形处理/算法 19,463 成员 50,678 内容