91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 892KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2024-01-30
  • 語言: 其他
  • 標簽: 多媒體??BMP??

資源簡介

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

資源截圖

代碼片段和文件信息

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

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

//讀取數據??
fread(&bmpFileHeader?sizeof(BITMAPFILEHEADER)?1?fp);
fread(&bmpInfoHeader?sizeof(BITMAPINFOHEADER)?1?fp);
pBmpData?=?new?unsigned?char[bmpInfoHeader.biSizeImage];???//申請空間,大小為位圖數據大小??
fread(pBmpData?sizeof(unsigned?char)?bmpInfoHeader.biSizeImage?fp);
fclose(fp);?????????//不要忘了關閉文件??
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;????????//原圖數據大小??
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轉換為灰度值??
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“);???//以二進制寫方式打開??
if?(NULL?==?fp)
{
cout?< return?FALSE;
}
//寫入數據??
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);
//釋放內存空間??
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;
}

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????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??真彩色圖像灰度化\實驗報告.doc

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

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

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


評論

共有 條評論