目錄
- 一、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實作詳解(一)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/307284.html
標籤:python
