最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何基于OpenCV&Python實現(xiàn)霍夫變換圓形檢測

 更新時間:2021年08月26日 11:05:04   作者:ahaofan  
最近開始學(xué)習(xí)opencv,想檢測圖片上的圓環(huán),發(fā)現(xiàn)霍夫變換可以做這樣的效果出來,于是嘗試用霍夫變換做了下圓環(huán)檢測,這篇文章主要給大家介紹了基于OpenCV&Python實現(xiàn)霍夫變換圓形檢測的相關(guān)資料,需要的朋友可以參考下

簡述

基于python使用opencv實現(xiàn)在一張圖片中檢測出圓形,并且根據(jù)坐標(biāo)和半徑標(biāo)記出圓。不涉及理論,只講應(yīng)用。

霍夫變換檢測圓形的原理

其實檢測圓形和檢測直線的原理差別不大,只不過直線是在二維空間,因為y=kx+b,只有k和b兩個自由度。而圓形的一般性方程表示為(x-a)²+(y-b)²=r²。那么就有三個自由度圓心坐標(biāo)a,b,和半徑r。這就意味著需要更多的計算量,而OpenCV中提供的cvHoughCircle()函數(shù)里面可以設(shè)定半徑r的取值范圍,相當(dāng)于有一個先驗設(shè)定,在每一個r來說,在二維空間內(nèi)尋找a和b就可以了,能夠減少計算量。

相關(guān)函數(shù)

函數(shù)說明:

Python: cv2.HoughCircles(image, method, dp, minDist[, circles[, param1[, param2[, minRadius[, maxRadius]]]]]) → circles

參數(shù)說明:

  • image- 8位,單通道,灰度輸入圖像。
  • circles- 找到的圓的輸出向量。每個向量被編碼為3元素的浮點向量 (x,y,半徑)。
  • circle_storage - 在C函數(shù)中,這是一個將包含找到的圓的輸出序列的內(nèi)存存儲。
  • method- 使用檢測方法。目前,唯一實現(xiàn)的方法是 CV_HOUGH_GRADIENT,基本上是 21HT,在[Yuen90]中有描述 。
  • dp - 累加器分辨率與圖像分辨率的反比。例如,如果 dp = 1,則累加器具有與輸入圖像相同的分辨率。如果 dp = 2,則累加器的寬度和高度都是一半。
  • minDist -檢測到的圓的中心之間的最小距離。如果參數(shù)太小,除了真正的參數(shù)外,可能會錯誤地檢測到多個鄰居圈。如果太大,可能會錯過一些圈子。
  • param1 - 第一個方法特定的參數(shù)。在CV_HOUGH_GRADIENT的情況下, 兩個傳遞給Canny()邊緣檢測器的閾值較高(較小的兩個小于兩倍)。
  • param2 - 第二種方法參數(shù)。在CV_HOUGH_GRADIENT的情況下,它是檢測階段的圓心的累加器閾值。越小,可能會檢測到越多的虛假圈子。首先返回對應(yīng)于較大累加器值的圈子。
  • minRadius -最小圓半徑。
  • maxRadius - 最大圓半徑。

這是根據(jù)opencv官方文檔谷歌翻譯過來的,參數(shù)比較多,但用的時候只修改一些主要的,傳入的圖像和最大最小圓半徑,以達(dá)到檢測出想要的圓的效果。

還有要注意函數(shù)的返回值

找到的圓的輸出向量。每個向量被編碼為3元素的浮點向量 (x,y,半徑)。

這句話不是很好理解,我們直接輸出返回值就會發(fā)現(xiàn)是個 三層嵌套list,最內(nèi)層list有三個元素,分別是圓心的行,列,半徑,這表示一個圓的基本信息。多個圓基本信息組成了一個新的list,這個list包含了檢測到的所有圓,即長度就是檢測到圓的個數(shù)。最外層再加了個list,至于干啥的不清楚了,不影響使用就好。

下圖是輸出函數(shù)返回值的一個實例圖

實例演示

完整代碼

import  cv2

#載入并顯示圖片
img=cv2.imread('circle.png')
cv2.imshow('img',img)
#灰度化
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#輸出圖像大小,方便根據(jù)圖像大小調(diào)節(jié)minRadius和maxRadius
print(img.shape)
#霍夫變換圓檢測
circles= cv2.HoughCircles(gray,cv2.HOUGH_GRADIENT,1,100,param1=100,param2=30,minRadius=5,maxRadius=300)
#輸出返回值,方便查看類型
print(circles)
#輸出檢測到圓的個數(shù)
print(len(circles[0]))

print('-------------我是條分割線-----------------')
#根據(jù)檢測到圓的信息,畫出每一個圓
for circle in circles[0]:
    #圓的基本信息
    print(circle[2])
    #坐標(biāo)行列
    x=int(circle[0])
    y=int(circle[1])
    #半徑
    r=int(circle[2])
    #在原圖用指定顏色標(biāo)記出圓的位置
    img=cv2.circle(img,(x,y),r,(0,0,255),-1)
#顯示新圖像
cv2.imshow('res',img)

#按任意鍵退出
cv2.waitKey(0)
cv2.destroyAllWindows()

運行結(jié)果

shell輸出截圖

總結(jié)

到此這篇關(guān)于基于OpenCV&Python實現(xiàn)霍夫變換圓形檢測的文章就介紹到這了,更多相關(guān)OpenCV霍夫變換圓形檢測內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python基于YOLOv8和OpenCV實現(xiàn)車道線和車輛檢測功能

    Python基于YOLOv8和OpenCV實現(xiàn)車道線和車輛檢測功能

    使用YOLOv8(You Only Look Once)和OpenCV實現(xiàn)車道線和車輛檢測,目標(biāo)是創(chuàng)建一個可以檢測道路上的車道并識別車輛的系統(tǒng),并估計它們與攝像頭的距離,這篇文章主要介紹了Python基于YOLOv8和OpenCV實現(xiàn)車道線和車輛檢測,需要的朋友可以參考下
    2025-01-01
  • Python中列表list常用方法總結(jié)

    Python中列表list常用方法總結(jié)

    在?Python?中,列表(List)是一種有序的數(shù)據(jù)集合,可以存儲任意類型的數(shù)據(jù)。本文主要幫大家總結(jié)了一下列表list的常用方法,需要的可以參考一下
    2023-05-05
  • python3 requests 各種發(fā)送方式詳解

    python3 requests 各種發(fā)送方式詳解

    這篇文章主要介紹了python3 requests 各種發(fā)送方式,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • 將python flask項目打包成可以運行的軟件的全過程(包含報錯解決)

    將python flask項目打包成可以運行的軟件的全過程(包含報錯解決)

    這篇文章主要給大家介紹了將python flask項目打包成可以用運行的軟件(包含報錯解決),文中通過代碼示例和圖文結(jié)合講解的非常詳細(xì),具有一定的參考價值,需要的朋友可以參考下
    2024-02-02
  • python一行代碼合并了162個Word文件

    python一行代碼合并了162個Word文件

    這篇文章主要為大家介紹了python一行代碼合并了162個Word文件示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • Python標(biāo)準(zhǔn)庫os庫的常用功能解析

    Python標(biāo)準(zhǔn)庫os庫的常用功能解析

    這篇文章主要介紹了Python標(biāo)準(zhǔn)庫os庫的常用功能解析,os庫是Python標(biāo)準(zhǔn)庫之一,它提供了非常豐富的文件及目錄讀寫的方法
    2022-07-07
  • Python將字典轉(zhuǎn)換為XML的方法

    Python將字典轉(zhuǎn)換為XML的方法

    這篇文章主要介紹了Python將字典轉(zhuǎn)換為XML的方法,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-08-08
  • python FastApi實現(xiàn)數(shù)據(jù)表遷移流程詳解

    python FastApi實現(xiàn)數(shù)據(jù)表遷移流程詳解

    今天我們來聊一聊在FastApi里面,數(shù)據(jù)遷移工作,F(xiàn)astAPI是一個現(xiàn)代的,快速(高性能)python web框架。本文將利用fastapi實現(xiàn)數(shù)據(jù)表遷移功能,文中的示例代碼講解詳細(xì),需要的可以參考一下
    2022-08-08
  • 解決flask接口返回的內(nèi)容中文亂碼的問題

    解決flask接口返回的內(nèi)容中文亂碼的問題

    這篇文章主要介紹了解決flask接口返回的內(nèi)容中文亂碼的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python項目管理工具Poetry使用示例詳解

    Python項目管理工具Poetry使用示例詳解

    這篇文章主要為大家介紹了Python項目管理工具Poetry使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09

最新評論

堆龙德庆县| 岳普湖县| 文登市| 宜章县| 新安县| 洪湖市| 大同县| 景谷| 娄底市| 宣威市| 金沙县| 兴文县| 凌云县| 锡林浩特市| 南郑县| 胶南市| 永康市| 体育| 阿鲁科尔沁旗| 遂川县| 阿瓦提县| 台山市| 丰镇市| 通海县| 东宁县| 保康县| 瑞丽市| 四平市| 临朐县| 仪陇县| 涿州市| 铅山县| 海口市| 施秉县| 盐池县| 项城市| 武冈市| 桦川县| 溧水县| 抚松县| 平湖市|