目錄
- 一、Canny算法
- 二、C++代碼
- 三、python代碼
- 四、結果展示
-
- 1、原始圖像
- 2、灰階圖像
- 3、圖像邊緣
- 五、參考連結
一、Canny算法
Canny邊緣檢測算法是目前最優越的邊緣檢測算法之一,該算法的檢測過程分5個步驟:
- 使用高斯濾波平滑圖像,減少噪聲。
- 計算圖像中每個像素的梯度方向和幅值。
- 應用非極大值抑制算法消除邊緣檢測帶來的雜散相應。
- 應用雙門檻值法區分強邊緣和弱邊緣。
- 消除孤立的邊緣。
二、C++代碼
#include <opencv2\opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
//----------------讀取圖像-----------------
Mat img = imread("1.jpg");
//黑白圖像邊緣檢測結果較為明顯
Mat gray_img;
cvtColor(img, gray_img, COLOR_BGR2GRAY);
Mat resultHigh;
//--------------Canny邊緣檢測--------------
// 圖像品質較好,無噪聲。是以,無需高斯濾波。
Canny(gray_img, resultHigh, 100, 200, 3);
//----------------顯示圖像-----------------
imshow("origin_pic", img);
imshow("gray", gray_img);
imshow("resultHigh", resultHigh);
waitKey(0);
return 0;
}
三、python代碼
import cv2
img = cv2.imread("1.jpg")
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# -------------------canny()邊緣檢測------------------------
# 圖像品質較好,無噪聲。是以,無需高斯濾波。
canny = cv2.Canny(gray_img, 100, 200, 3)
# ----------------------顯示結果----------------------------
cv2.imshow("original_img", img)
cv2.imshow("gray_img", gray_img)
cv2.imshow('Canny', canny)
cv2.waitKey(0)
四、結果展示
1、原始圖像
2、灰階圖像
3、圖像邊緣
五、參考連結
[1] OpenCV—python 邊緣檢測(Canny)
[2] OpenCV彩色圖與灰階圖互相轉換
[3] OpenCV–圖像轉化為灰階圖、HSV圖
[4] Canny邊緣檢測算法原理及其VC實作詳解(一)