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

溫馨提示×

溫馨提示×

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

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

python的Sobel算子怎么使用

發布時間:2022-05-27 16:18:06 來源:億速云 閱讀:223 作者:iii 欄目:大數據

這篇“python的Sobel算子怎么使用”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“python的Sobel算子怎么使用”文章吧。

說明

1、Sobel算子根據像素點的上下、左右相鄰點的灰度加權差,在邊緣達到極值的現象來檢測邊緣。

它具有平滑的噪聲功能,并提供更準確的邊緣方向信息。由于Sobel算子結合了高斯平滑度和微分求導(分化),因此結果會更具抗噪性,當對精度要求不高時,Sobel算子是一種常用的邊緣檢測方法。

2、Sobel算子仍然是過濾器,但它有方向。

dst = cv2.Sobel(src, ddepth, dx, dy[, dst[, ksize[, scale[, delta[, borderType]]]]])

實例

# coding=utf-8
import cv2
import numpy as np
 
img = cv2.imread("D:/test/26.png", 0)
 
'''
在Sobel函數的第二個參數這里使用了cv2.CV_16S。
因為OpenCV文檔中對Sobel算子的介紹中有這么一句:
“in the case of 8-bit input images it will result in truncated derivatives”。
即Sobel函數求完導數后會有負值,還有會大于255的值。
而原圖像是uint8,即8位無符號數,所以Sobel建立的圖像位數不夠,會有截斷。
因此要使用16位有符號的數據類型,即cv2.CV_16S。
在經過處理后,別忘了用convertScaleAbs()函數將其轉回原來的uint8形式。
否則將無法顯示圖像,而只是一副灰色的窗口。convertScaleAbs()的原型為:
dst = cv2.convertScaleAbs(src[, dst[, alpha[, beta]]])
其中可選參數alpha是伸縮系數,beta是加到結果上的一個值。結果返回uint8類型的圖片。
由于Sobel算子是在兩個方向計算的,最后還需要用cv2.addWeighted(...)函數將其組合起來。
其函數原型為:
dst = cv2.addWeighted(src1, alpha, src2, beta, gamma[, dst[, dtype]])
其中alpha是第一幅圖片中元素的權重,beta是第二個的權重,gamma是加到最后結果上的一個值。
'''
 
x = cv2.Sobel(img, cv2.CV_16S, 1, 0)
y = cv2.Sobel(img, cv2.CV_16S, 0, 1)
 
absX = cv2.convertScaleAbs(x)# 轉回uint8
absY = cv2.convertScaleAbs(y)
 
dst = cv2.addWeighted(absX, 0.5, absY, 0.5, 0)
 
cv2.imshow("orign", img)
cv2.imshow("absX", absX)
cv2.imshow("absY", absY)
 
cv2.imshow("Result", dst)
 
cv2.waitKey(0)
cv2.destroyAllWindows()

以上就是關于“python的Sobel算子怎么使用”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

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

AI

昌图县| 泗洪县| 大姚县| 含山县| 峨边| 寻甸| 乐安县| 都昌县| 务川| 绥阳县| 榆中县| 呼和浩特市| 邓州市| 奉节县| 揭阳市| 温州市| 贡山| 邵阳县| 黑龙江省| 昭觉县| 通化市| 永兴县| 清原| 泗水县| 水城县| 抚顺县| 滨海县| 昌邑市| 团风县| 渝中区| 和硕县| 柞水县| 合山市| 广宁县| 都昌县| 婺源县| 高平市| 乐亭县| 武宣县| 九台市| 拜泉县|