亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dibshow.cpp

?? VC++實現的圖像配準算法,代碼全,有窗口.本代碼來自《數字圖像處理典型算實現》一書.rar
?? CPP
字號:

/*

BITMAPFILEHEADER   bf;
BITMAPINFOHEADER   bi;
BOOL LoadBmpFile (HWND hWnd,char *BmpFileName)
{
	//文件句柄
	HFILE              hf; 
	
	//指向BITMAPINFOHEADER結構的指針
	LPBITMAPINFOHEADER lpImgData; 
	
	//指向邏輯調色板結構的指針	
	LOGPALETTE         *pPal; 
	
	//指向RGBQUAD結構的指針
	LPRGBQUAD          lpRGB; 
	
	//用來保存設備中原來的調色板
	HPALETTE           hPrevPalette; 
	
	//設備句柄
	HDC                hDc; 
	
	//存儲調色板的局部內存句柄
	HLOCAL             hPal; 
	
	//每一行的字節數
	DWORD  		  LineBytes;  
	
	//實際的圖象數據占用的字節數
	DWORD 		  ImgSize;   
	
	//實際用到的顏色數 ,即調色板數組中的顏色個數
	DWORD             NumColors; 
	DWORD             i;

	if((hf=_lopen(BmpFileName,OF_READ))==HFILE_ERROR){
		MessageBox(hWnd,"File c:\\test.bmp not found!","Error Message",MB_OK|MB_ICONEXCLAMATION);
		return FALSE; //打開文件錯誤,返回
	}

	//將BITMAPFILEHEADER結構從文件中讀出,填寫到bf中
	_lread(hf,(LPSTR)&bf,sizeof(BITMAPFILEHEADER)); 
	
	//將BITMAPINFOHEADER結構從文件中讀出,填寫到bi中
	_lread(hf,(LPSTR)&bi,sizeof(BITMAPINFOHEADER));
    
	//我們定義了一個宏 #define WIDTHBYTES(i)    ((i+31)/32*4)
	//上面曾經提到過,每一行的字節數必須是4的整倍數,
	//只要調用WIDTHBYTES(bi.biWidth*bi.biBitCount)就能完成這一換算
	//舉一個例子,對于2色圖,如果圖象寬是31,則每一行需要31位存儲,合3個字節加
	//7位,因為字節數必須是4的整倍數,所以應該是4,而此時的//biWidth=31,biBitCount=1,WIDTHBYTES(31*1)=4,和我們設想的一樣。
	//再舉一個256色的例子,如果圖象寬是31,則每一行需要31個字節存儲,因為字節數
	//必須是4的整倍數,所以應該是32,而此時//biWidth=31,biBitCount=8,WIDTHBYTES(31*8)=32,和我們設想的一樣。你可以多舉
	//幾個例子來驗證一下
	//LineBytes為每一行的字節數
	LineBytes=(DWORD)WIDTHBYTES(bi.biWidth*bi.biBitCount);
	
	//ImgSize為實際的圖象數據占用的字節數
	ImgSize=(DWORD)LineBytes*bi.biHeight;
	
	//NumColors為實際用到的顏色數 ,即調色板數組中的顏色個數
	if(bi.biClrUsed!=0)
		NumColors=(DWORD)bi.biClrUsed; //如果bi.biClrUsed不為零,就是本圖象實際           
		//用到的顏色數
	else //否則,用到的顏色數為2的biBitCount次方。
	switch(bi.biBitCount){
       		case 1:
        	    NumColors=2;
        	    break;
        	case 4:
        	    NumColors=16;
        	    break;
        	case 8:
        	    NumColors=256;
        	    break;
        	case 24:
        	    NumColors=0; //對于真彩色圖,沒用到調色板
        	    break;
              default:
                  //不處理其它的顏色數,認為出錯。
                  MessageBox(hWnd,"Invalid color numbers!","Error Message",MB_OK|MB_ICONEXCLAMATION);
                  _lclose(hf);
                  return FALSE; //關閉文件,返回FALSE
           }

	if(bf.bfOffBits!=(DWORD)(NumColors*sizeof(RGBQUAD)+sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)))
	{
		//計算出的偏移量與實際偏移量不符,一定是顏色數出錯
    		MessageBox(hWnd,"Invalid color numbers!","Error Message" ,MB_OK|MB_ICONEXCLAMATION);
       		_lclose(hf);
       		return FALSE; //關閉文件,返回FALSE
	}

	bf.bfSize=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+NumColors*sizeof(RGBQUAD)+ImgSize;
	
	//分配內存,大小為BITMAPINFOHEADER結構長度加調色板+實際位圖數據
  	if((hImgData=GlobalAlloc(GHND,(DWORD)(sizeof(BITMAPINFOHEADER)+NumColors*sizeof(RGBQUAD)+ImgSize)))==NULL)
	{
		//分配內存錯誤
    		MessageBox(hWnd,"Error alloc memory!","ErrorMessage",MB_OK|MB_ICONEXCLAMATION);
    		_lclose(hf);
    	   	return FALSE; //關閉文件,返回FALSE
	}

  	//指針lpImgData指向該內存區
  	lpImgData=(LPBITMAPINFOHEADER)GlobalLock(hImgData); 
  
  	//文件指針重新定位到BITMAPINFOHEADER開始處
  	_llseek(hf,sizeof(BITMAPFILEHEADER),SEEK_SET);

  	//將文件內容讀入lpImgData
  	_hread(hf,(char *)lpImgData,(long)sizeof(BITMAPINFOHEADER)
         +(long)NumColors*sizeof(RGBQUAD)+ImgSize);
  	_lclose(hf); //關閉文件
    
  	if(NumColors!=0) //NumColors不為零,說明用到了調色板
  	{                    
    		//為邏輯調色板分配局部內存,大小為邏輯調色板結構長度加NumColors個PALETTENTRY大小
    		hPal=LocalAlloc(LHND,sizeof(LOGPALETTE) + NumColors* sizeof(PALETTEENTRY));
    
		//指針pPal指向該內存區
    		pPal =(LOGPALETTE *)LocalLock(hPal);

		//填寫邏輯調色板結構的頭
     		pPal->palNumEntries = NumColors;
     		pPal->palVersion    = 0x300;

    		//lpRGB指向的是調色板開始的位置
		lpRGB = (LPRGBQUAD)((LPSTR)lpImgData + (DWORD)sizeof(BITMAPINFOHEADER));

		//填寫每一項
		for (i = 0; i < NumColors; i++)
		{
			pPal->palPalEntry[i].peRed=lpRGB->rgbRed;
			pPal->palPalEntry[i].peGreen=lpRGB->rgbGreen;
			pPal->palPalEntry[i].peBlue=lpRGB->rgbBlue;
			pPal->palPalEntry[i].peFlags=(BYTE)0;
			lpRGB++; //指針移到下一項
		}

		//產生邏輯調色板,hPalette是一個全局變量
		hPalette=CreatePalette(pPal);

		//釋放局部內存
		LocalUnlock(hPal);
		LocalFree(hPal);
    }

    //獲得設備上下文句柄
    hDc=GetDC(hWnd);

    if(hPalette) //如果剛才產生了邏輯調色板
    {
	    //將新的邏輯調色板選入DC,將舊的邏輯調色板句柄保存在hPrevPalette
	    hPrevPalette=SelectPalette(hDc,hPalette,FALSE);
	    RealizePalette(hDc);
    }

    //產生位圖句柄
    hBitmap=CreateDIBitmap(hDc,	(LPBITMAPINFOHEADER)lpImgData, (LONG)CBM_INIT,
	    (LPSTR)lpImgData+sizeof(BITMAPINFOHEADER) +NumColors*sizeof(RGBQUAD),
	    (LPBITMAPINFO)lpImgData, DIB_RGB_COLORS);

    //將原來的調色板(如果有的話)選入設備上下文句柄
    if(hPalette && hPrevPalette)            
    {
	    SelectPalette(hDc,hPrevPalette,FALSE);
	    RealizePalette(hDc);
    }

    ReleaseDC(hWnd,hDc); //釋放設備上下文
    GlobalUnlock(hImgData); //解鎖內存區
    return TRUE; //成功返回
 }
*/
/* BOOL DIBShow(CFile* pFile)
 {
	BITMAPFILEHEADER bmfHeader;
	LPBITMAPINFOHEADER lpBMIH;
	int nCount, nSize;
	try 
	{
		nCount = pFile->Read((LPVOID) &bmfHeader, sizeof(BITMAPFILEHEADER));
		if(nCount != sizeof(BITMAPFILEHEADER)) {
			throw new CException;
		}
		if(bmfHeader.bfType != 0x4d42) {
			throw new CException;
		}
		nSize = bmfHeader.bfOffBits - sizeof(BITMAPFILEHEADER);
		lpBMIH = (LPBITMAPINFOHEADER) new char[nSize];
		//nBmihAlloc = m_nImageAlloc = crtAlloc;
		nCount = pFile->Read(m_lpBMIH, nSize); // info hdr & color table



		//ComputeMetrics();
		if(lpBMIH->biSize != sizeof(BITMAPINFOHEADER)) {
			TRACE("Not a valid Windows bitmap -- probably an OS/2 bitmap\n");
			throw new CException;
		}
		DWORD dwSizeImage = lpBMIH->biSizeImage;
		if(dwSizeImage == 0) {
			DWORD dwBytes = ((DWORD) lpBMIH->biWidth * lpBMIH->biBitCount) / 32;
			if(((DWORD) lpBMIH->biWidth * lpBMIH->biBitCount) % 32) {
				dwBytes++;
			}
			dwBytes *= 4;
			dwSizeImage = dwBytes * lpBMIH->biHeight; // no compression
		}
		LPVOID lpvColorTable = (LPBYTE) lpBMIH + sizeof(BITMAPINFOHEADER);


		//ComputePaletteSize(m_lpBMIH->biBitCount);
		if((lpBMIH == NULL) || (lpBMIH->biClrUsed == 0)) {
			switch(lpBMIH->biBitCount) {
				case 1:
					m_nColorTableEntries = 2;
					break;
				case 4:
					m_nColorTableEntries = 16;
					break;
				case 8:
					m_nColorTableEntries = 256;
					break;
				case 16:
				case 24:
				case 32:
					m_nColorTableEntries = 0;
					break;
				default:
					ASSERT(FALSE);
			}
		}
		else {
			m_nColorTableEntries = m_lpBMIH->biClrUsed;
		}
	ASSERT((m_nColorTableEntries >= 0) && (m_nColorTableEntries <= 256)); 


		MakePalette();
		m_lpImage = (LPBYTE) new char[m_dwSizeImage];
		nCount = pFile->Read(m_lpImage, m_dwSizeImage); // image only
	}

	catch(CException* pe) 
	{
		AfxMessageBox("Read error");
		pe->Delete();
		return FALSE;
	}
	return TRUE;
 }*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区三区自拍| 欧美国产日韩在线观看| 国产一区二区精品久久99| 国产精品亲子乱子伦xxxx裸| 欧美肥妇free| 色综合亚洲欧洲| 国产精品1区2区3区在线观看| 91福利视频网站| 久久久影院官网| av在线综合网| 亚洲成a人片在线不卡一二三区| 国产99久久精品| 欧美日韩电影在线| 欧美中文字幕一区二区三区亚洲| 久久婷婷成人综合色| 日本成人在线电影网| 欧美三电影在线| 午夜精品免费在线| 一本久久a久久精品亚洲| 制服丝袜日韩国产| www欧美成人18+| 精品一区二区三区久久| 久久精品在这里| 成人免费av网站| 欧美日韩在线一区二区| 欧美精品一区二区三区蜜桃视频| 国产亚洲美州欧州综合国| 久久久久99精品一区| 亚洲第一av色| 91色在线porny| 亚洲精选视频免费看| 91久久国产最好的精华液| 中文字幕一区二区三区四区| 色一情一伦一子一伦一区| 一片黄亚洲嫩模| 久久人人97超碰com| 91精品1区2区| 日本欧美大码aⅴ在线播放| 一本大道av一区二区在线播放| 久久av老司机精品网站导航| 五月天国产精品| 亚洲国产日韩在线一区模特| 欧美视频你懂的| 国产又黄又大久久| 国产精品青草综合久久久久99| 欧美性欧美巨大黑白大战| 国产一区二区三区精品欧美日韩一区二区三区 | 日韩国产成人精品| 狠狠色综合播放一区二区| 一区二区三区四区中文字幕| 欧美日韩aaa| 久久综合色婷婷| 亚洲欧美日韩久久精品| 国产一区二区三区日韩| 国产精品91一区二区| 亚洲欧美日韩系列| 欧美亚洲免费在线一区| 久草中文综合在线| 亚洲精品日韩一| 亚洲综合成人网| 中文字幕一区二区日韩精品绯色| 国产精品家庭影院| 国产精品成人午夜| 亚洲激情av在线| 中文字幕人成不卡一区| 一区视频在线播放| 亚洲欧美日本在线| 亚洲综合一二三区| 一区二区三区免费网站| 中文字幕日本不卡| 1区2区3区国产精品| 五月婷婷久久综合| 一区二区三区四区高清精品免费观看| 91精品啪在线观看国产60岁| 91在线小视频| 奇米888四色在线精品| 日本特黄久久久高潮| 国产精品欧美一级免费| 欧美一区二区三区在线| 在线精品视频小说1| 欧美极品aⅴ影院| 亚洲三级免费观看| 麻豆一区二区三| 国产日韩欧美综合一区| 欧亚一区二区三区| 91丝袜国产在线播放| 日韩精品一区二区三区蜜臀| 视频一区视频二区中文| 精品一区二区在线观看| 国产成人精品午夜视频免费| 日韩精品国产欧美| 91免费在线视频观看| 99久久综合精品| 国内精品自线一区二区三区视频| 久久久久免费观看| 日韩不卡在线观看日韩不卡视频| 国产成人av电影在线播放| 欧美制服丝袜第一页| 久久精品欧美一区二区三区不卡| 亚洲高清视频在线| eeuss鲁片一区二区三区 | 蜜臀av性久久久久蜜臀aⅴ四虎| 丁香激情综合国产| 日韩写真欧美这视频| 亚洲免费观看高清完整版在线| 韩国精品主播一区二区在线观看| 欧美日本韩国一区二区三区视频 | 国产精品日日摸夜夜摸av| 午夜精品成人在线视频| 99精品欧美一区二区蜜桃免费| 日韩一区二区三区视频| 亚洲国产aⅴ天堂久久| 9人人澡人人爽人人精品| 久久影视一区二区| 蜜桃久久av一区| 538在线一区二区精品国产| 亚洲欧美日韩精品久久久久| 国产盗摄精品一区二区三区在线| 欧美一级高清片| 亚洲韩国精品一区| 一本大道久久a久久精品综合| 国产精品免费视频网站| 国产精品亚洲专一区二区三区| 欧美电影在哪看比较好| 一区二区在线观看免费| 99精品国产99久久久久久白柏| 中文字幕第一区综合| 狠狠v欧美v日韩v亚洲ⅴ| 精品日韩在线观看| 久久精品国产亚洲一区二区三区| 在线不卡中文字幕| 天天综合天天综合色| 欧美人与禽zozo性伦| 天堂在线亚洲视频| 欧美日本不卡视频| 日韩va欧美va亚洲va久久| 91精品国产综合久久国产大片| 婷婷国产v国产偷v亚洲高清| 4438x成人网最大色成网站| 日韩电影在线一区| 日韩美女在线视频| 国产一区二区三区免费观看| 国产无人区一区二区三区| 国产成人免费网站| 亚洲天堂免费在线观看视频| 色综合中文字幕国产 | 亚洲欧美日韩国产一区二区三区 | 99re在线视频这里只有精品| 中文字幕一区二区三区色视频| jizz一区二区| 亚洲精品国产品国语在线app| 欧美专区日韩专区| 同产精品九九九| 日韩美女视频一区二区在线观看| 韩国三级电影一区二区| 精品国产乱码久久久久久牛牛| 国产精品中文字幕日韩精品| 欧美极品xxx| 91成人免费在线| 免费成人在线影院| 久久久精品2019中文字幕之3| av激情亚洲男人天堂| 亚洲国产精品视频| 精品国产露脸精彩对白| a级高清视频欧美日韩| 一区二区三国产精华液| 欧美人妇做爰xxxⅹ性高电影| 美女网站色91| 国产精品久久久久久久裸模| 色老汉av一区二区三区| 日韩成人精品在线观看| 欧美国产一区视频在线观看| 欧美性受xxxx黑人xyx性爽| 丝袜美腿一区二区三区| 久久久av毛片精品| 一道本成人在线| 久久 天天综合| 亚洲男人的天堂在线aⅴ视频 | 国产精品丝袜在线| 欧美三级日韩三级| 国产美女一区二区三区| 一区二区三区欧美激情| 精品国免费一区二区三区| thepron国产精品| 久久精品国产秦先生| 一区二区三区四区视频精品免费 | 久久综合av免费| 色狠狠av一区二区三区| 韩国一区二区三区| 亚洲图片欧美视频| 国产精品毛片高清在线完整版| 欧美精品久久99| av亚洲产国偷v产偷v自拍| 奇米精品一区二区三区在线观看| 亚洲视频在线观看一区| 欧美精品一区二区三区在线播放| 在线中文字幕一区二区| 国产成人综合在线观看| 蜜桃视频一区二区| 亚洲bt欧美bt精品|