形态学处理-morphologyEx 运算

void cv::morphologyEx(

InputArray src,

OutputArray dst,

int op,

InputArray Kernel,

Point anchor=Point(-1,-1),

int iteration=1,

int borderType=BORDER_CONSTANT,

const Scalar& borderValue=morphologyDefaultBorderValue()

)

这里面的op

op-操作类型,各种形态学运算的操作规则:将腐蚀和膨化进行结合得到

下面给出一个表

下面给出关于形态学的代码

void MainWindow::on_erode_triggered()
{//定义形状int morph_elem=cv::MORPH_RECT;//定义大小int morph_size=3;//调用getStructuringElementcv::Mat element=cv::getStructuringElement(morph_elem,cv::Size(2*morph_size+1,2*morph_size+1),cv::Point(morph_size,morph_size));//调用morphologyEx函数cv::morphologyEx(srcImage,dstImage,cv::MORPH_ERODE,element);//显示img=QImage((const unsigned char*)(dstImage.data),dstImage.cols,dstImage.rows,dstImage.cols*dstImage.channels(),QImage::Format_RGB888);img=img.scaled(ui->label_2->size());ui->label_2->setPixmap(QPixmap::fromImage(img));
}void MainWindow::on_dilate_triggered()
{//定义形状int morph_elem=cv::MORPH_RECT;//定义大小int morph_size=3;//调用getStructuringElementcv::Mat element=cv::getStructuringElement(morph_elem,cv::Size(2*morph_size+1,2*morph_size+1),cv::Point(morph_size,morph_size));//调用morphologyEx函数cv::morphologyEx(srcImage,dstImage,cv::MORPH_DILATE,element);//显示img=QImage((const unsigned char*)(dstImage.data),dstImage.cols,dstImage.rows,dstImage.cols*dstImage.channels(),QImage::Format_RGB888);img=img.scaled(ui->label_2->size());ui->label_2->setPixmap(QPixmap::fromImage(img));
}void MainWindow::on_open_triggered()
{//定义形状int morph_elem=cv::MORPH_RECT;//定义大小int morph_size=3;//调用getStructuringElementcv::Mat element=cv::getStructuringElement(morph_elem,cv::Size(2*morph_size+1,2*morph_size+1),cv::Point(morph_size,morph_size));//调用morphologyEx函数cv::morphologyEx(srcImage,dstImage,cv::MORPH_OPEN,element);//显示img=QImage((const unsigned char*)(dstImage.data),dstImage.cols,dstImage.rows,dstImage.cols*dstImage.channels(),QImage::Format_RGB888);img=img.scaled(ui->label_2->size());ui->label_2->setPixmap(QPixmap::fromImage(img));
}void MainWindow::on_close_triggered()
{//定义形状int morph_elem=cv::MORPH_RECT;//定义大小int morph_size=3;//调用getStructuringElementcv::Mat element=cv::getStructuringElement(morph_elem,cv::Size(2*morph_size+1,2*morph_size+1),cv::Point(morph_size,morph_size));//调用morphologyEx函数cv::morphologyEx(srcImage,dstImage,cv::MORPH_CLOSE,element);//显示img=QImage((const unsigned char*)(dstImage.data),dstImage.cols,dstImage.rows,dstImage.cols*dstImage.channels(),QImage::Format_RGB888);img=img.scaled(ui->label_2->size());ui->label_2->setPixmap(QPixmap::fromImage(img));
}void MainWindow::on_gradient_triggered()
{//定义形状int morph_elem=cv::MORPH_RECT;//定义大小int morph_size=3;//调用getStructuringElementcv::Mat element=cv::getStructuringElement(morph_elem,cv::Size(2*morph_size+1,2*morph_size+1),cv::Point(morph_size,morph_size));//调用morphologyEx函数cv::morphologyEx(srcImage,dstImage,cv::MORPH_GRADIENT,element);//显示img=QImage((const unsigned char*)(dstImage.data),dstImage.cols,dstImage.rows,dstImage.cols*dstImage.channels(),QImage::Format_RGB888);img=img.scaled(ui->label_2->size());ui->label_2->setPixmap(QPixmap::fromImage(img));
}void MainWindow::on_tophat_triggered()
{//定义形状int morph_elem=cv::MORPH_RECT;//定义大小int morph_size=3;//调用getStructuringElementcv::Mat element=cv::getStructuringElement(morph_elem,cv::Size(2*morph_size+1,2*morph_size+1),cv::Point(morph_size,morph_size));//调用morphologyEx函数cv::morphologyEx(srcImage,dstImage,cv::MORPH_TOPHAT,element);//显示img=QImage((const unsigned char*)(dstImage.data),dstImage.cols,dstImage.rows,dstImage.cols*dstImage.channels(),QImage::Format_RGB888);img=img.scaled(ui->label_2->size());ui->label_2->setPixmap(QPixmap::fromImage(img));
}void MainWindow::on_blackhat_triggered()
{//定义形状int morph_elem=cv::MORPH_RECT;//定义大小int morph_size=3;//调用getStructuringElementcv::Mat element=cv::getStructuringElement(morph_elem,cv::Size(2*morph_size+1,2*morph_size+1),cv::Point(morph_size,morph_size));//调用morphologyEx函数cv::morphologyEx(srcImage,dstImage,cv::MORPH_BLACKHAT,element);//显示img=QImage((const unsigned char*)(dstImage.data),dstImage.cols,dstImage.rows,dstImage.cols*dstImage.channels(),QImage::Format_RGB888);img=img.scaled(ui->label_2->size());ui->label_2->setPixmap(QPixmap::fromImage(img));
}

下面给出程序源码打包下载:

http://download.csdn.net/detail/qq78442761/9735279

下面是程序运行

下面是开运算和形态学阶梯

Qt creator5.7 OpenCV249之形态学处理(含源码下载)相关推荐

  1. Qt creator5.7 OpenCV249之图片旋转(含源码下载)

    下面先来介绍OpenCV关于图像选择的函数 void cv::flip( InputArray src OutputArray dst, int flipCode) src-是要处理的原始图像, ds ...

  2. Qt creator5.7 OpenCV249之图片腐化(含源码下载)

    首先介绍几个OpenCV的函数 void cv::erode( InputArray src, OutputArray dst, InputArray kernel, Point anchor=Poi ...

  3. Qt creator5.7 OpenCV249之resize函数(含源码下载)

    函数 void cv::resize( InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int inter ...

  4. Qt creator5.7 OpenCV249之pyrDown函数(含源码下载)

    函数: void cv::pyrDown( InputArray src, OutputArray dst, const Size& dstsize=Size(), int borderTyp ...

  5. Qt creator5.7 OpenCV249之pyrUp函数(含源码下载)

    void cv::pyrUp( InputArray src, OutputArray dst, const Size& dstsize=Size(), int borderType=BORD ...

  6. Qt creator5.7 OpenCV249之双边滤波(含源码下载)

    原理如下: 函数 void cv::bilateralFilter( InputArray src, OutputArray dst, int d, double sigmaColor, double ...

  7. Qt creator5.7 OpenCV249之中值滤波(含源码下载)

    首先介绍下中值滤波的原理 函数 void cv::medianBulr( InputArray src, OutputArray dst, int Ksize) 下面是程序代码 void Widget ...

  8. Qt creator5.7 OpenCV249之高斯滤波(含源码下载)

    函数 void cv::GaussianBlut( InputArray src, OutputArray dst, Size ksize, double sigmaX, double sigmaY= ...

  9. Qt creator5.7 OpenCV249之方框滤波(含源码下载)

    函数 void cv::boxFilter( InputArray src, OutputArray dst, int ddepth, Size ksize, Point anchor=point(- ...

最新文章

  1. 统计学习方法:朴素贝叶斯
  2. 安装HCL遇到的问题
  3. 科大星云诗社动态20210522
  4. MyBatis Plus Generator——基于Velocity的Controller参考模板(集成MyBatis Plus、Swagger2、自封装Response、分页)
  5. [转载].怎样在有限状态机中延时
  6. ASP.NET Core 1.0开发Web API程序
  7. Ubuntu配置IPFS的环境
  8. 李洪强iOS开发之FMDB线程安全的用法
  9. 解决css引用字体跨域问题
  10. linux编程排序,Linux下简单的c编程——选择法排序
  11. Intel、AMD和Arm 告警:注意新的推断执行CPU漏洞!
  12. Struts2(接受表单参数)请求数据自动封装和数据类型转换
  13. qmc转码_QQ音乐qmc3格式转换器免费版
  14. Linux Command diff 文件比较
  15. 系统没有java控制面板,手把手教你解答win7系统打开java控制面板的解决教程
  16. 为什么那些美事没有实现---生活中小事有感
  17. Base64系列第一篇 Base64介绍
  18. OpenStack 虚拟机冷/热迁移功能实践与流程分析
  19. Python离线翻译
  20. boostrap老黄历代码的实现

热门文章

  1. 我编程很渣,但我就是喜欢编程,我该怎么做?放弃还是继续坚持?
  2. Ubuntu下安装和配置Apache及Apache2
  3. 展望2015把C++版本的掼蛋程序写好
  4. FTP常用的73个基本用法:
  5. 无需破解,Python这个神器帮你免费获取资源,赶紧收藏!
  6. 你还在用自己的电脑跑python程序?大佬都这么玩,绝对意想不到
  7. 对老赖 绝不要忍 !一位美女程序媛的讨薪经历...
  8. 第六节:用audio标签打造一个属于自己的HTML5音乐播放器
  9. thinkphp5范围查询_ThinkPHP 区间查询
  10. 4米乘以12米CAD图_CAD做钣金件展开的原理你知道吗?