C++ opencv SOBEL梯度

55 篇文章 0 订阅
50 篇文章 1 订阅

 

 

code

int main(int argc, int argv)
{
	Mat SrcImage = imread(".//01-3.jpg");
	//第一步:灰度化
	Mat gray;
	if (SrcImage.channels() == 3)
	{
		cvtColor(SrcImage, gray, CV_BGR2GRAY);
	}
	else
	{
		gray = SrcImage;
	}
	Mat graysrc = gray.clone();

	2.1 增加的膨胀代码  自定义核(20 10) 横向膨胀的大一些
	//Mat kernel_gray = getStructuringElement(MORPH_RECT, Size(3, 3), Point(-1, -1));
	//dilate(gray, gray, kernel_gray);

	//1.Sobel算子,x方向求梯度
	//threshold(gray, gray, 0, 255, CV_THRESH_OTSU + CV_THRESH_BINARY);

	Mat sobel_x;
	Mat sobel_y;
	Sobel(gray, sobel_x, CV_8U, 1, 0, 3);
	Sobel(gray, sobel_y, CV_8U, 0, 1, 3);

	cv::namedWindow("sobel_x", CV_WINDOW_NORMAL);//创建窗口
	cvResizeWindow("sobel_x", 800, 800); //创建一个500*500大小的窗口
	imshow("sobel_x", sobel_x);
	cv::namedWindow("sobel_y", CV_WINDOW_NORMAL);//创建窗口
	cvResizeWindow("sobel_y", 800, 800); //创建一个500*500大小的窗口
	imshow("sobel_y", sobel_y);

	Mat img_sobel;
	addWeighted(sobel_x, 0.5, sobel_y, 0.5,1.0, img_sobel);

	//2.1 增加的膨胀代码  自定义核(20 10) 横向膨胀的大一些
	Mat kernel_mean = getStructuringElement(MORPH_RECT, Size(3, 3), Point(-1, -1));
	dilate(img_sobel, img_sobel, kernel_mean);

	// 设置中值滤波窗大小
	const int winSize = 21;
	// 中值滤波
	cv::medianBlur(img_sobel, gray, winSize);

	cv::namedWindow("medianBlur", CV_WINDOW_NORMAL);//创建窗口
	cvResizeWindow("medianBlur", 800, 800); //创建一个500*500大小的窗口
	imshow("medianBlur", gray);

	//第二步:OTSU阈值分割
	threshold(gray, gray, 0, 255, CV_THRESH_OTSU + CV_THRESH_BINARY);

	//2.1 增加的膨胀代码  自定义核(20 10) 横向膨胀的大一些
	Mat kernel_gray = getStructuringElement(MORPH_RECT, Size(30, 5), Point(-1, -1));
	dilate(gray, gray, kernel_gray);

	cv::namedWindow("gray", CV_WINDOW_NORMAL);//创建窗口
	cvResizeWindow("gray", 800, 800); //创建一个500*500大小的窗口
	imshow("gray", gray);
}

 I hope I can help you,If you have any questions, please  comment on this blog or send me a private message. I will reply in my free time.   

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值