ITKeyword,专注技术干货聚合推荐

注册 | 登录

图像处理--opencv2 canny边缘检测

boon_228 分享于

2020腾讯云限时秒杀,爆款1核2G云服务器99元/年!(领取2860元代金券),
地址https://cloud.tencent.com/act/cps/redirect?redirect=1062

2020阿里云最低价产品入口+领取代金券(老用户3折起),
入口地址https://www.aliyun.com/minisite/goods

推荐:【数字图像处理】Canny图像边缘检测算法VC6.0+OpenCV实现

up vote 0 down vote favorite I've read many stuff about Drools Guvnor and the interaction with Drools Planner. It would be very useful to create and c

1.canny检测:  

Canny 的目标是找到一个最优的边缘检测算法,最优边缘检测的含义是:
好的检测- 算法能够尽可能多地标识出图像中的实际边缘。
好的定位- 标识出的边缘要尽可能与实际图像中的实际边缘尽可能接近。
 最小响应- 图像中的边缘只能标识一次,并且可能存在的图像噪声不应标识为边缘。
为了满足这些要求 Canny 使用了变分法,这是一种寻找满足特定功能的函数的方法。最优检测使用四个指数函数项的和表示,但是它非常近似于高斯函数的一阶导数。
2.Canny边缘检测算法步骤
Canny边缘检测算法可以分为以下5个步骤:
应用高斯滤波来平滑图像,目的是去除噪声
找寻图像的强度梯度(intensity gradients)
应用非最大抑制(non-maximum suppression)技术来消除边误检(本来不是但检测出来是)
应用双阈值的方法来决定可能的(潜在的)边界
利用滞后技术来跟踪边界


3.opencv2 Canny函数

void Canny( InputArray image, OutputArray edges,
                         double threshold1, double threshold2,
                         int apertureSize=3, bool L2gradient=false );

其中:

InputArray image:输入图像,必须为灰度图;

OutputArray edges:输出图像,保存canny边缘检测的结果;

double threshold1:灰度值的最小阈值;

推荐:【OpenCV】Canny 边缘检测

Canny 边缘检测算法 1986年,JOHN CANNY 提出一个很好的边缘检测算法,被称为Canny编边缘检测器[1]。 Canny边缘检测根据对信噪比与定位乘积进行测度,得到最优化

 double threshold2:灰度值的最大阈值。

示例:

#include <opencv/cv.h>
#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/features2d/features2d.hpp>
#include <opencv2/legacy/legacy.hpp>
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <iostream>
#include <string>
#include <sstream>

using namespace std;
using namespace cv;



int img_canny(Mat image) {
	if (!image.data) {
		cout << "Fail to load image" << endl;
		return 1;
	}
	Mat gray;
	if (image.channels() == 3) {
		cvtColor(image, gray, CV_BGR2GRAY);
	} else {
		image.copyTo(gray);
	}
	Mat result;
	Canny(gray, result, 50, 250);

	imshow("cannyResult", result);
	return 0;
}
int main(int args, char** argv) {
	Mat image = imread("/home/odroid/boon/pro_internet/xidao/A002.jpg"); 
	imshow("original", image);
	img_canny(image);  //canny
	waitKey();
	return 0;
}


      

输入原始图                                                                                                                canny结果图




推荐:OpenCV2马拉松第17圈——边缘检测(Canny边缘检测)

计算机视觉讨论群162501053 转载请注明:http://blog.csdn.net/abcd1992719g 收入囊中 利用OpenCV Canny函数进行边缘检测 掌握Canny算法基本理论 分享Java的实现

1.canny检测:   Canny 的目标是找到一个最优的边缘检测算法,最优边缘检测的含义是: 好的检测- 算法能够尽可能多地标识出图像中的实际边缘。 好的定位- 标识出的边缘要尽可能与实际图像中的实

相关阅读排行


相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。