欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python+OpenCV之圖像梯度詳解

 更新時(shí)間:2022年09月28日 15:08:57   作者:錦鯉AI幸運(yùn)  
這篇文章主要為大家詳細(xì)介紹了Python OpenCV中圖像梯度(Sobel算子、Scharr算子和Laplacian算子)的實(shí)現(xiàn),感興趣的小伙伴可以了解一下

1. Sobel算子

OpenCV系列—本文底頁(yè)有多個(gè)常用方法鏈接

1.1 Sobel介紹

cv2.Sobel(src, ddepth, dx, dy, ksize)

  • ddepth:圖像的深度
  • dx和dy分別表示水平和豎直方向
  • ksize是Sobel算子的大小

import cv2  # opencv讀取的格式是BGR


def cv_show(img, name):
    cv2.imshow(name, img)
    cv2.waitKey()
    cv2.destroyAllWindows()


img = cv2.imread('../img/pie.png', cv2.IMREAD_GRAYSCALE)
cv2.imshow("img", img)
cv2.waitKey()
cv2.destroyAllWindows()

pie.png原圖(右擊另存為下載):

1.2 橫向Sobel算子

采用上述公式中的 G x G_{x} Gx?濾波器掃描整張圖,提取了左右兩邊有梯度差的位置,但是橫向看圓的上頂端和下頂端的梯度不明顯所以呈現(xiàn)圖片如下上下端為虛線的圓

sobelx = cv2.Sobel(img, cv2.CV_64F, 1, 0, ksize=3)
cv_show(sobelx, 'sobelx')

結(jié)果如下:

白-黑是正數(shù),黑-白就是負(fù)數(shù)了,所有的負(fù)數(shù)會(huì)被截?cái)喑?,所以要取絕對(duì)值。

sobelx = cv2.Sobel(img, cv2.CV_64F, 1, 0, ksize=3)
sobelx = cv2.convertScaleAbs(sobelx)
cv_show(sobelx, 'sobelx')

加入絕對(duì)值后,梯度結(jié)果就可以有一個(gè)完整的圓:

1.3 縱向Sobel算子

采用上述公式中的 G y G_{y} Gy?濾波器掃描整張圖,提取了上下兩邊有梯度差的位置,但是縱向看圓的左頂端和右頂端的梯度不明顯所以呈現(xiàn)圖片如左右端為虛線的圓。

sobely = cv2.Sobel(img, cv2.CV_64F, 0, 1, ksize=3)
sobely = cv2.convertScaleAbs(sobely)
cv_show(sobely, 'sobely')

1.4 合并橫縱向的方法提取更好的邊緣的結(jié)果

將橫向梯度提取濾波器 Gx與縱向梯度提取濾波器Gy?相加,即可得到效果較好的圓的邊緣梯度信息。

sobelxy = cv2.addWeighted(sobelx, 0.5, sobely, 0.5, 0)
cv_show(sobelxy, 'sobelxy')

不推薦

sobelxy = cv2.Sobel(img, cv2.CV_64F, 1, 1, ksize=3)
sobelxy = cv2.convertScaleAbs(sobelxy)
cv_show(sobelxy, 'sobelxy')

結(jié)果顯示,相對(duì)于分開(kāi)使用橫縱向算子邊緣重影嚴(yán)重:

1.5 利用1.3方法繪制素描風(fēng)格

lena.jpg原圖,另存為保存:

import cv2  # opencv讀取的格式是BGR


img = cv2.imread('../img/lena.jpg', cv2.IMREAD_GRAYSCALE)
sobelx = cv2.Sobel(img, cv2.CV_64F, 1, 0, ksize=3)
sobelx = cv2.convertScaleAbs(sobelx)
sobely = cv2.Sobel(img, cv2.CV_64F, 0, 1, ksize=3)
sobely = cv2.convertScaleAbs(sobely)
sobelxy = cv2.addWeighted(sobelx, 0.5, sobely, 0.5, 0)
cv_show(sobelxy, 'sobelxy')

2. Scharr算子

import cv2  # opencv讀取的格式是BGR


img = cv2.imread('../img/lena.jpg', cv2.IMREAD_GRAYSCALE)

scharrx = cv2.Scharr(img, cv2.CV_64F, 1, 0)
scharry = cv2.Scharr(img, cv2.CV_64F, 0, 1)
scharrx = cv2.convertScaleAbs(scharrx)
scharry = cv2.convertScaleAbs(scharry)
scharrxy = cv2.addWeighted(scharrx, 0.5, scharry, 0.5, 0)

二階動(dòng)量對(duì)紋理細(xì)節(jié)區(qū)分更加豐富,結(jié)果圖如下:

3. Laplacian算子

import cv2  # opencv讀取的格式是BGR


img = cv2.imread('../img/lena.jpg', cv2.IMREAD_GRAYSCALE)

laplacian = cv2.Laplacian(img,cv2.CV_64F)
laplacian = cv2.convertScaleAbs(laplacian)   

需要配合其他操作共同使用,單個(gè)使用的效果不如上面兩個(gè)算子,結(jié)果圖如下:

到此這篇關(guān)于Python+OpenCV之圖像梯度詳解的文章就介紹到這了,更多相關(guān)OpenCV圖像梯度內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python實(shí)現(xiàn)猜單詞小游戲

    python實(shí)現(xiàn)猜單詞小游戲

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)猜單詞小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • python?中的?super詳解

    python?中的?super詳解

    這篇文章主要介紹了python?中的?super,提到 super,最直接的想法就是它代表了父類(lèi),替父類(lèi)執(zhí)行某些方法,但是理解也僅止步于此,下面對(duì) super 做進(jìn)一步理解,需要的朋友可以參考下
    2022-08-08
  • python3 發(fā)送任意文件郵件的實(shí)例

    python3 發(fā)送任意文件郵件的實(shí)例

    下面小編就為大家分享一篇python3 發(fā)送任意文件郵件的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • python對(duì)RabbitMQ的簡(jiǎn)單入門(mén)使用教程

    python對(duì)RabbitMQ的簡(jiǎn)單入門(mén)使用教程

    RabbitMq是實(shí)現(xiàn)了高級(jí)消息隊(duì)列協(xié)議(AMQP)的開(kāi)源消息代理中間件,下面這篇文章主要給大家介紹了關(guān)于python對(duì)RabbitMQ的簡(jiǎn)單入門(mén)使用,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • Python?任務(wù)自動(dòng)化工具nox?的配置與?API詳情

    Python?任務(wù)自動(dòng)化工具nox?的配置與?API詳情

    這篇文章主要介紹了Python?任務(wù)自動(dòng)化工具nox?的配置與?API詳情,Nox?會(huì)話是通過(guò)被@nox.session裝飾的標(biāo)準(zhǔn)?Python?函數(shù)來(lái)配置的,具體詳情下文相關(guān)介紹需要的小伙伴可以參考一下
    2022-07-07
  • python利用opencv實(shí)現(xiàn)顏色檢測(cè)

    python利用opencv實(shí)現(xiàn)顏色檢測(cè)

    這篇文章主要為大家詳細(xì)介紹了python利用opencv實(shí)現(xiàn)顏色檢測(cè),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-02-02
  • 思考分析Python運(yùn)算中?a+=b?和?a=a+b是否相等

    思考分析Python運(yùn)算中?a+=b?和?a=a+b是否相等

    這篇文章主要為大家介紹了Python運(yùn)算中a+=b和a=a+b是否相等及原理思考分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • pycharm配置Anaconda虛擬環(huán)境全過(guò)程

    pycharm配置Anaconda虛擬環(huán)境全過(guò)程

    這篇文章主要介紹了pycharm配置Anaconda虛擬環(huán)境全過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • python利用正則表達(dá)式排除集合中字符的功能示例

    python利用正則表達(dá)式排除集合中字符的功能示例

    在正則表達(dá)式里,想匹配一些字符中的一個(gè),也就是說(shuō)給出一個(gè)字符的集合,只要出現(xiàn)這個(gè)集合里任意的字符,都是成立的,下面這篇文章主要給大家介紹了關(guān)于python利用正則表達(dá)式排除集合中字符功能的相關(guān)資料,需要的朋友可以參考下。
    2017-10-10
  • Python向Excel中插入圖片的簡(jiǎn)單實(shí)現(xiàn)方法

    Python向Excel中插入圖片的簡(jiǎn)單實(shí)現(xiàn)方法

    這篇文章主要介紹了Python向Excel中插入圖片的簡(jiǎn)單實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了Python使用XlsxWriter模塊操作Excel單元格插入jpg格式圖片的相關(guān)操作技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下
    2018-04-04

最新評(píng)論