




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、#in elude #in elude #in elude using n amespace ev; /把灰度图像转化为二值图像 Mat ehangeToBinarylmage(Mat grayimage ) Mat binarylmage(graylmage .rows, graylmage .cols,CV 8UC1 Sealar (0); / 转化为二值图像 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; /创建结构元素| / 一般结构元素关于原点对称 /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) /二值图像移动 Mat window( se /定
3、义一个矩阵, .rows, se.cols, 存储腐蚀后的图像 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+) /先设置第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对应的元素赋值到与se结构相同的矩阵中 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) /二值图像移动 Mat window( se.rows, se.cols, CV_8UC1; /定义一个矩阵,存储膨胀后的图像 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+) /先设置第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对应的元素赋值到与se结构相同的矩阵中 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中的像素值 /只要有 个相匹配就把像素值设为0,即置黑 int flag = 0;/标记是否有对应相等的像素值 :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、就设置为黑,即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) 结构元素移动时所对应的源图像区域 Mat window( se.rows, se.cols, CV_8UC1; /定义一个矩阵,存储腐蚀后的图像 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+) /先设置第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对应的元素赋值到与se结构相同的矩阵 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中最小的值赋值给原点所对用的像素 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) /结构元素移动时所对应的源图像区域 Mat window( se.rows, se.cols, CV_8UC1; /定义一个矩阵,存储腐蚀后的图像 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+) /先设置第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对应的元素赋值到与se结构相同的矩阵 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中最大的值赋值给原点所对用的像素 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; /灰度图像的顶帽运算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; /灰度图像的底帽运算 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; /转化为灰度图像 cvtColor(src, grayimage,CV_BGR2GRAY imshow( original image ,src); imshow( gray image , grayimage); /转化为二值图像 Mat bin aryimage = cha ngeToB in aryimage(grayimage); /创建模板 一般结构元素关于自身原点
24、对称 /也可以自定义结构元素 下面的变量是3*3的矩阵全部为0 Mat structureEleme nt(3, 3, CV_8UC1 Scalar (0); /调用二值图像腐蚀函数 /bin aryErosio n(bi narylmage, structureEleme nt); imshow( binaryErosionimage, binaryErosion(binarylmage, structureElement); /调用二值图像膨胀函数 /binaryDilation(binarylmage, structureElement); imshow( binaryDilationl
25、mage ,bin aryDilati on (bi narylmage, structureEleme nt); /调用灰度图像腐蚀函数 /grayErosio n(graylmage, structureEleme nt); imshow( grayErosionlmage , grayErosion(graylmage, structureElement); /调用灰度图像膨胀函数 /grayDilatio n(graylmage, structureEleme nt); imshow( grayDilationlmage , grayDilation(graylmage, structureElement); /调用二值图像开操作 imshow( binaryOpenlmage,bina
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 海水鲍鱼养殖基地创新创业项目商业计划书
- 2025年北虫草行业研究报告及未来行业发展趋势预测
- 2024年反射疗法师大赛理论题库(考试直接用)附答案详解
- 2025年大型绿植行业研究报告及未来行业发展趋势预测
- 2025年白小稻谷行业研究报告及未来行业发展趋势预测
- 2025年钙肥行业研究报告及未来行业发展趋势预测
- 2025年番茄行业研究报告及未来行业发展趋势预测
- 2025年二手车电商行业研究报告及未来行业发展趋势预测
- 2025年HIB结合疫苗行业研究报告及未来行业发展趋势预测
- 2025年豆制品零食行业研究报告及未来行业发展趋势预测
- 2.2.1 季风气候显著 课件 人教版地理八年级上册
- 中学2025年“迎国庆、庆中秋”主题班会
- 垃圾的危害教学课件
- 寻找闪闪发光的自己(主题班会)课件
- 卷烟送货员安全培训课件
- 2025年电子乐器行业研究报告及未来行业发展趋势预测
- 2025至2030年中国招投标行业发展潜力分析及投资战略咨询报告
- 2025至2030中国矿山机械行业发展趋势分析与未来投资战略咨询研究报告
- 2025年法学硕士专业知识考试试卷及答案解析
- GB 26488-2025镁合金压铸安全生产规范
- 抖音达人签约合同协议书
评论
0/150
提交评论