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

Python?opencv進(jìn)行圓形識(shí)別(圓檢測(cè))實(shí)例代碼

 更新時(shí)間:2023年05月12日 11:06:02   作者:老李的森林  
最近工作的項(xiàng)目上需要檢測(cè)圖像中是否有圓形,下面這篇文章主要給大家介紹了關(guān)于Python?opencv進(jìn)行圓形識(shí)別(圓檢測(cè))的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

圓形識(shí)別(圓檢測(cè))是圖像識(shí)別中很常見的一種處理方式,最核心的是cv2.HoughCircles這個(gè)函數(shù)實(shí)現(xiàn)的圓形檢測(cè)。當(dāng)然還有一些其他的處理過程,以下詳述:

1 讀入圖像

首先需要讀取一個(gè)圖像文件,將其作為一個(gè)變量

img = cv2.imread("save1.jpg", 0)     # 0或者cv2.IMREAD_GRAYSCALE  讀取為灰度圖像
img2 = cv2.imread("save1.jpg", 1)     # 1或者cv2.IMREAD_COLOR 讀取為為彩色圖像

img是一個(gè)ndarray,2維結(jié)構(gòu),包含的是灰度化后的圖像信息

img2是一個(gè)ndarray,3維結(jié)構(gòu),包含的是RGB彩色圖像信息,比img2多出一個(gè)色彩維度

如下圖,img2是3個(gè)方括號(hào)“[”

2 圖像預(yù)處理

可以對(duì)圖像進(jìn)行裁切,濾波等處理,當(dāng)然不處理也可以直接用,以下展示一下:

裁切

size = 400
x1 = 560
y1 = 200
x2 = x1+size
y2 = y1+size
cut = img[y1:y2, x1:x2]

濾波加二值化

numpy_img = cv2.adaptiveThreshold(cut, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 15)   # 自動(dòng)閾值二值化

顯示中間處理過程

有時(shí)候我們需要直觀的看到中間處理過程的圖像樣貌,可以隨時(shí)顯示

cv2.imshow("img", img)
cv2.imshow("cut", cut)
cv2.imshow("numpy_img", numpy_img)
cv2.waitKey(0)

注意imshow函數(shù),第一個(gè)參數(shù)是要顯示的窗口的標(biāo)題,不得用中文和中文標(biāo)點(diǎn),必須全英文,否則會(huì)亂碼,第2個(gè)參數(shù)是待顯示的圖像變量
最后一行可以沒有,如果有的話,程序會(huì)在此等待,直到有按鍵動(dòng)作,程序才繼續(xù)往后運(yùn)行。這對(duì)我們調(diào)試比較有用。

3 圓形識(shí)別

#                                                      圓心距 canny閾值    投票數(shù)      最小半徑       最大半徑
circles = cv2.HoughCircles(img, cv2.HOUGH_GRADIENT, 1, 170,   param1=100, param2=60,  minRadius=60, maxRadius=90)

大概講一下重要的幾個(gè)參數(shù),參數(shù)與實(shí)際的圖像尺寸相關(guān),不是一個(gè)參數(shù)用所有的圖

圓心距:170 圓心距小于此值的圓不檢測(cè),以減小計(jì)算量

canny閾值:圖像二值化的參數(shù),根據(jù)實(shí)際情況調(diào)整

投票數(shù):一個(gè)圓需要至少包含多少個(gè)點(diǎn),才認(rèn)為這是一個(gè)圓

最小半徑,最大半徑:在此值之間的圓才是需要的圓,超過范圍不檢測(cè),以減小計(jì)算量

檢測(cè)完的結(jié)果保存在circles 中

可以自己調(diào)整參數(shù)以觀察結(jié)果

4 顯示檢測(cè)結(jié)果

沒啥好說的,代碼很簡(jiǎn)單,就是對(duì)于每個(gè)結(jié)果畫出圓和圓心

arr1 = np.zeros([0, 2], dtype=int)                      # 創(chuàng)建一個(gè)0行, 2列的空數(shù)組
if circles is not None:
    circles = np.uint16(np.around(circles))   # 4舍5入, 然后轉(zhuǎn)為uint16
    for i in circles[0, :]:
        arr1 = np.append(arr1, (i[0], i[1]))            # arr1是圓心坐標(biāo)的np數(shù)組
        # print(arr1)
        cv2.circle(img2, (i[0], i[1]), i[2], (0, 0, 255), 3)  # 輪廓
        cv2.circle(img2, (i[0], i[1]), 2, (0, 0, 0), 6)     # 圓心

5 完整代碼和示例圖像

可以在這里下載:示例代碼下載

總結(jié)

到此這篇關(guān)于Python opencv進(jìn)行圓形識(shí)別(圓檢測(cè))的文章就介紹到這了,更多相關(guān)opencv圓形識(shí)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • matplotlib部件之套索Lasso的使用

    matplotlib部件之套索Lasso的使用

    這篇文章主要介紹了matplotlib部件之套索Lasso的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • Python使用Scrapy爬蟲框架全站爬取圖片并保存本地的實(shí)現(xiàn)代碼

    Python使用Scrapy爬蟲框架全站爬取圖片并保存本地的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Python使用Scrapy爬蟲框架全站爬取圖片并保存本地的實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2018-03-03
  • Python同時(shí)向控制臺(tái)和文件輸出日志logging的方法

    Python同時(shí)向控制臺(tái)和文件輸出日志logging的方法

    這篇文章主要介紹了Python同時(shí)向控制臺(tái)和文件輸出日志logging的方法,涉及Python日志模塊的相關(guān)使用技巧,需要的朋友可以參考下
    2015-05-05
  • python 在sql語句中使用%s,%d,%f說明

    python 在sql語句中使用%s,%d,%f說明

    這篇文章主要介紹了python 在sql語句中使用%s,%d,%f說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python基礎(chǔ)之高級(jí)變量類型實(shí)例詳解

    Python基礎(chǔ)之高級(jí)變量類型實(shí)例詳解

    這篇文章主要介紹了Python基礎(chǔ)之高級(jí)變量類型,結(jié)合實(shí)例形式詳細(xì)分析了Python元組、字典、字符串、公共方法以及遍歷、切片等常見操作技巧,需要的朋友可以參考下
    2020-01-01
  • Ubuntu安裝Jupyter Notebook教程

    Ubuntu安裝Jupyter Notebook教程

    這篇文章主要為大家詳細(xì)介紹了Ubuntu安裝Jupyter Notebook教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • Python中kivy庫的使用教程詳解

    Python中kivy庫的使用教程詳解

    Kivy是一個(gè)開源Python框架,用于構(gòu)建具有創(chuàng)意和多點(diǎn)觸控功能的用戶界面(UI)應(yīng)用程序,本文主要為大家介紹了一下Kivy的具體使用,需要的可以參考下
    2024-01-01
  • python數(shù)據(jù)歸一化及三種方法詳解

    python數(shù)據(jù)歸一化及三種方法詳解

    這篇文章主要介紹了python數(shù)據(jù)歸一化及三種方法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意事項(xiàng)

    Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意事項(xiàng)

    這篇文章主要介紹了Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意事項(xiàng),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-11-11
  • selenium中常見的表單元素操作方法總結(jié)

    selenium中常見的表單元素操作方法總結(jié)

    Selenium可以驅(qū)動(dòng)瀏覽器來執(zhí)行一些操作,也就是說可以讓瀏覽器模擬執(zhí)行一些動(dòng)作,下面這篇文章主要給大家介紹了關(guān)于selenium中常見的表單元素操作方法,需要的朋友可以參考下
    2022-02-02

最新評(píng)論