OpenCV之膨胀和腐蚀滚动条操作例程

代码

#include <iostream>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/videoio.hpp>
#include <opencv2/video.hpp>
 
using namespace cv;
using namespace std;
 
Mat image, dstImage;
static int currentOprs = 0;
int g_nStructElementSize = 3;//内核矩阵的尺寸

void process() {
	Mat element = getStructuringElement(MORPH_RECT, Size(g_nStructElementSize * 2 + 1, g_nStructElementSize * 2 + 1));
	if (!currentOprs) {
		//膨胀操作
		dilate(image, dstImage, element);
	}
	else {
		//腐蚀操作
		erode(image, dstImage, element);
	}
	imshow("膨胀和腐蚀操作", dstImage);
}

void onTrackBar(int, void*) {
	process();
}

int main(int argc, char** argv)
{
	//显示原图
	image = imread("700levi.jpg");
	namedWindow("原图");
	imshow("原图", image);

	namedWindow("膨胀和腐蚀操作");
	createTrackbar("膨胀或腐蚀", "膨胀和腐蚀操作", &currentOprs, 1, onTrackBar);
	createTrackbar("操作内核", "膨胀和腐蚀操作", &g_nStructElementSize, 21, onTrackBar);
	//获取自定义核
	Mat element = getStructuringElement(MORPH_RECT, Size(g_nStructElementSize * 2 + 1, g_nStructElementSize * 2 + 1));
	dilate(image, dstImage, element);
	imshow("膨胀和腐蚀操作", dstImage);

	waitKey(0);
	return 0;
}

 效果

 

说明

结合滚动条来控制膨胀和腐蚀操作,主要是控制切换膨胀或腐蚀操作,修改内核范围.

猜你喜欢

转载自blog.csdn.net/sono_io/article/details/124704289