日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯網營銷解決方案
創(chuàng)新互聯Python教程: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算子的使用,希望對大家有所幫助。更多Python學習指路:創(chuàng)新互聯python教程

本文教程操作環(huán)境:windows7系統(tǒng)、Python 3.9.1,DELL G3電腦。


名稱欄目:創(chuàng)新互聯Python教程:python中Sobel算子如何使用
文章起源:http://m.5511xx.com/article/ccopccs.html