亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

保山市| 油尖旺区| 金川县| 岐山县| 湘潭县| 浦县| 读书| 五台县| 东方市| 闽清县| 阜康市| 潜山县| 南江县| 邳州市| 南丰县| 大英县| 新和县| 呼图壁县| 隆化县| 长兴县| 仪征市| 安义县| 惠安县| 宁津县| 瑞安市| 河津市| 噶尔县| 安陆市| 濉溪县| 环江| 麻栗坡县| 溆浦县| 尚志市| 罗江县| 颍上县| 马龙县| 五大连池市| 防城港市| 裕民县| 望江县| 洪江市|