郑州企业网站建站,扬中信息网,手机网站定制 杭州,企业logo设计免费生成器opencv形态学-膨胀
膨胀就是取每一个位置结构元邻域内最大值作为该位置的输出灰度值#xff1b; 膨胀是取邻域内最大值#xff0c;那么显然膨胀后图像整体亮度会比原先要高#xff0c;图像中亮的物体尺寸会变大#xff0c;相反暗的尺寸会减小#xff0c;甚至是消失 结构元…opencv形态学-膨胀
膨胀就是取每一个位置结构元邻域内最大值作为该位置的输出灰度值 膨胀是取邻域内最大值那么显然膨胀后图像整体亮度会比原先要高图像中亮的物体尺寸会变大相反暗的尺寸会减小甚至是消失 结构元有很多一般采用矩形圆
解析
下图左测是原始图片的灰阶右边是经过3X3矩形腐蚀后的结果我们拿19,44,99进行分析对19所在位置进行腐蚀时19就在3*3结构元中心然后在这个结构元中取最大值代替19于是取29同理44 、 99所在位置一样。 全部膨胀后结果如下图
示例代码
通过打印每个像素点的灰度值更直观的来分析膨胀的过程
#includeiostream
#includeopencv.hpp
#include opencv2/core/core.hpp
#include opencv2/highgui/highgui.hpp
using namespace cv;
using namespace std;
int main()
{//创建一个10*10的空白图像Mat img Mat::zeros(10 ,10 ,CV_8UC1);if(img.empty()){coutopen img falseendl;return -1;}namedWindow(1, WINDOW_NORMAL);cvResizeWindow(1, 500, 500);imshow(1 , img);//开始给img赋值for (int r 0; r img.rows; r){uchar* ptr img.ptruchar(r);for (int c 0; c img.cols; c){cout.width(5);ptr[c] r*10c;cout (int)ptr[c] ,;}cout endl;}imshow(1 , img);//创建矩形结构元Mat s cv::getStructuringElement(cv::MORPH_RECT , Size(3,3));Mat dst;dilate(img,dst,s);namedWindow(erode, WINDOW_NORMAL);cvResizeWindow(erode, 500, 500);imshow(erode , dst);cout------------------------------膨胀后--------------------------------endl;for (int r 0; r img.rows; r){uchar* ptr dst.ptruchar(r);for (int c 0; c dst.cols; c){cout.width(5);cout (int)ptr[c] ,;}cout endl;}waitKey();return 0;
}