freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于圖像處理和識別的灼熱絲火焰高度檢測本科畢業(yè)論文-資料下載頁

2025-06-23 15:49本頁面
  

【正文】 YTE rgbReserved。// 保留,必須為0  } RGBQUAD?! ☆伾碇蠷GBQUAD結(jié)構(gòu)數(shù)據(jù)的個數(shù)有biBitCount來確定:  當(dāng)biBitCount=1,4,8時,分別有2,16,256個表項;當(dāng)biBitCount=24時,沒有顏色表項。 位圖像素數(shù)據(jù)位圖像素數(shù)據(jù)是位圖的主體部分,存儲了位圖所有的像素的數(shù)據(jù)。根據(jù)不同的位圖,位圖信息所占的字節(jié)數(shù)也是不同的。對于8位位圖,一個像素點占據(jù)一個字節(jié);對于16位位圖,一個像素點占據(jù)兩個字節(jié);對于24位位圖,一個像素占據(jù)3個字節(jié);而對于32位位圖,一個像素點占據(jù)4個字節(jié)。本設(shè)計中采用24位位圖,故每個像素點占據(jù)3個字節(jié)。 設(shè)備無關(guān)位圖類CDib類庫的建立 CDib類庫建立的必要由于大多數(shù)圖像處理都是基于與設(shè)備無關(guān)位圖(DIB)來進行討論的,而MFC中并沒有處理DIB位圖的類,這就給編程帶來許多困難。用面向?qū)ο蟮姆椒ㄌ幚砦粓D的核心是設(shè)計一個管理DIB的類。所以需要定義一個處理DIB位圖的專用類CDib類,在其中封裝必要而有效的DIB數(shù)據(jù)成員和處理函數(shù)。CDib類的設(shè)計需要實現(xiàn)以下幾個功能:Void LoadFile(CString m_fileName);//載入BMP位圖文件BOOL SaveFile(const char*pszFilename)。//存儲BMP位圖文件Char* GetFileName()。//返回位圖文件名DWORD GetSize()。//返回位圖文件大小UINT GetWidth()。//返回位圖文件寬度UINT GetHeight()。//返回位圖文件高度UINT GetNumberOfColors()。//返回位圖顏色書目RGBQUAD*GetRGB()。//返回顏色表首地址BITMAPINFO*GetInfo()。//返回圖像信息結(jié)構(gòu)首地址BYTE*GetData()。//返回圖像數(shù)據(jù)首地址 CDib類庫的設(shè)計目標功能根據(jù)以上DIB操作分析,以及參考CBitmap的功能設(shè)計,CDib類的基本操作功能應(yīng)包括:(1)DIB文件的讀、寫操作(2)提供位圖寬度、高度、顏色數(shù)目等位圖相關(guān)信息(3)提供有關(guān)位圖占據(jù)內(nèi)存空間的信息,包括:圖像數(shù)據(jù)區(qū)首地址、顏色表首地址、位圖信息結(jié)構(gòu)首地址等父類雖然MFC中已有一個支持DDB操作的CBitmap類,但是如果以CBitmap作為父類派生出CDib類,并不能從DDB的操作設(shè)計中繼承實用的功能,反而會使之成為負累。作為一種“外部”位圖,DIB主要以文件形式進行存儲和交換,所以CDib類應(yīng)該具有很好的處理文件操作??紤]到MFC中的CObject類是MFC中大多數(shù)類的基類,不但提供了許多游泳的特性,還包括對文件串行化的支持,運行時類信息和對象診斷的輸出等。因此,從CObject類中繼承出CDib類,對開發(fā)和應(yīng)用能夠帶來諸多便利。數(shù)據(jù)封裝面向?qū)ο蠓椒ǖ囊粋€重要特征就是數(shù)據(jù)封裝,即將類的成員數(shù)據(jù)隱藏在類中,外界只能通過類的成員函數(shù)來操作類的成員數(shù)據(jù)。這是面向?qū)ο蠓椒ǖ闹匾悬c,它可以保護類中的數(shù)據(jù)不受外部的意外修改。但是CDib這種類需要大量使用Win32 API函數(shù),過度的封裝要求在類中重新實現(xiàn)許多Win32 API函數(shù),所以在設(shè)計CDib時應(yīng)注意保證數(shù)據(jù)的封裝,又得注意保證效率的提高。繼承CDib類的另一個設(shè)計目標應(yīng)該考慮到,在程序中既要打開原圖,又要對原圖分別進行各種處理,為了能夠?qū)φ诊@示,原圖不做任何處理,可將原圖定義為CDib類的對象或指向該對象的指針,而將需要處理的類定義為CDib的派生類,由于派生類對基類中的保護或公有成員可以直接使用,不需要聲明,因此在派生類中僅僅定義各種處理圖像數(shù)據(jù)區(qū)的函數(shù)即可。:// : interface for the CDib class.////////////////////////////////////////////////////////////////////////if !defined(AFX_DIB_H__EB946266_A3AF_4963_A55D_FD61001CDA9D__INCLUDED_)define AFX_DIB_H__EB946266_A3AF_4963_A55D_FD61001CDA9D__INCLUDED_if _MSC_VER 1000pragma onceendif // _MSC_VER 1000class CDib : public CObject{public: RGBQUAD* m_pRGB。 //調(diào)色表 BYTE* m_pData。 //圖像數(shù)據(jù)指針 UINT m_numberOfColors。 //顏色數(shù) BOOL m_valid。 // BITMAPFILEHEADER bitmapFileHeader。 //文件頭 BITMAPINFOHEADER * m_pBitmapInfoHeader。 //信息頭指針 BITMAPINFO * m_pBitmapInfo。 //圖像信息指針 BYTE * pDib。 // DWORD size。 // DWORD fileLength。public: CDib()。 ~CDib()。 //char m_fileName[256]。 CString m_fileName。 CString GetFileName()。 BOOL IsValid()。 DWORD GetSize()。 UINT GetWidth()。 UINT GetHeight()。 UINT GetNumberOfColors()。 RGBQUAD *GetRGB()。 BYTE *GetData()。 BITMAPINFO *GetInfo()。 WORD PaletteSize(LPBYTE lpDIB)。 WORD DIBNumColors(LPBYTE lpDIB)。 void SaveFile(const CString filename)。 void LoadFile(CString dibFileName)。}。endif // !defined(AFX_DIB_H__EB946266_A3AF_4963_A55D_FD61001CDA9D__INCLUDED_)// : implementation of the CDib class.////////////////////////////////////////////////////////////////////////include include include ifdef _DEBUGundef THIS_FILEstatic char THIS_FILE[]=__FILE__。define new DEBUG_NEWendif//////////////////////////////////////////////////////////////////////// Construction/Destruction//////////////////////////////////////////////////////////////////////CDib::CDib(){ size=0。}CDib::~CDib(){ GlobalFreePtr(m_pBitmapInfo)。}//載入源文件到堆區(qū)中void CDib::LoadFile(CString dibFileName){ //strcpy(m_fileName,dibFileName)。 m_fileName=dibFileName。 CFile dibFile(m_fileName,CFile::modeRead)。 ((void*)amp。bitmapFileHeader,sizeof(BITMAPFILEHEADER))。 if(=0x4d42)//判斷是否為BMP文件,39。BM39。 { fileLength=()。 //獲取文件長度 size=fileLengthsizeof(BITMAPFILEHEADER)。 //求出除文件頭外的文件長度 pDib=(BYTE*)GlobalAllocPtr(GMEM_MOVEABLE,size)。//獲得堆區(qū)中的空間 ((void*)pDib,size)。 //讀取并寫入堆區(qū)中 ()。 //關(guān)閉文件 m_pBitmapInfo=(BITMAPINFO*)pDib。 //位圖信息指針賦值 m_pBitmapInfoHeader=(BITMAPINFOHEADER*)pDib。 //信息頭指針賦值 m_pRGB=(RGBQUAD*)(pDib+m_pBitmapInfoHeaderbiSize)。 //調(diào)色表頭指針 int m_numberOfColors=GetNumberOfColors()。 //獲得顏色數(shù) if (m_pBitmapInfoHeaderbiClrUsed == 0) //設(shè)置實際用到顏色數(shù) m_pBitmapInfoHeaderbiClrUsed = m_numberOfColors。 DWORD colorTableSize = m_numberOfColors * sizeof(RGBQUAD)。 //計算顏色表大小 m_pData = pDib + m_pBitmapInfoHeaderbiSize + colorTableSize。 //計算獲得圖像數(shù)據(jù)開頭指針 if (m_pRGB == (RGBQUAD*)m_pData) // 如果計算得到兩指針重合,說明沒有調(diào)色表 m_pRGB = NULL。 m_pBitmapInfoHeaderbiSizeImage = GetSize()。 //獲得圖像大小字節(jié)數(shù) m_valid = TRUE。 //圖像格式正確 } else { m_valid = FALSE。 AfxMessageBox(This isn39。t a bitmap file!)。 } }//判斷圖像格式BOOL CDib::IsValid(){ return m_valid。}//返回文件名CString CDib::GetFileName(){ return m_fileName。}//返回圖像寬度和高度(像素數(shù))UINT CDib::GetWidth(){ return (UINT) m_pBitmapInfoHeaderbiWidth。} UINT CDib::GetHeight(){ return (UINT) m_pBitmapInfoHeaderbiHeight。}//返回圖像大?。ㄗ止?jié)數(shù))DWORD CDib::GetSize(){ if (m_pBitmapInfoHeaderbiSizeImage != 0) return m_pBitmapInfoHeaderbiSizeImage。 else { DWORD height = (DWORD) GetHeight()。 DWORD width = (DWORD) GetWidth()。 return height * width。 //如果之前沒有計算過,則利用寬和高的乘積返回 }}//返回實際使用顏色數(shù)UINT CDib::GetNumberOfColors(){ int numberOfColors。 if ((m_pBitmapInfoHeaderbiClrUsed == 0) amp。amp。 (m_pBitmapInfoHeaderbiBitCount 9)) { switch (m_pBitmapInfoHeaderbiBitCount) { case 1: numberOfColors = 2。 break。 case 4: numberOfColors = 16。 break。 case 8: numberOfColors = 256。 } } else numberOfColors = (int) m_pBitmapInfoHeaderbiClrUsed。 return numberOfColors。}//獲得圖像數(shù)據(jù)指針BYTE* CDib::GetData(){ return m_pData。}//獲得調(diào)色板指針RGBQUAD* CDib::GetRGB(){ return m_pRGB。}//獲得信息頭指針BITMAPINFO* C
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1