0
点赞
收藏
分享

微信扫一扫

OpenCV.形态学操作

酷子腿长一米八 2022-02-04 阅读 87

图像处理的形态学操作有:膨胀、腐蚀、开操作、闭操作、形态学梯度、顶帽、黑帽。

代码演示:

#include <opencv2/opencv.hpp>
#include <iostream>
#include <opencv2/core/utils/logger.hpp>

using namespace std;
using namespace cv;

Mat src, dst;
int element_size = 3;
int max_size = 21;
void callback_demo(int, void*);

int main(int argc, const char* argv[])
{
	utils::logging::setLogLevel(utils::logging::LOG_LEVEL_SILENT);	//设置日志输出

	src = imread("E:/picture/11.jpg");
	namedWindow("output", WINDOW_AUTOSIZE);
	createTrackbar("element", "output", &element_size, max_size, callback_demo);
	callback_demo(0,0);
	putText(src, "OpenCv_vigny", Point(20, 30), FONT_HERSHEY_COMPLEX, 1.0,
		Scalar(12, 12, 127), 1, LINE_8, false);
	imshow("input", src);
	waitKey(0);
	destroyAllWindows();
	return 0;
}

void callback_demo(int, void*)
{
	int s = element_size*2+1;
	Mat structelement = getStructuringElement(MORPH_RECT, Size(s, s), Point(-1, -1));

    //腐蚀
	//morphologyEx(src, dst, MORPH_DILATE, structelement, Point(-1, -1), 1);

    //膨胀	
	//morphologyEx(src, dst, MORPH_ERODE, structelement, Point(-1, -1), 1);

    //开操作(先腐蚀后膨胀)	
	//morphologyEx(src, dst, MORPH_OPEN, structelement, Point(-1, -1), 1);

    //闭操作(先膨胀后腐蚀)	
	//morphologyEx(src, dst, MORPH_CLOSE, structelement, Point(-1, -1), 1);

    //形态学梯度	
	//morphologyEx(src, dst, MORPH_GRADIENT, structelement, Point(-1, -1), 1);

    //顶帽(原图像-开操作)	
	//morphologyEx(src, dst, MORPH_TOPHAT, structelement, Point(-1, -1), 1);

    //黑帽(闭操作-原图像)	
	//morphologyEx(src, dst, MORPH_BLACKHAT, structelement, Point(-1, -1), 1);
	
	imshow("output", dst);
	return;
}
举报

相关推荐

0 条评论