天天看點

opencv學習筆記十四:canny邊緣檢測

canny邊緣檢測步驟:

1、高斯模糊,去除噪聲;

2、灰階轉換;

3、計算梯度;

4、非極大值抑制;計算出來的梯度在各方向隻保留梯度最大的,得到較細的邊緣;

5、高低門檻值連接配接:大于高門檻值的保留,小于低門檻值的舍棄,對于在高低門檻值中間的,當其四領域或八領域内有高門檻值的像素時,就将其連接配接,沒有就舍棄。

#include<opencv2/opencv.hpp>
using namespace cv;

Mat src,gray_img, blur_img,canny_img,dst;
int value = 30;
void CallBack(int, void*);
int main(int arc, char** argv)
{   
	src = imread("1.jpg");
	namedWindow("input",CV_WINDOW_AUTOSIZE);
	imshow("input", src);
	cvtColor(src, gray_img, CV_BGR2GRAY);

	namedWindow("output", CV_WINDOW_AUTOSIZE);
	createTrackbar("ThresholdValue", "output", &value, 255, CallBack);
	CallBack(0, 0);

	waitKey(0);
	return 0;
}
void CallBack(int, void*) {
	GaussianBlur(gray_img, blur_img, Size(3, 3), 10, 10);
	int threshold1 = value;
	int threshold2 = 2*va