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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? edgecontour.cpp

?? 汽車牌照的自動(dòng)定位和識(shí)別程序源代碼
?? CPP
?? 第 1 頁(yè) / 共 4 頁(yè)
字號(hào):
// ************************************************************************
//  文件名:edgecontour.cpp
//
//  圖像邊緣與輪廓運(yùn)算API函數(shù)庫(kù):
//
//  RobertDIB()		- robert邊緣檢測(cè)運(yùn)算
//  SobelDIB()		- sobel邊緣檢測(cè)運(yùn)算
//  PrewittDIB()	- prewitt邊緣檢測(cè)運(yùn)算
//  KirschDIB()		- kirsch邊緣檢測(cè)運(yùn)算
//  GaussDIB()		- gauss邊緣檢測(cè)運(yùn)算
//  HoughDIB()		- 利用Hough變換檢測(cè)平行直線
//  ContourDIB()	- 輪廓提取
//  TraceDIB()		- 輪廓跟蹤
//  FillDIB()		- 種子填充算法1
//  Fill2DIB()		- 種子填充算法2

//  添加水平和垂直邊緣檢測(cè)
//  spDIB()         - 水平   
//  czDIB()         - 垂直 


//
// ************************************************************************

#include "stdafx.h"
#include "edgecontour.h"
#include "TemplateTrans.h"
#include "DIBAPI.h"

#include <math.h>
#include <direct.h>

/*************************************************************************
 *
 * 函數(shù)名稱:
 *   RobertDIB()
 *
 * 參數(shù):
 *   LPSTR lpDIBBits    - 指向源DIB圖像指針
 *   LONG  lWidth       - 源圖像寬度(象素?cái)?shù),必須是4的倍數(shù))
 *   LONG  lHeight      - 源圖像高度(象素?cái)?shù))
 * 返回值:
 *   BOOL               - 邊緣檢測(cè)成功返回TRUE,否則返回FALSE。
 *
 * 說明:
 * 該函數(shù)用Robert邊緣檢測(cè)算子對(duì)圖像進(jìn)行邊緣檢測(cè)運(yùn)算。
 * 
 * 要求目標(biāo)圖像為灰度圖像。
 ************************************************************************/

BOOL WINAPI RobertDIB(LPSTR lpDIBBits, LONG lWidth, LONG lHeight)
{
	
	// 指向源圖像的指針
	LPSTR	lpSrc;
	
	// 指向緩存圖像的指針
	LPSTR	lpDst;
	
	// 指向緩存DIB圖像的指針
	LPSTR	lpNewDIBBits;
	HLOCAL	hNewDIBBits;

	//循環(huán)變量
	long i;
	long j;

	//像素值
	double result;
	unsigned char pixel[4];

	// 暫時(shí)分配內(nèi)存,以保存新圖像
	hNewDIBBits = LocalAlloc(LHND, lWidth * lHeight);

	if (hNewDIBBits == NULL)
	{
		// 分配內(nèi)存失敗
		return FALSE;
	}
	
	// 鎖定內(nèi)存
	lpNewDIBBits = (char * )LocalLock(hNewDIBBits);

	// 初始化新分配的內(nèi)存,設(shè)定初始值為255
	lpDst = (char *)lpNewDIBBits;
	memset(lpDst, (BYTE)255, lWidth * lHeight);


	//使用水平方向的結(jié)構(gòu)元素進(jìn)行腐蝕
	for(j = lHeight-1; j > 0; j--)
	{
		for(i = 0;i <lWidth-1; i++)
		{
			//由于使用2×2的模板,為防止越界,所以不處理最下邊和最右邊的兩列像素

			// 指向源圖像第j行,第i個(gè)象素的指針			
			lpSrc = (char *)lpDIBBits + lWidth * j + i;

			// 指向目標(biāo)圖像第j行,第i個(gè)象素的指針			
			lpDst = (char *)lpNewDIBBits + lWidth * j + i;

			//取得當(dāng)前指針處2*2區(qū)域的像素值,注意要轉(zhuǎn)換為unsigned char型
			pixel[0] = (unsigned char)*lpSrc;
			pixel[1] = (unsigned char)*(lpSrc + 1);
			pixel[2] = (unsigned char)*(lpSrc - lWidth);
			pixel[3] = (unsigned char)*(lpSrc - lWidth + 1);

			//計(jì)算目標(biāo)圖像中的當(dāng)前點(diǎn)
			 result = sqrt(( pixel[0] - pixel[3] )*( pixel[0] - pixel[3] ) + \
				  ( pixel[1] - pixel[2] )*( pixel[1] - pixel[2] ));
			*lpDst = (unsigned char)result;
		
		}
	}

	// 復(fù)制腐蝕后的圖像
	memcpy(lpDIBBits, lpNewDIBBits, lWidth * lHeight);

	// 釋放內(nèi)存
	LocalUnlock(hNewDIBBits);
	LocalFree(hNewDIBBits);

	// 返回
	return TRUE;
}

/*************************************************************************
 *
 * 函數(shù)名稱:
 *   SobelDIB()
 *
 * 參數(shù):
 *   LPSTR lpDIBBits    - 指向源DIB圖像指針
 *   LONG  lWidth       - 源圖像寬度(象素?cái)?shù),必須是4的倍數(shù))
 *   LONG  lHeight      - 源圖像高度(象素?cái)?shù))
 * 返回值:
 *   BOOL               - 邊緣檢測(cè)成功返回TRUE,否則返回FALSE。
 *
 * 說明:
 * 該函數(shù)用Sobel邊緣檢測(cè)算子對(duì)圖像進(jìn)行邊緣檢測(cè)運(yùn)算。
 * 
 * 要求目標(biāo)圖像為灰度圖像。
 ************************************************************************/

BOOL WINAPI SobelDIB(LPSTR lpDIBBits, LONG lWidth, LONG lHeight)
{
	
	// 指向緩存圖像的指針
	LPSTR	lpDst1;
	LPSTR	lpDst2;
	
	// 指向緩存DIB圖像的指針
	LPSTR	lpNewDIBBits1;
	HLOCAL	hNewDIBBits1;
	LPSTR	lpNewDIBBits2;
	HLOCAL	hNewDIBBits2;

	//循環(huán)變量
	long i;
	long j;

	// 模板高度
	int		iTempH;
	
	// 模板寬度
	int		iTempW;
	
	// 模板系數(shù)
	FLOAT	fTempC;
	
	// 模板中心元素X坐標(biāo)
	int		iTempMX;
	
	// 模板中心元素Y坐標(biāo)
	int		iTempMY;
	
	//模板數(shù)組
	FLOAT aTemplate[9];

	// 暫時(shí)分配內(nèi)存,以保存新圖像
	hNewDIBBits1 = LocalAlloc(LHND, lWidth * lHeight);

	if (hNewDIBBits1 == NULL)
	{
		// 分配內(nèi)存失敗
		return FALSE;
	}
	
	// 鎖定內(nèi)存
	lpNewDIBBits1 = (char * )LocalLock(hNewDIBBits1);

	// 暫時(shí)分配內(nèi)存,以保存新圖像
	hNewDIBBits2 = LocalAlloc(LHND, lWidth * lHeight);

	if (hNewDIBBits2 == NULL)
	{
		// 分配內(nèi)存失敗
		return FALSE;
	}
	
	// 鎖定內(nèi)存
	lpNewDIBBits2 = (char * )LocalLock(hNewDIBBits2);

	// 拷貝源圖像到緩存圖像中
	lpDst1 = (char *)lpNewDIBBits1;
	memcpy(lpNewDIBBits1, lpDIBBits, lWidth * lHeight);
	lpDst2 = (char *)lpNewDIBBits2;
	memcpy(lpNewDIBBits2, lpDIBBits, lWidth * lHeight);

	// 設(shè)置Sobel模板參數(shù)
	iTempW = 3;
	iTempH = 3;
	fTempC = 1.0;
	iTempMX = 1;
	iTempMY = 1;
	aTemplate[0] = -1.0;
	aTemplate[1] = -2.0;
	aTemplate[2] = -1.0;
	aTemplate[3] = 0.0;
	aTemplate[4] = 0.0;
	aTemplate[5] = 0.0;
	aTemplate[6] = 1.0;
	aTemplate[7] = 2.0;
	aTemplate[8] = 1.0;

	// 調(diào)用Template()函數(shù)
	if (!Template(lpNewDIBBits1, lWidth, lHeight, 
		iTempH, iTempW, iTempMX, iTempMY, aTemplate, fTempC))
	{
		return FALSE;
	}

	// 設(shè)置Sobel模板參數(shù)
	aTemplate[0] = -1.0;
	aTemplate[1] = 0.0;
	aTemplate[2] = 1.0;
	aTemplate[3] = -2.0;
	aTemplate[4] = 0.0;
	aTemplate[5] = 2.0;
	aTemplate[6] = -1.0;
	aTemplate[7] = 0.0;
	aTemplate[8] = 1.0;

	// 調(diào)用Template()函數(shù)
	if (!Template(lpNewDIBBits2, lWidth, lHeight, 
		iTempH, iTempW, iTempMX, iTempMY, aTemplate, fTempC))
	{
		return FALSE;
	}

	//求兩幅緩存圖像的最大值
	for(j = 0; j <lHeight; j++)
	{
		for(i = 0;i <lWidth-1; i++)
		{

			// 指向緩存圖像1倒數(shù)第j行,第i個(gè)象素的指針			
			lpDst1 = (char *)lpNewDIBBits1 + lWidth * j + i;

			// 指向緩存圖像2倒數(shù)第j行,第i個(gè)象素的指針			
			lpDst2 = (char *)lpNewDIBBits2 + lWidth * j + i;
			
			if(*lpDst2 > *lpDst1)
				*lpDst1 = *lpDst2;
		
		}
	}

	// 復(fù)制經(jīng)過模板運(yùn)算后的圖像到源圖像
	memcpy(lpDIBBits, lpNewDIBBits1, lWidth * lHeight);

	// 釋放內(nèi)存
	LocalUnlock(hNewDIBBits1);
	LocalFree(hNewDIBBits1);

	LocalUnlock(hNewDIBBits2);
	LocalFree(hNewDIBBits2);
	// 返回
	return TRUE;
}

/*************************************************************************
 *
 * 函數(shù)名稱:
 *   PrewittDIB()
 *
 * 參數(shù):
 *   LPSTR lpDIBBits    - 指向源DIB圖像指針
 *   LONG  lWidth       - 源圖像寬度(象素?cái)?shù),必須是4的倍數(shù))
 *   LONG  lHeight      - 源圖像高度(象素?cái)?shù))
 * 返回值:
 *   BOOL               - 邊緣檢測(cè)成功返回TRUE,否則返回FALSE。
 *
 * 說明:
 * 該函數(shù)用Prewitt邊緣檢測(cè)算子對(duì)圖像進(jìn)行邊緣檢測(cè)運(yùn)算。
 * 
 * 要求目標(biāo)圖像為灰度圖像。
 ************************************************************************/

BOOL WINAPI PrewittDIB(LPSTR lpDIBBits, LONG lWidth, LONG lHeight)
{
	
	// 指向緩存圖像的指針
	LPSTR	lpDst1;
	LPSTR	lpDst2;
	
	// 指向緩存DIB圖像的指針
	LPSTR	lpNewDIBBits1;
	HLOCAL	hNewDIBBits1;
	LPSTR	lpNewDIBBits2;
	HLOCAL	hNewDIBBits2;

	//循環(huán)變量
	long i;
	long j;

	// 模板高度
	int		iTempH;
	
	// 模板寬度
	int		iTempW;
	
	// 模板系數(shù)
	FLOAT	fTempC;
	
	// 模板中心元素X坐標(biāo)
	int		iTempMX;
	
	// 模板中心元素Y坐標(biāo)
	int		iTempMY;
	
	//模板數(shù)組
	FLOAT aTemplate[9];

	// 暫時(shí)分配內(nèi)存,以保存新圖像
	hNewDIBBits1 = LocalAlloc(LHND, lWidth * lHeight);

	if (hNewDIBBits1 == NULL)
	{
		// 分配內(nèi)存失敗
		return FALSE;
	}
	
	// 鎖定內(nèi)存
	lpNewDIBBits1 = (char * )LocalLock(hNewDIBBits1);

	// 暫時(shí)分配內(nèi)存,以保存新圖像
	hNewDIBBits2 = LocalAlloc(LHND, lWidth * lHeight);

	if (hNewDIBBits2 == NULL)
	{
		// 分配內(nèi)存失敗
		return FALSE;
	}
	
	// 鎖定內(nèi)存
	lpNewDIBBits2 = (char * )LocalLock(hNewDIBBits2);

	// 拷貝源圖像到緩存圖像中
	lpDst1 = (char *)lpNewDIBBits1;
	memcpy(lpNewDIBBits1, lpDIBBits, lWidth * lHeight);
	lpDst2 = (char *)lpNewDIBBits2;
	memcpy(lpNewDIBBits2, lpDIBBits, lWidth * lHeight);


	// 設(shè)置Prewitt模板參數(shù)
	iTempW = 3;
	iTempH = 3;
	fTempC = 1.0;
	iTempMX = 1;
	iTempMY = 1;
	aTemplate[0] = -1.0;
	aTemplate[1] = -1.0;
	aTemplate[2] = -1.0;
	aTemplate[3] = 0.0;
	aTemplate[4] = 0.0;
	aTemplate[5] = 0.0;
	aTemplate[6] = 1.0;
	aTemplate[7] = 1.0;
	aTemplate[8] = 1.0;

	// 調(diào)用Template()函數(shù)
	if (!Template(lpNewDIBBits1, lWidth, lHeight, 
		iTempH, iTempW, iTempMX, iTempMY, aTemplate, fTempC))
	{
		return FALSE;
	}

	// 設(shè)置Prewitt模板參數(shù)
	aTemplate[0] = 1.0;
	aTemplate[1] = 0.0;
	aTemplate[2] = -1.0;
	aTemplate[3] = 1.0;
	aTemplate[4] = 0.0;
	aTemplate[5] = -1.0;
	aTemplate[6] = 1.0;
	aTemplate[7] = 0.0;
	aTemplate[8] = -1.0;

	// 調(diào)用Template()函數(shù)
	if (!Template(lpNewDIBBits2, lWidth, lHeight, 
		iTempH, iTempW, iTempMX, iTempMY, aTemplate, fTempC))
	{
		return FALSE;
	}

	//求兩幅緩存圖像的最大值
	for(j = 0; j <lHeight; j++)
	{
		for(i = 0;i <lWidth-1; i++)
		{

			// 指向緩存圖像1倒數(shù)第j行,第i個(gè)象素的指針			
			lpDst1 = (char *)lpNewDIBBits1 + lWidth * j + i;

			// 指向緩存圖像2倒數(shù)第j行,第i個(gè)象素的指針			
			lpDst2 = (char *)lpNewDIBBits2 + lWidth * j + i;
			
			if(*lpDst2 > *lpDst1)
				*lpDst1 = *lpDst2;
		
		}
	}

	// 復(fù)制經(jīng)過模板運(yùn)算后的圖像到源圖像
	memcpy(lpDIBBits, lpNewDIBBits1, lWidth * lHeight);

	// 釋放內(nèi)存
	LocalUnlock(hNewDIBBits1);
	LocalFree(hNewDIBBits1);

	LocalUnlock(hNewDIBBits2);
	LocalFree(hNewDIBBits2);
	// 返回
	return TRUE;
}

/*************************************************************************
 *
 * 函數(shù)名稱:
 *   KirschDIB()
 *
 * 參數(shù):
 *   LPSTR lpDIBBits    - 指向源DIB圖像指針
 *   LONG  lWidth       - 源圖像寬度(象素?cái)?shù),必須是4的倍數(shù))
 *   LONG  lHeight      - 源圖像高度(象素?cái)?shù))
 * 返回值:
 *   BOOL               - 邊緣檢測(cè)成功返回TRUE,否則返回FALSE。
 *
 * 說明:
 * 該函數(shù)用kirsch邊緣檢測(cè)算子對(duì)圖像進(jìn)行邊緣檢測(cè)運(yùn)算。
 * 
 * 要求目標(biāo)圖像為灰度圖像。
 ************************************************************************/

BOOL WINAPI KirschDIB(LPSTR lpDIBBits, LONG lWidth, LONG lHeight)
{
	
	// 指向緩存圖像的指針
	LPSTR	lpDst1;
	LPSTR	lpDst2;
	
	// 指向緩存DIB圖像的指針
	LPSTR	lpNewDIBBits1;
	HLOCAL	hNewDIBBits1;
	LPSTR	lpNewDIBBits2;
	HLOCAL	hNewDIBBits2;

	//循環(huán)變量
	long i;
	long j;

	// 模板高度
	int		iTempH;
	
	// 模板寬度
	int		iTempW;
	
	// 模板系數(shù)
	FLOAT	fTempC;
	
	// 模板中心元素X坐標(biāo)

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕制服丝袜一区二区三区| 国产尤物一区二区在线| 色综合天天综合网国产成人综合天 | 欧美大片一区二区三区| 亚洲va欧美va人人爽午夜| 不卡高清视频专区| 国产精品国产三级国产aⅴ中文 | 欧美大白屁股肥臀xxxxxx| 性欧美疯狂xxxxbbbb| 欧美性猛片aaaaaaa做受| 亚洲特黄一级片| 欧美日韩另类国产亚洲欧美一级| 亚洲精品福利视频网站| 欧美日韩在线播放一区| 午夜亚洲国产au精品一区二区 | 激情成人午夜视频| 久久久久99精品一区| proumb性欧美在线观看| 一区二区三区国产精华| 欧美猛男gaygay网站| 极品尤物av久久免费看| 国产精品免费人成网站| 91久久一区二区| 国产乱码精品一区二区三区忘忧草 | 色94色欧美sute亚洲线路二 | 亚洲色图在线视频| 91精品国产综合久久久久久久久久 | 国产传媒欧美日韩成人| 亚洲一区影音先锋| 亚洲国产高清在线| 91精品黄色片免费大全| 91亚洲永久精品| 国产九色sp调教91| 亚洲v中文字幕| 国产精品二区一区二区aⅴ污介绍| 91精品国产综合久久国产大片| 国产精品2024| 久久激情五月婷婷| 日韩影视精彩在线| 一区二区三区在线观看动漫| 久久综合九色综合97_久久久| 日本高清不卡视频| 成人免费高清视频| 国产精品1区2区| 精品一区二区三区久久| 日韩精品成人一区二区三区| 亚洲综合无码一区二区| 亚洲精品国产一区二区精华液| 精品国产伦一区二区三区观看体验 | 亚洲一级二级三级在线免费观看| 久久精品夜色噜噜亚洲aⅴ| 欧美一区二区福利视频| 欧美久久婷婷综合色| 日韩一卡二卡三卡四卡| 日韩亚洲欧美中文三级| 91麻豆精品国产91久久久 | 久久综合国产精品| 久久久久久久久久久久久久久99 | 国产精品久久久久久久岛一牛影视 | 91精品在线一区二区| 日韩一区二区三区视频在线 | 2020国产成人综合网| 久久久一区二区三区捆绑**| 欧美激情综合网| 亚洲女性喷水在线观看一区| 亚洲成人av免费| 国产一区二区三区综合| 成人av在线播放网站| 色综合久久中文综合久久97| 3atv一区二区三区| 国产片一区二区| 午夜精品一区二区三区免费视频 | 天天色天天操综合| 国产91在线|亚洲| 欧美日韩激情在线| 国产偷国产偷精品高清尤物| 亚洲视频在线观看一区| 免费精品99久久国产综合精品| 国产精品亚洲第一| 欧美一区二区三区免费大片| 91精品国产91久久久久久一区二区| 久久久精品国产免大香伊| 亚洲青青青在线视频| 美女视频黄a大片欧美| 色噜噜狠狠成人网p站| 久久综合九色综合欧美亚洲| 日韩不卡手机在线v区| 91麻豆文化传媒在线观看| 久久久精品人体av艺术| 奇米色777欧美一区二区| 欧美色大人视频| 亚洲一区欧美一区| 91在线视频网址| 国产精品的网站| 欧美高清在线视频| 国产在线视频精品一区| 欧美绝品在线观看成人午夜影视| 亚洲欧美日韩国产另类专区| 成人av在线播放网址| 国产欧美一区二区精品性色超碰| 久久成人综合网| 久久网站最新地址| 国产在线不卡一区| 精品国产91久久久久久久妲己| 热久久免费视频| 日韩免费一区二区| 极品少妇一区二区| 国产精品情趣视频| 91福利视频在线| 日韩高清一级片| 久久人人超碰精品| 91尤物视频在线观看| 亚洲美女精品一区| 日韩一级二级三级| 国产精品99久久久久久宅男| 最好看的中文字幕久久| 在线观看日韩高清av| 美女国产一区二区三区| 国产精品免费av| 欧美日韩亚洲国产综合| 国产精品香蕉一区二区三区| 国产精品美女一区二区三区| 欧美综合久久久| 狠狠色丁香婷综合久久| 亚洲欧美另类在线| 精品久久五月天| 欧美亚一区二区| 国产麻豆成人精品| 亚洲一区av在线| 中文字幕不卡在线播放| 日韩午夜电影在线观看| 91网站视频在线观看| 国产精品资源网站| 首页欧美精品中文字幕| 最近中文字幕一区二区三区| 精品国产免费视频| 欧美一区二区在线看| jlzzjlzz亚洲日本少妇| 激情偷乱视频一区二区三区| 午夜精品福利一区二区三区av | 成人性视频免费网站| 免费av网站大全久久| 亚洲一区二区三区爽爽爽爽爽 | 国产午夜精品一区二区| 日韩女优毛片在线| 精品国产一区二区三区忘忧草 | 日韩欧美久久一区| 日韩一区二区免费在线观看| 欧美性感一区二区三区| 日本高清不卡aⅴ免费网站| 91黄色小视频| 欧美亚州韩日在线看免费版国语版| 91视频在线观看免费| 成人激情黄色小说| 色婷婷av久久久久久久| 91视频观看视频| 欧美亚洲高清一区| 91精品久久久久久久91蜜桃| 精品欧美一区二区久久| 久久久久久久电影| 中文字幕在线一区| 亚洲一区二区成人在线观看| 五月天一区二区| 国产一区二区视频在线播放| av亚洲精华国产精华精| 欧美日韩视频在线观看一区二区三区| 欧美午夜精品电影| 精品国产免费一区二区三区香蕉 | 亚洲精品在线观看网站| 国产精品毛片高清在线完整版| 国产精品福利在线播放| 日韩电影免费在线看| 国产v综合v亚洲欧| 在线播放国产精品二区一二区四区 | 国产一区二区三区四区五区美女| 国产精品一区二区黑丝| 欧美亚洲一区二区在线观看| 欧美大片在线观看| 亚洲国产三级在线| 成人综合激情网| 日韩色在线观看| 伊人性伊人情综合网| 国产在线一区二区综合免费视频| 91福利区一区二区三区| 国产精品国产三级国产aⅴ中文| 美女诱惑一区二区| 欧美久久久久久久久久| 亚洲欧洲日韩综合一区二区| 国产米奇在线777精品观看| 欧美日韩1234| 午夜国产精品影院在线观看| 91麻豆免费看| 亚洲欧美经典视频| 一本大道av一区二区在线播放 | 欧美精品丝袜中出| 亚洲成人动漫精品| 欧美美女一区二区三区| 爽爽淫人综合网网站| 欧美日韩一区久久| 日本成人中文字幕|