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

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:灰度值的最小阈值;

 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结果图




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值