Opencv3 C ++ VS2017 연구 노트 15 Canny edge detection 알고리즘

  • Canny 알고리즘 5 단계 : Canny 알고리즘은 가장자리 감지 알고리즘이며 좋은 가장자리 감지기입니다.
    • GaussianBlur 노이즈 제거
    • 그레이 스케일 변환 cvtColor
    • 픽셀 그래디언트 Sobel / Scharr 계산
    • 비 최대 억제 (x \ y 방향에서 최대가 아닌 값 제거)
    • 상한 및 하한 임계 값 출력 이진 이미지
      • T1, T2는 임계 값, T2 : T1 = 3 : 1 또는 2 : 1, T2는 높은 임계 값, T1은 낮은 임계 값
      • > T2 픽셀, 예약 됨
      • 픽셀> T1과 픽셀> T2가 서로 연결되면 픽셀은 유지됩니다.
  • Canny 알고리즘 API
    • Canny (src, 가장자리, threshold1, threshold2, 크기, L2gradient);
    • 매개 변수 : 원본 이미지, 가장자리 만있는 이미지, 낮은 임계 값, 높은 임계 값, Sobel 연산자 크기 (그래디언트 계산을위한 연산자), L2gradient가 true 인 경우 L2를 사용하여 정규화하고, false를 사용하여 L1을 정규화합니다.
    • 참고 : Canny ()는 이진 이미지를 가져옵니다.
#include "pch.h"
#include <iostream>
#include <opencv2/opencv.hpp>
#include <string>

using namespace std;
using namespace cv;
int t1 = 50;
int t2 = t1 * 2;
int max_value = 255;
void cannyCallback(int, void*);
Mat src, gray, bin, dst, canny;
int main(int argc, char ** argv)
{
	
	src = imread("C:\\Users\\xujin\\Desktop\\test1.JPG");
	if (!src.data)
	{
		cout << "no image";
		return -1;
	}
	namedWindow("src_image", WINDOW_AUTOSIZE);
	namedWindow("dst_image", WINDOW_AUTOSIZE);
	namedWindow("dstGray_image", WINDOW_AUTOSIZE);
	namedWindow("canny_image", WINDOW_AUTOSIZE);
	imshow("src_image", src);
	cvtColor(src, gray, COLOR_BGR2GRAY);
	imshow("dstGray_image", gray);
	createTrackbar("cannyT1T2", "canny_image", &t1, max_value, cannyCallback);
	cannyCallback(0, 0);

	waitKey(0);
	return 0;
}
void cannyCallback(int, void*)
{
	blur(gray, bin, Size(3, 3), Point(-1, -1), BORDER_DEFAULT);
	Canny(bin, canny, t1,t2, 3, false);
	imshow("canny_image", canny);
}

 

추천

출처blog.csdn.net/Mrsherlock_/article/details/104594498