OpenCV学习第十一篇:形态学操作
2017-11-21 21:41
323 查看
开操作-open——CV_MOP_OPEN
先腐蚀,后膨胀
可以去掉小的对象,假设对象是前景色,背景是黑色
相关api
Mat kernel = getStructuringElement(MORPH_RECT, Size(11, 11), Point(-1, -1))
morphologyEx(src, dst, CV_MOP_GRADIENT, kernel)
效果:
闭操作-close—CV_MOP_CLOSE
先膨胀,后腐蚀
可以填充小的洞,假设对象是前景色,背景是黑色
效果:
形态学梯度-Morphological Gradient—-CV_MOP_GRADIENT
膨胀后腐蚀
又称为基本梯度(内部梯度和方向梯度)
效果:
顶帽-top hat—CV_MOP_TOPHAT
顶帽是原图像与开操作之间的差值图像
效果:
黑帽-black hat——CV_MOP_BLACKHAT
黑帽是闭操作与源图像的差值图像
效果:
先腐蚀,后膨胀
可以去掉小的对象,假设对象是前景色,背景是黑色
相关api
Mat kernel = getStructuringElement(MORPH_RECT, Size(11, 11), Point(-1, -1))
morphologyEx(src, dst, CV_MOP_GRADIENT, kernel)
#include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace std; int main(int argc, char** argv) { Mat src, dst; src = imread("F:/识图/形态学测试.jpg"); if (src.empty()) { printf("could not image!"); return -1; } namedWindow("Input Image", CV_WINDOW_AUTOSIZE); imshow("Input Image", src); //获取结构元素 Mat kernel = getStructuringElement(MORPH_RECT, Size(11, 11), Point(-1, -1)); morphologyEx(src, dst, CV_MOP_OPEN, kernel); imshow("outout image", dst); waitKey(0); return 0; }
效果:
闭操作-close—CV_MOP_CLOSE
先膨胀,后腐蚀
可以填充小的洞,假设对象是前景色,背景是黑色
#include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace std; int main(int argc, char** argv) { Mat src, dst; src = imread("F:/识图/形态学测试.jpg"); if (src.empty()) { printf("could not image!"); return -1; } namedWindow("Input Image", CV_WINDOW_AUTOSIZE); imshow("Input Image", src); //获取结构元素 Mat kernel = getStructuringElement(MORPH_RECT, Size(21, 21), Point(-1, -1)); morphologyEx(src, dst, CV_MOP_CLOSE, kernel); imshow("outout image", dst); waitKey(0); return 0; }
效果:
形态学梯度-Morphological Gradient—-CV_MOP_GRADIENT
膨胀后腐蚀
又称为基本梯度(内部梯度和方向梯度)
#include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace std; int main(int argc, char** argv) { Mat src, dst; src = imread("F:/识图/形态学测试.jpg"); if (src.empty()) { printf("could not image!"); return -1; } namedWindow("Input Image", CV_WINDOW_AUTOSIZE); imshow("Input Image", src); //获取结构元素 Mat kernel = getStructuringElement(MORPH_RECT, Size(21, 21), Point(-1, -1)); morphologyEx(src, dst, CV_MOP_GRADIENT, kernel); imshow("outout image", dst); waitKey(0); return 0; }
效果:
顶帽-top hat—CV_MOP_TOPHAT
顶帽是原图像与开操作之间的差值图像
#include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace std; int main(int argc, char** argv) { Mat src, dst; src = imread("F:/识图/形态学测试.jpg"); if (src.empty()) { printf("could not image!"); return -1; } namedWindow("Input Image", CV_WINDOW_AUTOSIZE); imshow("Input Image", src); //获取结构元素 Mat kernel = getStructuringElement(MORPH_RECT, Size(21, 21), Point(-1, -1)); morphologyEx(src, dst, CV_MOP_TOPHAT, kernel); imshow("outout image", dst); waitKey(0); return 0; }
效果:
黑帽-black hat——CV_MOP_BLACKHAT
黑帽是闭操作与源图像的差值图像
#include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace std; int main(int argc, char** argv) { Mat src, dst; src = imread("F:/识图/形态学测试.jpg"); if (src.empty()) { printf("could not image!"); return -1; } namedWindow("Input Image", CV_WINDOW_AUTOSIZE); imshow("Input Image", src); //获取结构元素 Mat kernel = getStructuringElement(MORPH_RECT, Size(21, 21), Point(-1, -1)); morphologyEx(src, dst, CV_MOP_BLACKHAT, kernel); imshow("outout image", dst); waitKey(0); b876 return 0; }
效果:
相关文章推荐
- OpenCV学习之形态学操作
- OpenCV学习之形态学操作
- OpenCV学习笔记(3)——图像形态学操作(Mathematical Morphology)
- 我的OpenCV学习笔记(16):利用工具条调用基本的形态学操作
- OpenCV学习笔记(六) 滤波器 形态学操作(腐蚀、膨胀等)
- Opencv学习笔记(七):腐蚀,膨胀,开操作,闭操作及其他相关的形态学操作
- OpenCV学习笔记-形态学操作-腐蚀膨胀-开闭运算
- opencv学习(2)——图像处理的一些常见操作
- opencv之形态学操作
- OpenCV学习之矩阵操作
- opencv2学习笔记2-操作图像(椒盐噪声)
- OpenCV学习:矩阵的掩码操作
- OpenCV学习笔记 cv.Mat 与 .txt 文件数据的读写操作
- OpenCV学习5--图像操作
- opencv6.1-imgproc图像处理模块之平滑与形态学操作
- 学习opencv第三章 基本数据类型 ,矩阵创建,操作,访问
- OpenCV系列学习之图像形态学
- OpenCV学习: Mat的基本操作(一)
- vim+python+OpenCV学习六 : 形态学初级
- Opencv2系列学习笔记2(图像的其它操作)