91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

剑阁县| 清远市| 固安县| 揭东县| 永仁县| 潼关县| 阳新县| 内黄县| 积石山| 克山县| 印江| 东丰县| 昌都县| 远安县| 堆龙德庆县| 海安县| 祁阳县| 峨眉山市| 霍林郭勒市| 上林县| 阿合奇县| 息烽县| 绥德县| 天峻县| 环江| 海淀区| 泽州县| 阳曲县| 汾阳市| 台中县| 洪雅县| 拉孜县| 柳州市| 淮安市| 柏乡县| 礼泉县| 保靖县| 图们市| 海晏县| 汕头市| 永济市|