图像处理5:Sobel边缘检测算子(C++)[通俗易懂]

图像处理5:Sobel边缘检测算子(C++)[通俗易懂]voidCMFCworkDlg::OnBnClickedButton7(){ //TODO:在此添加控件通知处理程序代码 //Sobel算子边缘检测 Matimage=imread(“ema.jpg”,1); Matimage_gray=gray_img(image); Matgradx,grady; gradx.create(image.size(),CV_8UC1); grady.create(image.size(),CV_8UC1); for..

大家好,又见面了,我是你们的朋友全栈君。

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

void CMFCworkDlg::OnBnClickedButton7()
{ 
   
	// TODO: 在此添加控件通知处理程序代码
	// Sobel算子边缘检测
	Mat image = imread("ema.jpg", 1);
	Mat image_gray = gray_img(image);
	Mat gradx,grady;

	gradx.create(image.size(), CV_8UC1);
	grady.create(image.size(), CV_8UC1);


	for (int i = 1; i < image.rows-1; i++)
	{ 
   
		for (int j = 1; j < image.cols-1; j++)
		{ 
   
			gradx.at<uchar>(i, j) = saturate_cast<uchar>(fabs(image_gray.at<uchar>(i + 1, j - 1) + 2 * image_gray.at<uchar>(i + 1, j) + image_gray.at<uchar>(i + 1, j +1) -image_gray.at<uchar>(i - 1, j - 1) - 2 * image_gray.at<uchar>(i - 1, j) - image_gray.at<uchar>(i - 1, j + 1)));
			grady.at<uchar>(i, j) = saturate_cast<uchar>(fabs(image_gray.at<uchar>(i - 1, j + 1) + 2* image_gray.at<uchar>(i , j + 1)+ image_gray.at<uchar>(i+1,j+1)-image_gray.at<uchar>(i-1,j-1)-2*image_gray.at<uchar>(i,j-1)-image_gray.at<uchar>(i+1,j-1)));
		}
	}
	imshow("灰度图", image_gray);
	imshow("gradx", gradx);
	imshow("grady", grady);
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/159853.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 10款好用的谷歌chrome浏览器插件、扩展程序,用起来很爽哦

    10款好用的谷歌chrome浏览器插件、扩展程序,用起来很爽哦TOP1:AdblockPlus介绍:AdblockPlus是Chrome浏览器中非常流行的一款广告拦截插件,AdblockPlus的用户多达数百万之多,在全球范围内都有很高的使用评价,AdblockPlus是由一个开源社区来维护。TOP2:OfficeEditingforDocs,Sheets&Slides介绍:officeediting是一款可…

    2022年4月29日
  • jieba库的用法

    jieba库的用法jieba“结巴”中文分词:做最好的Python中文分词组件“Jieba”(Chinesefor“tostutter”)Chinesetextsegmentation:builttobethebestPythonChinesewordsegmentationmodule.ScrolldownforEnglishdocumentation.特…

    2022年9月16日
  • python interpolate.interp1d_我如何使用scipy.interpolate.interp1d使用相同的X数组插值多个Y数组?…

    python interpolate.interp1d_我如何使用scipy.interpolate.interp1d使用相同的X数组插值多个Y数组?…例如,我有一个二维数据数组,其中一个维度上带有误差条,如下所示:In[1]:numpyasnpIn[2]:x=np.linspace(0,10,5)In[3]:y=np.sin(x)In[4]:y_er=(np.random.random(len(x))-0.5)*0.1In[5]:data=np.vstack([x,y,y_er]).TIn[6]:da…

    2022年6月1日
  • double保留小数点后两位_保留两位小数点公式

    double保留小数点后两位_保留两位小数点公式publicclassDoubleTest{//保留两位小数第三位如果大于4会进一位(四舍五入)doublef=6.23556;/***使用精确小数BigDecimal*/publicvoidfun1(){BigDecimalbg=newBigDecimal(f);/…

    2022年10月21日
  • 十进制转换为二进制java_二进制转八进制算法

    十进制转换为二进制java_二进制转八进制算法将十进制转换为二进制将二进制转换为十进制1.将十进制转换为二进制:思路:对十进制的数进行除2取余法:/***讲10进制转化为二进制*@paramde:待转换的十进制*@return:转换后的二进制(string)*/publicstaticStringDecimal2Binary(intde){

    2022年10月18日
  • U盘量产检查闪存编码失败_北信源安全u盘忘记密码

    U盘量产检查闪存编码失败_北信源安全u盘忘记密码没什么特殊的想法就是看自己很久没有更新关于题解类的文章了而已(其实这是我好久之前做的,只是把它从洛谷博客搬到了这里而已)题目首先分析题目要二分他长成这个亚子太二分了所以就要二分最好是先排一下序吧这样我们在输入的时候就能顺便处理出l和r的值,考虑我们二分的是一个接口的大小,所以我们的答案肯定是在最大的接口和最小的接口之间啊,所以这样做是可…

    2022年10月12日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号