中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

OpenCV中如何使用Sobel、Laplacian、Canny進行邊緣檢測

發布時間:2021-11-25 13:47:39 來源:億速云 閱讀:172 作者:柒染 欄目:編程語言

OpenCV中如何使用Sobel、Laplacian、Canny進行邊緣檢測,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

簡述

OpenCV邊緣檢測的一般步驟為:

  1. 濾波

  2. 增強

  3. 檢測

常用的邊緣檢測的算子和濾波器有:

  1. Sobel算子

  2. Laplacian算子

  3. Canny算子

  4. Scharr濾波器

以下使用Sobel、Laplacian和Canny算子進行邊緣檢測。圖片是從網上隨意下載的一張。

代碼

import cv2

#********************Sobel邊緣檢測*****************************
def edge_sobel( src ):
    kernelSize = (3, 3)
    gausBlurImg = cv2.GaussianBlur( src, kernelSize, 0 )

    #轉換為灰度圖
    channels = src.shape[2]
    if channels > 1:
        src_gray = cv2.cvtColor( gausBlurImg, cv2.COLOR_RGB2GRAY )
    else:
        src_gray = src.clone()

    scale = 1
    delta = 0
    depth = cv2.CV_16S

    #求X方向梯度(創建grad_x, grad_y矩陣)
    grad_x = cv2.Sobel( src_gray, depth, 1, 0 )
    abs_grad_x = cv2.convertScaleAbs( grad_x )

    #求Y方向梯度
    grad_y = cv2.Sobel( src_gray, depth, 0, 1 )
    abs_grad_y = cv2.convertScaleAbs( grad_y )

    #合并梯度(近似)
    edgeImg = cv2.addWeighted( abs_grad_x, 0.5, abs_grad_y, 0.5, 0 )
    return edgeImg

#********************Laplacian邊緣檢測*****************************
def edge_laplacian( src ):
    scale = 1
    delta = 0
    depth = cv2.CV_16S

    if src.shape[2] > 1:
        src_gray = cv2.cvtColor( src, cv2.COLOR_RGB2GRAY )
    else:
        src_gray = src.clone()

    kernelSize = (3, 3)
    gausBlurImg = cv2.GaussianBlur( src_gray, kernelSize, 0 )
    laplacianImg = cv2.Laplacian( gausBlurImg, depth, kernelSize )
    edgeImg = cv2.convertScaleAbs( laplacianImg )
    return edgeImg

#********************Canny邊緣檢測*****************************
def edge_canny( src, threshold1, threshold2 ):
    kernelSize = (3, 3)

    gausBlurImg = cv2.GaussianBlur( src, kernelSize, 0 )
    edgeImg = cv2.Canny( gausBlurImg, threshold1, threshold2 )
    return edgeImg

#********************主函數*****************************
imgSrc = cv2.imread( "1.jpg" )

sobelImg = edge_sobel( imgSrc )
laplacianImg = edge_laplacian( imgSrc )
cannyImg = edge_canny( imgSrc, 20, 60 )

cv2.imshow( "Origin", imgSrc )
cv2.imshow( "Sobel", sobelImg )
cv2.imshow( "Laplacian", laplacianImg )
cv2.imshow( "Canny", cannyImg )

cv2.waitKey( 0 )
cv2.destroyAllWindows()

效果

OpenCV中如何使用Sobel、Laplacian、Canny進行邊緣檢測

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

惠东县| 灵寿县| 朝阳区| 宁海县| 宜黄县| 公主岭市| 额尔古纳市| 西乡县| 呼图壁县| 仁怀市| 西乌珠穆沁旗| 寿阳县| 武冈市| 赤城县| 南雄市| 灵丘县| 泰州市| 兴宁市| 泸西县| 临漳县| 夏邑县| 黄梅县| 渝中区| 志丹县| 贺兰县| 伽师县| 博客| 凤翔县| 萨迦县| 上林县| 肥东县| 三河市| 临漳县| 汝州市| 保定市| 潼关县| 依兰县| 门源| 三明市| 彝良县| 大连市|