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

  • 大小: 1.92MB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2023-11-15
  • 語言: C/C++
  • 標(biāo)簽: soble??算子??邊緣檢測??

資源簡介

基于梯度算子 soble 算子的 邊緣檢測 VisualC++實(shí)現(xiàn)(可重建圖像)

資源截圖

代碼片段和文件信息

//?************************************************************************
//??文件名:edgecontour.cpp
//
//??圖像邊緣與輪廓運(yùn)算API函數(shù)庫:
//
//??RobertDIB() -?robert邊緣檢測運(yùn)算
//??SobelDIB() -?sobel邊緣檢測運(yùn)算
//??PrewittDIB() -?prewitt邊緣檢測運(yùn)算
//??KirschDIB() -?kirsch邊緣檢測運(yùn)算
//??GaussDIB() -?gauss邊緣檢測運(yùn)算
//??HoughDIB() -?利用Hough變換檢測平行直線
//??ContourDIB() -?輪廓提取
//??TraceDIB() -?輪廓跟蹤
//??FillDIB() -?種子填充算法1
//??Fill2DIB() -?種子填充算法2

//
//?************************************************************************

#include?“stdafx.h“
#include?“edgecontour.h“
#include?“TemplateTrans.h“
#include?“DIBAPI.h“

#include?
#include?

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

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

?????文件??????22146??2008-11-07?18:32??sobel邊緣檢測運(yùn)算(可圖象重建)\Debug\DIBAPI.obj

?????文件??????25584??2008-11-07?18:32??sobel邊緣檢測運(yùn)算(可圖象重建)\Debug\edgecontour.obj

?????文件??????20195??2008-11-09?19:10??sobel邊緣檢測運(yùn)算(可圖象重建)\Debug\MainFrm.obj

?????文件?????151654??2008-11-09?19:10??sobel邊緣檢測運(yùn)算(可圖象重建)\Debug\my1.exe

?????文件?????372612??2008-11-09?19:10??sobel邊緣檢測運(yùn)算(可圖象重建)\Debug\my1.ilk

?????文件??????23094??2008-11-07?18:32??sobel邊緣檢測運(yùn)算(可圖象重建)\Debug\my1.obj

?????文件????5485732??2008-11-07?18:32??sobel邊緣檢測運(yùn)算(可圖象重建)\Debug\my1.pch

?????文件?????386048??2008-11-07?18:32??sobel邊緣檢測運(yùn)算(可圖象重建)\Debug\my1.pdb

?????文件???????7256??2008-11-07?18:32??sobel邊緣檢測運(yùn)算(可圖象重建)\Debug\my1.res

?????文件??????35573??2008-11-07?18:32??sobel邊緣檢測運(yùn)算(可圖象重建)\Debug\my1Doc.obj

?????文件??????25236??2008-11-07?18:32??sobel邊緣檢測運(yùn)算(可圖象重建)\Debug\my1View.obj

?????文件?????105874??2008-11-07?18:32??sobel邊緣檢測運(yùn)算(可圖象重建)\Debug\StdAfx.obj

?????文件???????9350??2008-11-07?18:32??sobel邊緣檢測運(yùn)算(可圖象重建)\Debug\TemplateTrans.obj

?????文件?????205824??2008-11-12?09:30??sobel邊緣檢測運(yùn)算(可圖象重建)\Debug\vc60.idb

?????文件?????364544??2008-11-07?18:32??sobel邊緣檢測運(yùn)算(可圖象重建)\Debug\vc60.pdb

?????文件??????29042??2007-06-03?17:37??sobel邊緣檢測運(yùn)算(可圖象重建)\DIBAPI.CPP

?????文件???????1806??2004-10-21?08:48??sobel邊緣檢測運(yùn)算(可圖象重建)\DIBAPI.H

?????文件??????39362??2008-01-03?14:11??sobel邊緣檢測運(yùn)算(可圖象重建)\edgecontour.cpp

?????文件???????1008??2001-02-22?23:18??sobel邊緣檢測運(yùn)算(可圖象重建)\edgecontour.h

?????文件???????2504??2007-06-08?14:05??sobel邊緣檢測運(yùn)算(可圖象重建)\MainFrm.cpp

?????文件???????1581??2007-06-08?14:05??sobel邊緣檢測運(yùn)算(可圖象重建)\MainFrm.h

?????文件??????29000??2008-11-07?18:31??sobel邊緣檢測運(yùn)算(可圖象重建)\my1.aps

?????文件???????2329??2008-11-12?09:31??sobel邊緣檢測運(yùn)算(可圖象重建)\my1.clw

?????文件???????4155??2007-06-08?14:05??sobel邊緣檢測運(yùn)算(可圖象重建)\my1.cpp

?????文件???????4885??2008-01-03?14:11??sobel邊緣檢測運(yùn)算(可圖象重建)\my1.dsp

?????文件????????531??2007-06-08?14:05??sobel邊緣檢測運(yùn)算(可圖象重建)\my1.dsw

?????文件???????1323??2007-06-08?14:05??sobel邊緣檢測運(yùn)算(可圖象重建)\my1.h

?????文件?????164864??2008-11-12?09:32??sobel邊緣檢測運(yùn)算(可圖象重建)\my1.ncb

?????文件??????56832??2008-11-12?09:32??sobel邊緣檢測運(yùn)算(可圖象重建)\my1.opt

?????文件????????779??2008-11-09?19:10??sobel邊緣檢測運(yùn)算(可圖象重建)\my1.plg

............此處省略21個(gè)文件信息

評論

共有 條評論