OpenCV杂记06---形态学、膨胀和腐蚀
2016-04-22 15:38
323 查看
原文地址:
http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/imgproc/erosion_dilatation/erosion_dilatation.html#morphology-1
2、学会创建滑动条并调用回调函数。createTrackbar的第五个参数调用自定义的函数。
代码如下。
http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/imgproc/erosion_dilatation/erosion_dilatation.html#morphology-1
总结本程序的收获。
1、掌握窗口排列函数cvMoveWindow的使用。2、学会创建滑动条并调用回调函数。createTrackbar的第五个参数调用自定义的函数。
存疑的问题。
1、滑动条的名字显示不完整,中间部分被省略。代码如下。
#include "opencv2/imgproc/imgproc.hpp" #include "opencv2/highgui/highgui.hpp" #include "highgui.h" #include <stdlib.h> #include <stdio.h> using namespace cv; using namespace std; /// 全局变量 Mat src, erosion_dst, dilation_dst; int erosion_elem = 0; int erosion_size = 0; int dilation_elem = 0; int dilation_size = 0; int const max_elem = 2; int const max_kernel_size = 21; char* win_name1 = "Erosion Demo"; char* win_name2 = "Dilation Demo"; /** Function Headers */ void Erosion( int, void* ); void Dilation( int, void* ); /** @function main */ int main( int argc, char** argv ) { char* ImgPath = "D:/lena.jpg"; /// Load 图像 src = imread( ImgPath ); if( !src.data ) { return -1; } /// 创建显示窗口 namedWindow( win_name1, CV_WINDOW_AUTOSIZE ); namedWindow( win_name2, CV_WINDOW_AUTOSIZE ); cvMoveWindow( win_name1, 0,0 ); cvMoveWindow( win_name2, src.cols , 0 ); /// 创建腐蚀 Trackbar createTrackbar( "Element:\n 0: Rect \n 1: Cross \n 2: Ellipse", "Erosion Demo", &erosion_elem, max_elem, Erosion ); createTrackbar( "Kernel size:\n 2n +1", "Erosion Demo", &erosion_size, max_kernel_size, Erosion ); /// 创建膨胀 Trackbar createTrackbar( "Element:\n 0: Rect \n 1: Cross \n 2: Ellipse", "Dilation Demo", &dilation_elem, max_elem, Dilation ); createTrackbar( "Kernel size:\n 2n +1", "Dilation Demo", &dilation_size, max_kernel_size, Dilation ); /// Default start Erosion( 0, 0 ); Dilation( 0, 0 ); waitKey(0); return 0; } /** @function Erosion */ void Erosion( int, void* ) { int erosion_type; if( erosion_elem == 0 ){ erosion_type = MORPH_RECT; } else if( erosion_elem == 1 ){ erosion_type = MORPH_CROSS; } else if( erosion_elem == 2) { erosion_type = MORPH_ELLIPSE; } Mat element = getStructuringElement( erosion_type, Size( 2*erosion_size + 1, 2*erosion_size+1 ), Point( erosion_size, erosion_size ) ); /// 腐蚀操作 erode( src, erosion_dst, element ); imshow( win_name1, erosion_dst ); } /** @function Dilation */ void Dilation( int, void* ) { int dilation_type; if( dilation_elem == 0 ){ dilation_type = MORPH_RECT; } else if( dilation_elem == 1 ){ dilation_type = MORPH_CROSS; } else if( dilation_elem == 2) { dilation_type = MORPH_ELLIPSE; } Mat element = getStructuringElement( dilation_type, Size( 2*dilation_size + 1, 2*dilation_size+1 ), Point( dilation_size, dilation_size ) ); ///膨胀操作 dilate( src, dilation_dst, element ); imshow( win_name2, dilation_dst ); }
相关文章推荐
- centos下完全卸载mysql
- mac intellj IDE下tomcat catalina.sh error=13, Permission denied和error =1 Operation not permitted
- FIT2CLOUD - 混合云管理及DevOps协作平台
- Hadoop学习10--常用命令记录帖
- 一点小知识
- Apache端口映射
- InetAddress.getLocalHost().getHostAddress()获取的ip为127.0.0.1
- 启动tomcat 卡在Initializing Spring root WebApplicationContext
- linux性能监控——CPU、Memory、IO、Network
- Linux下tmpfs与ramfs的区别
- sqoop导入导出表/数据到Hive
- linux 安装tomcat服务器及IP地址或者域名访问
- linux挂载文件系统过程-转载内容与自己的一些理解
- apache mesos 入门(3)——自定义framework + executor
- 【OpenCV】访问Mat图像中每个像素的值
- Linux Shell脚本编程--变量$#,$@,$*,$?,$0,$1,$2的含义解释
- centos 安装haproxy 1.6.3
- linux 时钟时间,用户CPU时间,系统CPU时间 .
- Maven 配置tomcat 插件运行
- Centos 7&6分布式lamp平台