OpenCV学习之形态学操作
2017-08-03 20:05
399 查看
//形态学操作 #include "cv.h" #include "highgui.h" IplImage* src = 0; IplImage* dst = 0; IplConvKernel* element = 0; int element_shape = CV_SHAPE_RECT; int max_iters = 10; int open_close_pos = 0; int erode_dilate_pos = 0; void OpenClose(int pos) { int n = open_close_pos - max_iters; int an = n > 0 ? n : -n; element = cvCreateStructuringElementEx(an * 2 + 1, an * 2 + 1, an, an, element_shape, 0); if (n < 0) { cvErode(src, dst, element, 1); cvDilate(dst, dst, element, 1); } else { cvDilate(src, dst, element, 1); cvErode(dst, dst, element, 1); } cvReleaseStructuringElement(&element); cvShowImage("Open/Close", dst); } void ErodeDilate(int pos) { int n = erode_dilate_pos - max_iters; int an = n > 0 ? n : -n; element = cvCreateStructuringElementEx(an * 2 + 1, an * 2 + 1, an, an, element_shape, 0); if (n > 0) { cvErode(src, dst, element, 1); } else { cvDilate(src, dst, element, 1); } cvReleaseStructuringElement(&element); cvShowImage("Erode/Dilate", dst); } int main(int argc, char** argv) { src = cvLoadImage("Lena.tif", 1); printf("Hot Key:\n" "\tEsc - quit\n" "\tr - use rectangle structuring element\n" "\te - use elloptic structuring element\n" "\tc - use cross - shaped structuring element\n" "\tENTER - loop through all the options\n"); dst = cvCloneImage(src); cvNamedWindow("Open/Close", 1); cvNamedWindow("Erode/Dilate"); open_close_pos = erode_dilate_pos = max_iters; cvCreateTrackbar("iterations", "Open/Close", &open_close_pos, max_iters * 2 + 1, OpenClose); cvCreateTrackbar("iterations", "Erode/Dilate", &erode_dilate_pos, max_iters * 2 + 1, ErodeDilate); while (1) { int c; OpenClose(open_close_pos); ErodeDilate(erode_dilate_pos); c = cvWaitKey(0); if (c == 27) break; else if (c == 'r') element_shape = CV_SHAPE_RECT; else if (c == 'e') element_shape = CV_SHAPE_ELLIPSE; else if (c == 'c') element_shape = CV_SHAPE_CROSS; else if (c == '\r') element_shape = (element_shape + 1) % 3; } cvReleaseImage(&src); cvReleaseImage(&dst); cvDestroyWindow("Open/Close"); cvDestroyWindow("Erode/Dilate"); return 0; }
相关文章推荐
- 我的OpenCV学习笔记(16):利用工具条调用基本的形态学操作
- OpenCV学习笔记-形态学操作-腐蚀膨胀-开闭运算
- OpenCV学习之形态学操作
- OpenCV学习笔记(六) 滤波器 形态学操作(腐蚀、膨胀等)
- OpenCV学习第十一篇:形态学操作
- Opencv学习笔记(七):腐蚀,膨胀,开操作,闭操作及其他相关的形态学操作
- OpenCV学习笔记(3)——图像形态学操作(Mathematical Morphology)
- 学习opencv第三章 基本数据类型 ,矩阵创建,操作,访问
- Opencv学习笔记3--形态学
- OpenCV学习-常用的图像和矩阵操作函数
- opencv 图像的邻域操作(学习他人方法)
- OpenCV 学习(像素操作 2)
- OpenCV学习笔记-形态学
- 【opencv学习之十七】摄像头及视频操作VideoCapture
- Opencv学习笔记(三)形态学之检测corners
- 学习OpenCV——Mat数据操作之普通青年、文艺青年、暴力青年.& Mat注意事项
- 学习OPENCV(二):操作像素
- 学习opencv第三章矩阵和图像操作
- 学习【OpenCV入门教程之十一】 形态学图像处理(二)开运算,闭运算,梯度运算,顶帽,黑帽---思维导图笔记
- opencv2学习- - - 像素操作