十八、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...