版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
基于OpenCV的火焰檢測尖角特征代碼voidCPatternrecognitionDlg::SharpAngle(IplImage*pImage)//,CvPointAnglePointPosition[])
{
SharpAngle_Num=0;
intlWidth,lHeight;
unsignedchar*lpimage,*lpSrc;
inti,j,m;
//邊界掃描的方向數(shù)目計(jì)數(shù)
intDirectSum1;
intDirectSum2;
//掃描中的臨時寬(從左往右)
inttempW;
//掃描中的臨時高(從上往下)
inttempH;
//掃描到的連續(xù)目標(biāo)白點(diǎn)計(jì)數(shù)
intCount=0;
//用于尖角頂點(diǎn)判定條件(起始掃描點(diǎn)設(shè)為左、右兩個邊界點(diǎn),左右可以重合為一個點(diǎn))
//條件一:首先必須是頂點(diǎn)(尖或廣義平尖角,即該點(diǎn)上方無目標(biāo)白點(diǎn))
intFindTopPoint1=0;
//條件二:如果是廣義平尖角即同一行有幾個連續(xù)的目標(biāo)白點(diǎn),則這個連續(xù)目標(biāo)白點(diǎn)個數(shù)必須小于閾值
intFindTopPoint2=0;
//尖角頂點(diǎn)的起始點(diǎn)和結(jié)束點(diǎn)下標(biāo)
intTopPointFirst=0,TopPointEnd=0;
//左右邊界點(diǎn)下標(biāo)(橫坐標(biāo))及其相隔點(diǎn)數(shù)
intColumnL,ColumnR,BounderSpaceNum;
//尖角左右邊界交點(diǎn)的縱坐標(biāo),及尖角高度(用這兩個條件判斷尖角)
intRowSumL,RowSumR;//左右邊界方向,掃描的行數(shù)
//用標(biāo)記法跟蹤掃描的5個方向//注意掃描圖像時從上往下進(jìn)行
intDirection1[2][2]={{1,-1},{1,0}};
intDirection2[2][2]={{1,0},{1,1}};
//(指向排列的圖像數(shù)據(jù))
lpimage=(uchar*)pImage->imageData;
lWidth=pImage->width;
lHeight=pImage->height;
//平尖角閾值,現(xiàn)在設(shè)為整幅圖寬度的5%
intPlainAngleThreshold=16;
for(j=0;j<lHeight;j++)
{
i=0;
while(i<lWidth)
{
Count=1;
lpSrc=lpimage+(j*lWidth+i);
//當(dāng)前點(diǎn)為目標(biāo)白點(diǎn)
if(*lpSrc==255.0)
{
if(j>0)
{
//看當(dāng)前目標(biāo)白點(diǎn)上方小區(qū)域是否也為目標(biāo)白點(diǎn)
for(m=-4;m<=4;m++)
{
//防止地址越界
if((0<=(i+m))&&((i+m)<lWidth))
{
//lpSrc為目標(biāo)白點(diǎn)的上一行左右m個點(diǎn),判斷是否有白點(diǎn)存在
lpSrc=lpimage+((j-1)*lWidth+i+m);
//若當(dāng)前檢測點(diǎn)上方小區(qū)域有目標(biāo)白點(diǎn),則非尖角頂點(diǎn),退出頂點(diǎn)檢測
if(*lpSrc==255.0)
break;
}
}
if(m<=4)
FindTopPoint1=0;//尖角頂點(diǎn)判定條件1為非
else
{
FindTopPoint1=1;
//找到一個尖角頂點(diǎn),起始點(diǎn)
TopPointFirst=i;
}
}
else
FindTopPoint1=1;//endofif(j>0)
}
else
FindTopPoint1=0;//endofif(*lpSrc==255.0)
//若尖角頂點(diǎn)判定條件1為真(即找到頂點(diǎn)起始點(diǎn)),則進(jìn)行條件2判斷
if(FindTopPoint1)
{
while(1)
{
//防止地址越界
if((0<=(i+Count))&&((i+Count)<lWidth))
{
lpSrc=lpimage+(j*lWidth+i+Count);
if(*lpSrc!=0)
Count++;//count統(tǒng)計(jì)同行連續(xù)白點(diǎn)數(shù)目
else
break;
}
else
break;
}
//若當(dāng)前檢測點(diǎn)同行的連續(xù)目標(biāo)白點(diǎn)個數(shù)<閾值8時,則判定該處是:廣義平尖角
if(Count<PlainAngleThreshold)
{
//反之,尖角頂點(diǎn)判定條件2為非
FindTopPoint2=1;
//尖角頂點(diǎn)的右端點(diǎn)
TopPointEnd=TopPointFirst+Count-1;
}
else
FindTopPoint2=0;
}//endofif(FindTopPoint1)
/*****************************以上為尖角頂點(diǎn)檢測***************************/
//若找到尖角頂點(diǎn)(狹義或廣義平尖角:多個連續(xù)目標(biāo)白點(diǎn)且個數(shù)和<8),則進(jìn)行左下和右下邊界掃描
if(FindTopPoint1&&FindTopPoint2)
{
//左右向下掃描的列起始點(diǎn)坐標(biāo)
ColumnL=TopPointFirst;
ColumnR=TopPointEnd;
//從ColumnL開始進(jìn)行左下邊界掃描
//尖角左右邊界交點(diǎn)的縱坐標(biāo)
RowSumL=0;//總共檢查5行
//向下掃描,檢測0,1,2,3,4共5行(實(shí)質(zhì)是設(shè)定尖角的高度為5)
while(RowSumL<=4)
{
//每行掃描時掃描起始方向數(shù)置0
DirectSum1=0;
while(1)
{
//向下搜索時像素的臨時高(離上的像素個數(shù))
tempH=j+RowSumL+Direction1[DirectSum1][0];
//向下搜索時像素的臨時寬(離左的像素個數(shù))
tempW=ColumnL+Direction1[DirectSum1][1];
if(((0<=tempW)&&(tempW<lWidth))&&((0<=tempH)&&(tempH<lHeight)))//地址有效
{
//五個方向的周圍點(diǎn)
lpSrc=lpimage+(tempH*lWidth+tempW);
//尖角周圍有目標(biāo)白點(diǎn)
if(*lpSrc==255.0)
{
//則RowSumL++,以掃描下一行
RowSumL++;
//記錄下一行掃描時左邊界起始點(diǎn)列坐標(biāo)
ColumnL=tempW;
//表示若本次掃描找到隔行邊界點(diǎn),則退出本行掃描以進(jìn)入下一行掃描
break;
}
else
DirectSum1++;//進(jìn)行下一個方向掃描
}//endofif(((0<=tempW)&&(tempW<lWidth))&&((0<=tempH)&&(tempH<lHeight)))
//地址無效,直接進(jìn)入到下一個方向掃描
else
{
//進(jìn)行下一個方向掃描,注意原掃描點(diǎn)的行列坐標(biāo)不變
DirectSum1++;
}//endofif(((0<=tempW)&&(tempW<lWidth))&&((0<=tempH)&&(tempH<lHeight)))
//若跟蹤掃描的2個方向全部掃描完還沒有找到邊界白點(diǎn),則認(rèn)為該處輪廓不規(guī)則,
//不存在尖角,退出小循環(huán),并置ColumnL=0以用于后續(xù)尖角判斷(左右邊界距離)
if(DirectSum1>1)
{
ColumnL=0;
break;//退出while(1)
}
}//while(1)結(jié)束
if(DirectSum1>1)
break;//退出大循環(huán)
}//endofwhile(RowSumL<4)
/*****************以上為從左頂點(diǎn)向左下掃描進(jìn)行邊界檢測*******************/
//從ColumnR開始進(jìn)行右下邊界掃描,向下掃描5行
RowSumR=0;
//向下掃描,檢測0,1,2,3,4共5行
while(RowSumR<=4)
{
DirectSum2=1;
while(1)
{
tempH=j+RowSumR+Direction2[DirectSum2][0];
tempW=ColumnR+Direction2[DirectSum2][1];
//地址有效
if(((0<=tempW)&&(tempW<lWidth))&&((0<=tempH)&&(tempH<lHeight)))
{
lpSrc=lpimage+(tempH*lWidth+tempW);
//此方向點(diǎn)為目標(biāo)白點(diǎn)
if(*lpSrc==255.0)
{
//則RowSumR++,以掃描下一行
RowSumR++;
//記錄下一行掃描時右邊界起始點(diǎn)列坐標(biāo)
ColumnR=tempW;
//表示若本次掃描找到隔行邊界點(diǎn),則退出本行掃描以進(jìn)入下一行掃描
break;
}
else
{
//進(jìn)行下一個方向掃描,注意原掃描點(diǎn)的行列坐標(biāo)不變
DirectSum2--;
}//endofif(*lpSrc==255.0)
}
else
{
//地址無效,直接進(jìn)行下一方向掃描
DirectSum2--;//endofif(((0<=tempW)&&(tempW<lWidth))&&((0<=tempH)&&(tempH<lHeight)))
}
//若跟蹤掃描的5個方向全部掃描完還沒有找到邊界白點(diǎn),則認(rèn)為該處輪廓不規(guī)則,
//不存在尖角,退出小循環(huán),并置ColumnL=0以用于后續(xù)尖角判斷(左右邊界距離)
if(DirectSum2<0)
{
ColumnR=0;
break;//退出while(1)
}
}//while(1)結(jié)束
if(DirectSum2<0)
break;//退出大循環(huán)
}//endofwhile(RowSumR<=4)
/******************以上為從右頂點(diǎn)向右下掃描進(jìn)行邊界檢測*********************/
//計(jì)算左右邊界點(diǎn)之間的象素個數(shù),即距離
BounderSpaceNum=ColumnR-ColumnL-1;
//尖角判斷和數(shù)目統(tǒng)計(jì)
if((Bound
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024財(cái)務(wù)外包服務(wù)合同協(xié)議書
- 二零二五版電商直播領(lǐng)域主播形象使用權(quán)合同3篇
- 2024電影拍攝化妝服務(wù)合同3篇
- 2024版中介第三方擔(dān)保合同
- 2024版勞務(wù)用工合同
- 2024水電能源開發(fā)協(xié)議
- 2024版工程建設(shè)合同補(bǔ)充協(xié)議范本
- 二零二五年度法律援助居間服務(wù)合同范本正規(guī)范本2篇
- 2024版知識產(chǎn)權(quán)許可使用協(xié)議
- 二零二五年度網(wǎng)絡(luò)游戲開發(fā)合作經(jīng)營合同協(xié)議書3篇
- 2024年08月云南省農(nóng)村信用社秋季校園招考750名工作人員筆試歷年參考題庫附帶答案詳解
- 防詐騙安全知識培訓(xùn)課件
- 心肺復(fù)蘇課件2024
- 2024年認(rèn)證行業(yè)法律法規(guī)及認(rèn)證基礎(chǔ)知識
- 江蘇省建筑與裝飾工程計(jì)價定額(2014)電子表格版
- 食材配送后續(xù)服務(wù)方案
- 鑄造工廠設(shè)備管理(共21頁)
- 農(nóng)產(chǎn)品收購臺賬(登記經(jīng)營單位及個體經(jīng)營者投售的農(nóng)產(chǎn)品
- 分紅保險精算規(guī)定
- Proud-of-you中英文歌詞
- 基因的表達(dá)與調(diào)控.ppt
評論
0/150
提交評論