xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 892KB
    文件類(lèi)型: .rar
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2024-01-30
  • 語(yǔ)言: 其他
  • 標(biāo)簽: 多媒體??BMP??

資源簡(jiǎn)介

步驟:(1) 讀取文件信息,以二進(jìn)制方式打開(kāi)并讀取位圖文件信息復(fù)制給新的變量后關(guān)閉文件;(2) 定義灰色為圖文件變量,套用灰度化公式,改變RGB值,將真彩色圖像轉(zhuǎn)換為灰色圖像;(3) 將轉(zhuǎn)換成的灰色圖像存儲(chǔ)到文件夾,然后關(guān)閉文件夾,釋放內(nèi)存空間。(4)由于從真菜色圖到灰度圖的轉(zhuǎn)變之后,會(huì)產(chǎn)生新的顏色表,需要使用(bmpFileHeader.bfOffBits += (sizeof(RGBQUAD) * 256); ) 進(jìn)行改變;(5) bmp數(shù)據(jù)存儲(chǔ)時(shí)按行從左到右、按列從下到上掃描,所以對(duì)于24位bmp文件,數(shù)據(jù)區(qū)前三個(gè)字節(jié)代表位圖左下角第一個(gè)元素;

資源截圖

代碼片段和文件信息

#include???
#include???
#include???
#include???
using?namespace?std;
BITMAPFILEHEADER?bmpFileHeader;?//位圖文件頭??
BITMAPINFOHEADER?bmpInfoHeader;?//位圖信息頭??
RGBQUAD?*pColorTable;???????????//顏色表,注:24位真彩色圖無(wú)顏色表??
unsigned?char?*pBmpData;????????//位圖數(shù)據(jù)??
unsigned?char?*pGrayData;???????//灰度圖像數(shù)據(jù)??

bool?readBmp(char?*fileName)
{
FILE?*fp?=?fopen(fileName?“rb“);????//以二進(jìn)制讀方式打開(kāi)??
if?(NULL?==?fp)
{
cout?< return?FALSE;
}

//讀取數(shù)據(jù)??
fread(&bmpFileHeader?sizeof(BITMAPFILEHEADER)?1?fp);
fread(&bmpInfoHeader?sizeof(BITMAPINFOHEADER)?1?fp);
pBmpData?=?new?unsigned?char[bmpInfoHeader.biSizeImage];???//申請(qǐng)空間,大小為位圖數(shù)據(jù)大小??
fread(pBmpData?sizeof(unsigned?char)?bmpInfoHeader.biSizeImage?fp);
fclose(fp);?????????//不要忘了關(guān)閉文件??
return?TRUE;
}


void?convert()
{
bmpFileHeader.bfOffBits?+=?(sizeof(RGBQUAD)?*?256);
bmpInfoHeader.biBitCount?=?8;
int?lineBytes?=?(bmpInfoHeader.biWidth?*?8?+?31)?/?32?*?4;
int?oldLineBytes?=?(bmpInfoHeader.biWidth?*?24?+?31)?/?32?*?4;
int?oldSize?=?bmpInfoHeader.biSizeImage;????????//原圖數(shù)據(jù)大小??
bmpInfoHeader.biSizeImage?=?lineBytes?*?bmpInfoHeader.biHeight;
//定義灰度圖像的顏色表??
pColorTable?=?new?RGBQUAD[256];
for?(int?i?=?0;?i? {
(*(pColorTable?+?i)).rgbBlue?=?i;
(*(pColorTable?+?i)).rgbGreen?=?i;
(*(pColorTable?+?i)).rgbRed?=?i;
(*(pColorTable?+?i)).rgbReserved?=?0;
}
//將RGB轉(zhuǎn)換為灰度值??
int?red?green?blue;
BYTE?gray;
pGrayData?=?new?unsigned?char[bmpInfoHeader.biSizeImage];
memset(pGrayData?0?bmpInfoHeader.biSizeImage);
?
for?(int?i?=?0;?i? {
for?(int?j?=?0;?j? {
red?=?*(pBmpData?+?i*oldLineBytes?+?3?*?j);
green?=?*(pBmpData?+?i*oldLineBytes?+?3?*?j?+?1);
blue?=?*(pBmpData?+?i*oldLineBytes?+?3?*?j?+?2);
gray?=?(BYTE)((77?*?red?+?151?*?green?+?28?*?blue)?>>?8);
*(pGrayData?+?i*lineBytes?+?j)?=?gray;
}
}

}

bool?writeBmp(char?*fileName)
{
FILE?*fp?=?fopen(fileName?“wb“);???//以二進(jìn)制寫(xiě)方式打開(kāi)??
if?(NULL?==?fp)
{
cout?< return?FALSE;
}
//寫(xiě)入數(shù)據(jù)??
fwrite(&bmpFileHeader?sizeof(BITMAPFILEHEADER)?1?fp);
fwrite(&bmpInfoHeader?sizeof(BITMAPINFOHEADER)?1?fp);
fwrite(pColorTable?sizeof(RGBQUAD)?256?fp);
fwrite(pGrayData?sizeof(unsigned?char)?bmpInfoHeader.biSizeImage?fp);
fclose(fp);
//釋放內(nèi)存空間??
delete[]pColorTable;
delete[]pBmpData;
delete[]pGrayData;
return?TRUE;
}


void?work()
{
char?readFileName[]?=?“D:\\圖片\\lena.bmp“;
if?(!readBmp(readFileName))
cout?< convert();
char?writeFileName[]?=?“D:\\圖片\\gray.bmp“;
if?(!writeBmp(writeFileName))
cout?< cout?<
}
int?main()
{
work();
return?0;
}

?屬性????????????大小?????日期????時(shí)間???名稱(chēng)
-----------?---------??----------?-----??----

?????文件???????3042??2018-05-20?19:46??真彩色圖像灰度化\covert_method1.cpp

?????文件???????2969??2018-05-20?19:46??真彩色圖像灰度化\covert_method2.cpp

?????文件?????263222??2018-05-20?19:38??真彩色圖像灰度化\gray_method1.bmp

?????文件?????263222??2018-05-20?19:46??真彩色圖像灰度化\gray_method2.bmp

?????文件?????786486??2018-05-20?19:02??真彩色圖像灰度化\lena.bmp

?????文件??????47104??2018-05-20?20:10??真彩色圖像灰度化\實(shí)驗(yàn)報(bào)告.doc

?????目錄??????????0??2018-05-20?20:13??真彩色圖像灰度化

-----------?---------??----------?-----??----

??????????????1366045????????????????????7


評(píng)論

共有 條評(píng)論