腐蚀和膨胀效果
主要使用
erode(src, dst, element);
和
dilate(src, dst, element);
这两个函数:
示例代码:
1 #include <opencv2\opencv.hpp> 2 #include <iostream> 3 #include <string> 4 5 #pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) 6 7 int MAX_KERNEL_LENGTH = 31; 8 9 using namespace std; 10 using namespace cv; 11 12 void Show(std::string name,Mat img) 13 { 14 namedWindow(name, CV_WINDOW_AUTOSIZE); 15 imshow(name, img); 16 } 17 18 void callBack(int, void*) 19 {} 20 21 int main(void) 22 { 23 Mat src = imread("cat.jpg"); 24 Mat dst = src.clone(); 25 Show("Src", src); 26 int size = 2; 27 Mat element = getStructuringElement(MORPH_ELLIPSE, Size(2 * size + 1, 2 * size + 1), Point(size, size)); 28 erode(src, dst, element); 29 Show("Dst 1", dst); 30 dilate(src, dst, element); 31 Show("Dst 2", dst); 32 namedWindow("Test", CV_WINDOW_AUTOSIZE); 33 createTrackbar("TrackerBar", "Test",&size,100,callBack); 34 waitKey(); 35 return 0; 36 }
注意element这个数组是我们要进行变换的结构元素(形态学原理),默认是3x3的矩阵,同时可以通过宏变量定义矩阵形状
分别为方形,十字形,椭圆形:MORPH_RECT,MORPH_CROSS,MORPH_ELLIPSE;
同时最后使用了一个TrackerBar放到了窗口上,范围从1-100
结果:
原图:(来自opencv的doc目录)
时间: 2024-11-05 20:44:10