版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、#in elude #in elude #in elude using n amespace ev; /把灰度圖像轉(zhuǎn)化為二值圖像 Mat ehangeToBinarylmage(Mat grayimage ) Mat binarylmage(graylmage .rows, graylmage .cols,CV 8UC1 Sealar (0); / 轉(zhuǎn)化為二值圖像 for (int i = 0; i graylmage .rows; i+) for (int j = 0; j 100) binarylmage.datai*graylmage .step + j = 255; else bina
2、rylmage.datai*graylmage .step + j = 0; imshow( binarylmage , binarylmage); returnbin arylmage; /創(chuàng)建結(jié)構(gòu)元素| / 一般結(jié)構(gòu)元素關(guān)于原點(diǎn)對(duì)稱 /Mat createSE() / / int a33= 0,1,0, / 1,1,1, / 0,1,0; /Mat structureEleme nt(3, 3, CV_8UC1, a); / _ /二值圖像腐蝕操作 Mat bin aryErosi on( Mat binarylmage ,Mat se) /二值圖像移動(dòng) Mat window( se /定
3、義一個(gè)矩陣, .rows, se.cols, 存儲(chǔ)腐蝕后的圖像 CV_8UC1; Mat binaryErosionlmage(binarylmage .rows, binarylmage .cols, CV_8UC1 Scalar (0); for ( int i = (se.rows-1)/2; i binaryImage .rows-( se.rows-1)/2; i+) for (int j = ( se .cols - 1) / 2; j bin aryImage .cols - ( se .cols - 1) / 2; j+) /先設(shè)置第i行第j列像素值為255,即白色 bin a
4、ryErosi onl mage.datai*bin aryImage .step + j = 255; for ( int row = 0; row se.rows; row+) for ( int col = 0; col se.cols; col+) /把se對(duì)應(yīng)的元素賦值到與se結(jié)構(gòu)相同的矩陣中 wi ndow.datarow*wi ndow.step + col =bin arylmage .data(i + row - (win dow.rows - 1) / 2)*bin arylmage .step + (j + col - (win dow.cols - 1) / 2); /
5、 比較 se 與 window 中的像素值 int row, col; for (row = 0; row se.rows; row+) for (col = 0 ;col se.cols; col+) se.step + col) if (se.datarow* se.step + col != window.datarow* break ; if (row = se .rows imshow(bi naryErosio nlmage, bin aryErosi onl mage); returnbin aryErosi onl mage; /二值圖像膨脹操作 Mat bin aryDila
6、tio n( Mat binaryImage ,Mat se) /二值圖像移動(dòng) Mat window( se.rows, se.cols, CV_8UC1; /定義一個(gè)矩陣,存儲(chǔ)膨脹后的圖像 Mat binaryDilationlmage(binaryImage .rows,binaryImage .cols, CV_8UC1 Scalar (0); for ( int i = ( se.rows - 1) / 2; i binaryImage .rows - ( se.rows - 1) / 2; i+) for (int j = ( se .cols - 1) / 2; j bin ary
7、Image .cols - ( se .cols - 1) / 2; j+) /先設(shè)置第i行第j列像素值為 255,即白色 bin aryDilati onl mage.datai* bin aryImage .step + j = 255; for ( int row = 0; row se .rows; row+) for ( int col = 0; col se.cols; col+) /把se對(duì)應(yīng)的元素賦值到與se結(jié)構(gòu)相同的矩陣中 wi ndow.datarow*wi ndow.step + col =bin aryImage .data(i + row - (window.rows
8、 - 1) / 2)* bin aryImage .step + (j + col - (win dow.cols - 1) / 2); /比較se 與window中的像素值 /只要有 個(gè)相匹配就把像素值設(shè)為0,即置黑 int flag = 0;/標(biāo)記是否有對(duì)應(yīng)相等的像素值 :0表示沒有,1表示有 int row, col; for (row = 0; row se.rows; row+) for (col = 0; col se.cols; col+) if (se.datarow* se.step + col = window.datarow* se.step + col) /如果有交集,
9、就設(shè)置為黑,即0 bin aryDilati onl mage.datai*bin arylmage .step + j = 0; | imshow(bi naryDilatio nlmage, bin aryDilati onl mage); return bi naryDilatio nl mage; /灰度圖像腐蝕操作 Mat grayErosion(Mat graylmage , Mat se) 結(jié)構(gòu)元素移動(dòng)時(shí)所對(duì)應(yīng)的源圖像區(qū)域 Mat window( se.rows, se.cols, CV_8UC1; /定義一個(gè)矩陣,存儲(chǔ)腐蝕后的圖像 Mat grayErosionlmage( g
10、raylmage .rows, graylmage .cols, CV_8UC1 Scalar (0); for (int i = ( se.rows - 1) / 2; i graylmage .rows - ( se .rows - 1) / 2; i+) for (int j = ( se.cols - 1) / 2; j graylmage .cols - ( se.cols - 1) / 2; j+) /先設(shè)置第i行第j列像素值為255,即白色 grayErosi onl mage.datai* graylmage .step + . =255; for ( int row = 0;
11、 row se.rows; row+) for ( int col = 0; col se.cols; col+) /把se對(duì)應(yīng)的元素賦值到與se結(jié)構(gòu)相同的矩陣 window中 window.datarow*window.step + col =grayimage .data(i + row - (window.rows - 1) / 2)*grayimage .step + (j + col - (window.cols - 1) / 2); /比較se與window中的像素值 /在灰度圖像中,腐蝕是取 window中最小的值賦值給原點(diǎn)所對(duì)用的像素 int min Pixel = 255;
12、int row, col; for (row = 0; row se.rows; row+) for (col = 0; col se.cols; col+) if (window.datarow* se.step + col minPixel) min Pixel = window.datarow*se .step + col; gray image .step + j = min Pixel; /*imshow(grayErosio ni mage, grayErosi oni mage);*/ return grayErosio nlmage; /灰度圖像膨脹操作 Mat grayDil
13、ation( Mat grayimage , Mat se) /結(jié)構(gòu)元素移動(dòng)時(shí)所對(duì)應(yīng)的源圖像區(qū)域 Mat window( se.rows, se.cols, CV_8UC1; /定義一個(gè)矩陣,存儲(chǔ)腐蝕后的圖像 Mat grayDilationimage( grayimage .rows, grayimage .cols, CV_8UC1 Scalar (0); for (int i = ( se.rows - 1) / 2; i grayimage .rows -( se .rows - 1) / 2; i+) for (int j = ( se.cols - 1) / 2; j grayim
14、age .cols - -(se.cols - 1) / 2; j+) /先設(shè)置第i行第j列像素值為255,即白色 grayDilati oni mage.datai* grayimage .step + j = 255; for ( int row = 0; row se.rows; row+) for ( int col = 0; col se.cols; col+) /把se對(duì)應(yīng)的元素賦值到與se結(jié)構(gòu)相同的矩陣 window中 window.datarow*window.step + col =grayimage .data(i + row - (window.rows - 1) / 2
15、)*grayimage .step + (j + col - (window.cols - 1) / 2); /比較se與window中的像素值 /在灰度圖像中,膨脹是取 window中最大的值賦值給原點(diǎn)所對(duì)用的像素 int maxPixel = 0; int row, col; for (row = 0; row se.rows; row+) for (col = 0; col maxPixel) grayDilati oni mage.datai* grayimage .step + j = maxPixel; /*imshow(grayDilatio ni mage, grayDilat
16、i oni mage);*/ return grayDilati oni mage; / 二值圖像開操作 Mat binaryOpen(Mat binaryimage Mat se) Mat openlmage( binarylmage .rows, binarylmage .cols, CV_8UC1 Scalar (0); openlmage = binaryDilation(binaryErosion(binaryImage , se), se); retur n ope nl mage; /二值圖像閉操作 Mat binaryClose(Mat binarylmage ,Mat se)
17、 Mat closelmage(bin arylmage .rows,binarylmage .cols,CV_8UC1 Scalar (0); closelmage = binaryErosion(binaryDilation(binarylmage , se), se); return closelmage; /灰度圖像開操作 Mat grayOpen( Mat graylmage , Mat se) Mat openlmage( graylmage .rows, graylmage .cols, CV_8UC1 Scalar (0); openlmage = grayDilation(g
18、rayErosion(graylmage , se), se); retur n ope nl mage; /灰度圖像閉操作 Mat grayClose( Mat graylmage , Mat se) Mat closelmage( graylmage .rows, graylmage .cols, CV_8UC1 Scalar (0); closelmage = grayErosion(grayDilation(graylmage , se), se); return closelmage; /二值圖像邊界提取 Mat binaryBorder(Mat binarylmage , Mat
19、se) Mat borderlmage( binarylmage .rows,binarylmage .cols, CV_8UC1 Scalar (0); Mat erosi onl mage(bin arylmage .rows,bin arylmage .cols,CV 8UC1 Scalar (0); erosionlmage = binaryErosion(binarylmage , se); for ( int i = 0; i erosionlmage.rows; i+) for ( int j = 0; j erosionlmage.cols; j+) if (bin arylm
20、age .datai*erosio nlmage.step+j!=erosio nlmage.data i *erosio nl mage.step+j return borderlmage; /灰度圖像邊界提取 Mat grayBorder( Mat graylmage , Mat se) Mat borderlmage( graylmage .rows, graylmage .cols,CV_8UC1 Scalar (0); borderlmage = graylmage - grayErosion(graylmage , se); retur n borderlmage; /灰度圖像梯度
21、 Mat gradient(Mat graylmage , Mat se) Mat gradient( graylmage .rows, graylmage .cols, CV_8UC1 Scalar (0); gradient = grayDilation(graylmage , se) - grayErosion( graylmage , se); return gradie nt; /灰度圖像的頂帽運(yùn)算T (f) =f-fob Mat topHat( Mat graylmage , Mat se) Mat topHatlmage( grayimage .rows, grayimage .
22、cols, CV_8UC1 Scalar (0); topHatimage = grayImage - grayOpen(grayImage , se); return topHatimage; /灰度圖像的底帽運(yùn)算 B (f) =f?b-f Mat bottomHat( Mat grayimage , Mat se) Mat bottomHatimage( grayimage .rows, grayimage .cols, CV_8UC1 Scalar (0); bottomHatimage = grayClose( grayimage , se)- grayimage ; retur n
23、bottomHatimage; int main() Mat src = imread( E:projectimages32.jpg); Mat grayimage(src.rows, src.cols,CV_8UC1; /轉(zhuǎn)化為灰度圖像 cvtColor(src, grayimage,CV_BGR2GRAY imshow( original image ,src); imshow( gray image , grayimage); /轉(zhuǎn)化為二值圖像 Mat bin aryimage = cha ngeToB in aryimage(grayimage); /創(chuàng)建模板 一般結(jié)構(gòu)元素關(guān)于自身原點(diǎn)
24、對(duì)稱 /也可以自定義結(jié)構(gòu)元素 下面的變量是3*3的矩陣全部為0 Mat structureEleme nt(3, 3, CV_8UC1 Scalar (0); /調(diào)用二值圖像腐蝕函數(shù) /bin aryErosio n(bi narylmage, structureEleme nt); imshow( binaryErosionimage, binaryErosion(binarylmage, structureElement); /調(diào)用二值圖像膨脹函數(shù) /binaryDilation(binarylmage, structureElement); imshow( binaryDilationl
25、mage ,bin aryDilati on (bi narylmage, structureEleme nt); /調(diào)用灰度圖像腐蝕函數(shù) /grayErosio n(graylmage, structureEleme nt); imshow( grayErosionlmage , grayErosion(graylmage, structureElement); /調(diào)用灰度圖像膨脹函數(shù) /grayDilatio n(graylmage, structureEleme nt); imshow( grayDilationlmage , grayDilation(graylmage, structureElement); /調(diào)用二值圖像開操作 imshow( binaryOpenlmage,bina
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 購銷合同貸款申請(qǐng)技巧分享
- 二年級(jí)品德與生活上冊(cè) 愛護(hù)我們的生活環(huán)境教案3 北師大版
- 八年級(jí)歷史上冊(cè) 第六單元 中華民族的抗日戰(zhàn)爭第18課 從九一八事變到西安事變教案 新人教版
- 2024-2025學(xué)年高中物理 第一章 機(jī)械振動(dòng) 2 單擺教案 教科版選修3-4
- 2023四年級(jí)數(shù)學(xué)上冊(cè) 1 大數(shù)的認(rèn)識(shí)第5課時(shí) 將整萬數(shù)改寫成用“萬”作單位的數(shù)教案 新人教版
- 北京中南紅星足球?qū)W校九年級(jí)化學(xué)上冊(cè) 第三單元 課題1 分子和原子教學(xué)設(shè)計(jì) (新版)新人教版
- 坐班合同協(xié)議書范本(2篇)
- 租的民房租房合同(2篇)
- 裝修管理費(fèi)合同(2篇)
- 浮選 課件 演示
- 安徽省A10聯(lián)盟2024-2025學(xué)年高三上學(xué)期開學(xué)考試生物試題(解析版)
- 2022-2023學(xué)年北京市海淀區(qū)中關(guān)村中學(xué)八年級(jí)(上)期中數(shù)學(xué)試卷【含解析】
- 2.1 認(rèn)識(shí)自己 課件-2024-2025學(xué)年道德與法治七年級(jí)上冊(cè)(統(tǒng)編版2024)
- 2024智能變電站新一代集控站設(shè)備監(jiān)控系統(tǒng)技術(shù)規(guī)范部分
- 5.5《方程的意義》(課件)-2024-2025學(xué)年人教版數(shù)學(xué)五年級(jí)上冊(cè)
- 2021新青島版六三制三年級(jí)上冊(cè)科學(xué)全冊(cè)知識(shí)點(diǎn)總結(jié)期末復(fù)習(xí)背誦資料
- 部編版二年級(jí)語文上冊(cè)看拼音寫詞語含答案
- 2024年浙江省應(yīng)急管理行政執(zhí)法競(jìng)賽題庫-上(單選、多選題)
- 四肢關(guān)節(jié)病癥推拿治療-梨狀肌綜合癥患者的推拿治療
- 房產(chǎn)開發(fā)地塊收購項(xiàng)目可行性研究報(bào)告(完美版)
- JJF 2133-2024海洋資料浮標(biāo)傳感器校準(zhǔn)規(guī)范
評(píng)論
0/150
提交評(píng)論