OpenCV18 Canny邊緣檢測

2021-10-04 08:32:02 字數 1707 閱讀 1677

十八、canny邊緣檢測

1、canny演算法介紹

2、canny演算法介紹—五步

3、apicanny

canny

(inputarray src,

//8 bit 的輸入影象

outputarray edges,

//輸出邊緣影象,一般都是二值影象,背景是黑色

double threshold1,

//低閾值,常取高閾值的1/2或者1/3

double threshold2,

//高閾值

int apterturesize,

//sobel運算元的size,通常是3*3,取值3

bool l2gradient//選擇true表示是l2來歸一化,否則false表示用l1歸一化,l2代表對兩個值的平方和開根號,l1是兩個數的絕對值相加。預設為l1

)

示例**:(canny運算元邊緣檢測)

#include

#include

#include

using

namespace cv;

using

namespace std;

mat src, dst, gray_src;

int t1_value =50;

int max_value =

255;

char output_win=

"canny result"

;void

canny_demo

(int

,void*)

;int

main

(int argc,

char

*ar**)

char input_win=

"input image"

;namedwindow

(input_win, window_autosize)

;namedwindow

(output_win, window_autosize)

;imshow

(input_win, src)

;cvtcolor

(src, gray_src, color_bgr2gray)

;//轉灰度

createtrackbar

("threshold value:"

, output_win,

&t1_value, max_value, canny_demo)

;//建立拖動條,控制閾值

canny_demo(0

,0);

waitkey(0

);return0;

}void

canny_demo

(int

,void*)

輸出結果顯示:

正常輸出結果:

取反後輸出結果:

疊加彩色值輸出結果:

opencv的Canny邊緣檢測

前言 目標 去噪 邊緣對雜訊敏感,第一步先用高斯濾波器來濾波。尋找影象的密度梯度 對平滑後的影象進行濾波用sobel濾波器來求出x,y方向的導數。梯度方向總是垂直於邊緣 非極大值抑制 在得到梯度的值和方向後,對影象進行全面掃瞄,取出不需要的畫素,這些畫素可能不構成邊緣。對於這一點如果畫素是其梯度方向...

openCV例項 Canny邊緣檢測

在第一次使用opencv程式成功對影象進行開啟後,現在開始試驗第二個例程試驗 canny邊緣檢測 這裡演算法原理和具體程式設計語句都先不管,因為作為一名新手 反正我是這麼感覺的 拿些現成的程式跑出效果才是讓人很有feel的。先貼下原 include cv.hpp include cxcore.hpp...

OpenCV中Canny邊緣檢測

具體的canny邊緣檢測原理 1 消除雜訊,使用高斯平滑濾波器卷積降噪 2 計算梯度幅值和方向。利用sobel濾波器。得到x和y方向的導數gx和gy 計算梯度的幅值和方向 g sqrt gx 2 gy 2 a arctan gx gy 梯度的方向近似到四個可能角度之一 一般0,45,90,135 3...