大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。
开运算 (Opening)
-
原理摘自:http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/imgproc/opening_closing_hats/opening_closing_hats.html
-
开运算是通过先对图像腐蚀再膨胀实现的。
-
可以排除小团块物体(如果物体较背景明亮)
-
请看以下。左图是原图像,右图是採用开运算转换之后的结果图。
观察发现字母拐弯处的白色空间消失。
闭运算(Closing)
-
闭运算是通过先对图像膨胀再腐蚀实现的。
-
可以排除小型黑洞(黑色区域)。
形态梯度(Morphological Gradient)
膨胀图与腐蚀图之差
-
可以保留物体的边缘轮廓,例如以下所看到的:
顶帽(Top Hat)
原图像与开运算结果图之差
黑帽(Black Hat)
闭运算结果图与原图像之差
- 代码:
// ConsoleApplication3_6_23.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include<opencv2/opencv.hpp>#include<iostream>using namespace std;using namespace cv;Mat src,dst;int pro_elem = 0;int pro_size = 0;int pro_operator = 0;const int max_elem = 2;const int max_size = 21;const int max_operator = 4;char* windowName = "Demo";void Image_pro(int,void*);int _tmain(int argc, _TCHAR* argv[]){ src = imread("hwl.jpg"); if(!src.data) return -1; namedWindow(windowName,CV_WINDOW_AUTOSIZE); createTrackbar("Operator:\n 0:opening-1:closing-2:gradient-3:Top Hat-4: Black Hat", windowName,&pro_operator,max_operator,Image_pro); createTrackbar("Element:\n 0:Rect-1:Cross-2:Ellipse", windowName,&pro_elem,max_elem,Image_pro); createTrackbar("Kernel size:\n 2n+1", windowName,&pro_size,max_size,Image_pro); Image_pro(0,0); waitKey(0); return 0;}void Image_pro(int,void*){ int operation = pro_operator + 2; Mat element = getStructuringElement(pro_elem,Size(2*pro_size+1,2*pro_size+1), Point(pro_size,pro_size)); morphologyEx(src,dst,operation,element); imshow(windowName,dst);}
版权声明:本文博主原创文章。博客,未经同意,不得转载。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/117126.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...