• opencv形态学-腐蚀


    opencv形态学-腐蚀

    腐蚀就是取每一个位置结构元领域内最小值作为该位置的输出灰度值
    结构元有很多,一般采用矩形,圆
    在这里插入图片描述

    解析

    下图左测是原始图片的灰阶,右边是经过3X3矩形腐蚀后的结果,我们拿19,44,99进行分析,对19所在位置进行腐蚀时,19就在3*3结构元中心,然后在这个结构元中取最小值代替19,于是取8,同理44 、 99所在位置一样。
    在这里插入图片描述
    全部腐蚀后结果如下图
    opencv形态学-腐蚀

    示例代码

    通过打印每个像素点的灰度值更直观的来分析腐蚀的过程:

    #include
    #include
    #include 
    #include 
    using namespace cv;
    using namespace std;
    int main()
    {
    	//创建一个10*10的空白图像
    	Mat img = Mat::zeros(10  ,10 ,CV_8UC1);
    	if(img.empty())
    	{
    		cout<<"open img false"<<endl;
    		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.ptr<uchar>(r);
    
    		for (int c = 0; c < img.cols; ++c)
    		{
    			cout.width(5);
    			ptr[c] = r*10+c;
    			cout << (int)ptr[c] <<",";
    		}
    		cout << endl;
    	}
    	imshow("1" , img);
    	//创建矩形结构元
    	Mat s = cv::getStructuringElement(cv::MORPH_RECT , Size(3,3));
    	Mat dst;
    	//Point(-1,-1) 表示中心 , 1:腐蚀次数
    	erode( img , dst , s , Point(-1,-1) , 1);
    	namedWindow("erode", WINDOW_NORMAL);
    	cvResizeWindow("erode", 500, 500);
    	imshow("erode" , dst);
    	cout<<"------------------------------腐蚀后--------------------------------"<<endl;
    	for (int r = 0; r < img.rows; ++r)
    	{
    		uchar* ptr = dst.ptr<uchar>(r);
    		for (int c = 0; c < dst.cols; ++c)
    		{
    			cout.width(5);
    			cout << (int)ptr[c] << ",";
    		}
    		cout << endl;
    	}
    
    	waitKey();
    	return 0;
    }
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58

    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    解决js加减乘除精度丢失问题
    css步骤条
    RS232协议、RS485协议
    链式二叉树的基本操作实现
    #LLM入门|prompt#【整合目录】面向开发者的LLM入门教程
    大商创的开源代码中有很多后门,以方便官方监控系统的使用,官方做的真是无孔不入啊,我找到了下面几种
    MYSQL索引查询问题质疑
    Policy-Based Method RL
    day10
    题目地址(295. 数据流的中位数)
  • 原文地址:https://blog.csdn.net/doubleintfloat/article/details/133283011