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

Python如何使用cv2.canny進(jìn)行圖像邊緣檢測

 更新時(shí)間:2023年01月28日 15:18:55   作者:風(fēng)華明遠(yuǎn)  
這篇文章主要介紹了Python如何使用cv2.canny進(jìn)行圖像邊緣檢測問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

使用cv2.canny進(jìn)行圖像邊緣檢測

CV2提供了提取圖像邊緣的函數(shù)canny。

其算法思想如下:

  • 1.使用高斯模糊,去除噪音點(diǎn)(cv2.GaussianBlur)
  • 2.灰度轉(zhuǎn)換(cv2.cvtColor)
  • 3.使用sobel算子,計(jì)算出每個(gè)點(diǎn)的梯度大小和梯度方向
  • 4.使用非極大值抑制(只有最大的保留),消除邊緣檢測帶來的雜散效應(yīng)
  • 5.應(yīng)用雙閾值,來確定真實(shí)和潛在的邊緣
  • 6.通過抑制弱邊緣來完成最終的邊緣檢測

Canny函數(shù)的定義如下:

edge = cv2.Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2gradient ]]]) 

參數(shù)含義如下:

  • image:要檢測的圖像
  • threshold1:閾值1(最小值)
  • threshold2:閾值2(最大值),使用此參數(shù)進(jìn)行明顯的邊緣檢測
  • edges:圖像邊緣信息
  • apertureSize:sobel算子(卷積核)大小
  • L2gradient :布爾值。
  • True:使用更精確的L2范數(shù)進(jìn)行計(jì)算(即兩個(gè)方向的導(dǎo)數(shù)的平方和再開方)
  • False:使用L1范數(shù)(直接將兩個(gè)方向?qū)?shù)的絕對值相加)

L2gradie=True使用的公式

其中較大的閾值2用于檢測圖像中明顯的邊緣,但一般情況下檢測的效果不會(huì)那么完美,邊緣檢測出來是斷斷續(xù)續(xù)的。所以這時(shí)候用較小的第一個(gè)閾值用于將這些間斷的邊緣連接起來。

閾值對檢測結(jié)果的影響

import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread('d:\\girl.png')
edges = cv2.Canny(img,100,200,apertureSize=3)
edges2 = cv2.Canny(img,100,200,apertureSize=5)
plt.subplot(131),plt.imshow(img,cmap = 'gray')
plt.title('Original Image'), plt.xticks([]), plt.yticks([])
plt.subplot(132),plt.imshow(edges,cmap = 'gray')
plt.title('Edge Image1'), plt.xticks([]), plt.yticks([])
plt.subplot(133),plt.imshow(edges2,cmap = 'gray')
plt.title('Edge Image2'), plt.xticks([]), plt.yticks([])
plt.show()

可以看到,在調(diào)整threshold1之后,檢測出的邊緣增多了。

sobel算子對檢測結(jié)果的影響

sobel默認(rèn)的算子大小是3,擴(kuò)大算子,會(huì)獲得更多的細(xì)節(jié),但是也更能提取圖像了。

import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread('d:\\girl.png')
edges = cv2.Canny(img,100,200,apertureSize=3)
edges2 = cv2.Canny(img,100,200,apertureSize=5)
plt.subplot(131),plt.imshow(img,cmap = 'gray')
plt.title('Original Image'), plt.xticks([]), plt.yticks([])
plt.subplot(132),plt.imshow(edges,cmap = 'gray')
plt.title('Edge Image1'), plt.xticks([]), plt.yticks([])
plt.subplot(133),plt.imshow(edges2,cmap = 'gray')
plt.title('Edge Image2'), plt.xticks([]), plt.yticks([])
plt.show()

范數(shù)對檢測結(jié)果的影響

L2gradient=True時(shí),檢測出的邊緣減少了。

import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread('d:\\girl.png')
edges = cv2.Canny(img,100,200,L2gradient=False)
edges2 = cv2.Canny(img,100,200,L2gradient=True)
plt.subplot(131),plt.imshow(img,cmap = 'gray')
plt.title('Original Image'), plt.xticks([]), plt.yticks([])
plt.subplot(132),plt.imshow(edges,cmap = 'gray')
plt.title('Edge Image1'), plt.xticks([]), plt.yticks([])
plt.subplot(133),plt.imshow(edges2,cmap = 'gray')
plt.title('Edge Image2'), plt.xticks([]), plt.yticks([])
plt.show()

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 解決python圖像處理圖像賦值后變?yōu)榘咨膯栴}

    解決python圖像處理圖像賦值后變?yōu)榘咨膯栴}

    這篇文章主要介紹了解決python圖像處理圖像賦值后變?yōu)榘咨膯栴},具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python的Flask框架標(biāo)配模板引擎Jinja2的使用教程

    Python的Flask框架標(biāo)配模板引擎Jinja2的使用教程

    Jinja2是Python世界的一款高人氣template engine,是許多開源Web框架的選擇,包括Flask這樣的明星級項(xiàng)目,這里我們就來共同學(xué)習(xí)Python的Flask框架標(biāo)配模板引擎Jinja2的使用教程
    2016-07-07
  • Python編程基礎(chǔ)之運(yùn)算符重載詳解

    Python編程基礎(chǔ)之運(yùn)算符重載詳解

    這篇文章主要為大家詳細(xì)介紹了Python運(yùn)算符重載,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • pycharm不能運(yùn)行.py文件的解決方法

    pycharm不能運(yùn)行.py文件的解決方法

    今天小編就為大家分享一篇pycharm不能運(yùn)行.py文件的解決方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Python Django 添加首頁尾頁上一頁下一頁代碼實(shí)例

    Python Django 添加首頁尾頁上一頁下一頁代碼實(shí)例

    這篇文章主要介紹了Python Django 添加首頁尾頁上一頁下一頁代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • 對pandas進(jìn)行數(shù)據(jù)預(yù)處理的實(shí)例講解

    對pandas進(jìn)行數(shù)據(jù)預(yù)處理的實(shí)例講解

    下面小編就為大家分享一篇對pandas進(jìn)行數(shù)據(jù)預(yù)處理的實(shí)例講解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python爬蟲入門案例之爬取二手房源數(shù)據(jù)

    Python爬蟲入門案例之爬取二手房源數(shù)據(jù)

    讀萬卷書不如行萬里路,學(xué)的扎不扎實(shí)要通過實(shí)戰(zhàn)才能看出來,今天小編給大家?guī)硪环輕ython爬取二手房源信息的案例,可以用來直觀的了解房價(jià)行情,大家可以在過程中查缺補(bǔ)漏,看看自己掌握程度怎么樣
    2021-10-10
  • python實(shí)現(xiàn)歸并排序算法

    python實(shí)現(xiàn)歸并排序算法

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)歸并排序算法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • 在Python中使用K-Means聚類和PCA主成分分析進(jìn)行圖像壓縮

    在Python中使用K-Means聚類和PCA主成分分析進(jìn)行圖像壓縮

    這篇文章主要介紹了在Python中使用K-Means聚類和PCA主成分分析進(jìn)行圖像壓縮,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • python中__init__方法知識(shí)點(diǎn)詳解

    python中__init__方法知識(shí)點(diǎn)詳解

    Python中常會(huì)看到在很多類中都有一個(gè)__init__函數(shù),該函數(shù)有什么作用,又該如何使用呢,下面這篇文章主要給大家介紹了關(guān)于python中__init__知識(shí)點(diǎn)的相關(guān)資料,需要的朋友可以參考下
    2023-04-04

最新評論