读取bmp图像所有像素点的RGB值的函数实现Word文档格式.docx
- 文档编号:12958294
- 上传时间:2022-10-01
- 格式:DOCX
- 页数:16
- 大小:13.39KB
读取bmp图像所有像素点的RGB值的函数实现Word文档格式.docx
《读取bmp图像所有像素点的RGB值的函数实现Word文档格式.docx》由会员分享,可在线阅读,更多相关《读取bmp图像所有像素点的RGB值的函数实现Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
BitCount="
biBitCount<
endl;
intlineByte=(bmpWidth*biBitCount/8+3)/4*4;
intn=0;
if(biBitCount==8)//灰度图像
{
for(inti=0;
i<
bmpHeight;
i++)
{
for(intj=0;
j<
lineByte;
j++)
r[i][j]=*(pBmpBuf+i*lineByte+j);
g[i][j]=*(pBmpBuf+i*lineByte+j);
b[i][j]=*(pBmpBuf+i*lineByte+j);
n++;
}
}
elseif(biBitCount==24)//彩色图像
for(intj=0;
bmpWidth;
for(intk=0;
k<
3;
k++)
if(k==0)
b[i][j]=*(pBmpBuf+i*lineByte+j*3+k);
if(k==1)
g[i][j]=*(pBmpBuf+i*lineByte+j*3+k);
if(k==2)
r[i][j]=*(pBmpBuf+i*lineByte+j*3+k);
cout<
总的像素个数为:
n<
ofstreamoutfile("
图像像素的rgb分量.txt"
ios:
:
out|ios:
trunc);
if(!
outfile)
cout<
Openerror!
for(inti=0;
if(j%bmpWidth==0)
outfile<
r[i][j]<
"
;
outfile<
if(j%bmpWidth==0)
g[i][j]<
b[i][j]<
outfile.close();
}
读取卫星小图片(针对3.1.3节输出的RGB三个结果矩阵)高度坐标的完整程序如下:
#include<
iostream>
vector>
string>
fstream>
cmath>
sstream>
usingnamespacestd;
intbmpHeight=17;
intbmpWidth=16;
doubleheight[17][16];
typedefunsignedcharBYTE;
typedefvector<
vector<
BYTE>
>
Mat;
structcolorTable
BYTEred;
BYTEgreen;
BYTEblue;
doubleheight;
};
voidgetHeight(Mat&
r,Mat&
g,Mat&
b,colorTable*color);
Matinput(constchar*nameFile);
intgetMin(float*a);
intmain()
Matr=input("
red.txt"
);
Matg=input("
green.txt"
Matb=input("
blue.txt"
colorTablecolor[31];
for(inti=0;
31;
++i)//color[31]的初始化
{
if(i<
=15)
color[i].red=0;
color[i].green=0+17*i;
color[i].blue=255-17*i;
}
else
color[i].red=0+(i-15)*17;
color[i].green=255-(i-15)*17;
color[i].blue=0;
color[i].height=i*21.7;
getHeight(r,g,b,color);
++i)
for(intj=0;
++j)
height[i][j]<
ofstreamout("
high.txt"
out);
out<
return0;
b,colorTable*color)
floata[31];
//获取每像素点的高度坐标
for(intk=0;
++k)
a[k]=sqrt((r[i][j]-color[k].red)*(r[i][j]-color[k].red)+(g[i][j]-color[k].green)*(g[i][j]-color[k].green)+(b[i][j]-color[k].blue)*(b[i][j]-color[k].blue));
intindex=getMin(a);
height[i][j]=color[index].height;
Matinput(constchar*nameFile)
ifstreamin(nameFile,ios:
in);
Mata;
istringstreamiss;
stringstr;
tmpvec;
while(getline(in,str))
iss.str(str);
BYTEtmp;
while(iss>
>
tmp)
tmpvec.push_back(tmp);
a.push_back(tmpvec);
tmpvec.clear();
iss.clear();
returna;
intgetMin(float*a)
intindex=0;
floatmin=a[0];
for(inti=1;
if(a[i]<
min)
min=a[i];
index=i;
returnindex;
上述程序运行后输出高度矩阵的结果如下:
151.9477.4151.9151.9477.4151.9151.9151.9477.4151.9151.9151.9151.9151.9151.9151.9
151.9151.9477.4151.9477.4151.9151.9151.9477.4151.9151.9151.9151.9151.9151.9151.9
151.9151.9477.4151.9151.9477.4151.9151.9151.9151.9151.9151.9151.9151.9151.9151.9
151.9477.4151.9151.9151.9151.9151.9151.9151.9151.9151.9151.9151.9151.9477.4151.9
151.9151.9477.4151.9151.9151.9151.9151.9151.9151.9151.9151.9151.9151.9151.9151.9
151.9151.9151.9151.9151.9151.9151.9151.9151.9151.9151.9477.4151.9477.4151.9151.9
151.9151.9151.9151.9151.9477.4151.9151.9151.9151.9151.9151.9151.9151.9151.9151.9
151.9477.4151.9151.9151.9151.9151.9151.9151.9151.9151.9151.9151.9151.9151.9151.9
151.9151.9477.4151.9151.9151.9151.9151.9477.4151.9151.9151.9151.9151.9477.4151.9
151.9477.4477.4151.9477.4151.9151.9477.4477.4151.9477.4477.4151.9151.9477.4151.9
151.9151.9151.9151.9477.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 读取 bmp 图像 所有 像素 RGB 函数 实现