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

OpenCV半小時掌握基本操作之圓圈檢測

 更新時間:2021年09月01日 14:59:20   作者:我是小白呀  
這篇文章主要介紹了OpenCV基本操作之圓圈檢測,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

【OpenCV】⚠️高手勿入! 半小時學(xué)會基本操作 ⚠️ 圓圈檢測

概述

OpenCV 是一個跨平臺的計算機(jī)視覺庫, 支持多語言, 功能強(qiáng)大. 今天小白就帶大家一起攜手走進(jìn) OpenCV 的世界.

在這里插入圖片描述

霍夫圓變換

霍夫圓變換 (Hough Circle Transform) 的原理和霍夫直線變換類似. 對于一條直線, 我們可以用參數(shù) (r, θ) 表示, 對于圓我們需要三個參數(shù) (x, y, r), 分別代表三個參數(shù) x 圓心, y 圓心, r, 半徑.

在這里插入圖片描述

代碼實現(xiàn)

因為霍夫圓檢測對噪聲比較敏感, 所以首先要對圖像做中值濾波.

在這里插入圖片描述

基于效率考慮, Opencv 中實現(xiàn)的霍夫變換圓檢測是基于圖像梯度實現(xiàn), 分為兩步:

檢測變換, 發(fā)現(xiàn)可能的圓心基于第一步的基礎(chǔ)上從候選圓心開始計算最佳半徑大小

格式:

cv2.HoughCircles(image, method, dp, minDist, circles=None, param1=None, param2=None, minRadius=None, maxRadius=None)

參數(shù):

image: 輸入圖像

method: 判別方法, 只有 HOUGH_GRADIENT (計算梯度) 一個方法

dp: 累計閾值

minDist: 間距, 小于間距判斷成一個圓

param1: Canny 邊緣檢測的最大閾值

param2: 在檢測階段圓心累加器閾值, 是否為圓形

例一

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

# 讀取圖片
image = cv2.imread("map.jpg")
image_copy = image.copy()

# 均值遷移濾波
filter = cv2.pyrMeanShiftFiltering(image, 10, 100)

# 轉(zhuǎn)換成灰度圖
filter_gray = cv2.cvtColor(filter, cv2.COLOR_BGR2GRAY)

# 霍夫曼圓圈檢測
circles = cv2.HoughCircles(filter_gray, cv2.HOUGH_GRADIENT, 1, 20, param1=50, param2=100, minRadius=0, maxRadius=0)
circles = np.uint16(np.around(circles))

# 遍歷
for circle in circles[0, :]:
    cv2.circle(image_copy, (circle[0], circle[1]), circle[2], (0, 0, 255), 2)
    cv2.circle(image_copy, (circle[0], circle[1]), 2, (255, 0, 0), 2)

# 圖片展示
f, ax = plt.subplots(2, 2, figsize=(12, 12))

# 子圖
ax[0, 0].imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
ax[0, 1].imshow(cv2.cvtColor(filter, cv2.COLOR_BGR2RGB))
ax[1, 0].imshow(filter_gray, "gray")
ax[1, 1].imshow(cv2.cvtColor(image_copy, cv2.COLOR_BGR2RGB))

# 標(biāo)題
ax[0, 0].set_title("original")
ax[0, 1].set_title("image filter")
ax[1, 0].set_title("image gray")
ax[1, 1].set_title("image circle")

plt.show()

# 保存結(jié)果
cv2.imwrite("map_result.jpg", image_copy)

輸出結(jié)果:

在這里插入圖片描述

在這里插入圖片描述

例二

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

# 讀取圖片
image = cv2.imread("coin.jpg")
image_copy = image.copy()

# 均值遷移濾波
filter = cv2.pyrMeanShiftFiltering(image, 10, 40)

# 轉(zhuǎn)換成灰度圖
filter_gray = cv2.cvtColor(filter, cv2.COLOR_BGR2GRAY)

# 霍夫曼圓圈檢測
circles = cv2.HoughCircles(filter_gray, cv2.HOUGH_GRADIENT, 1, 20, param1=50, param2=100, minRadius=0, maxRadius=0)
circles = np.uint16(np.around(circles))

# 遍歷
for circle in circles[0, :]:
    cv2.circle(image_copy, (circle[0], circle[1]), circle[2], (0, 0, 255), 2)
    cv2.circle(image_copy, (circle[0], circle[1]), 2, (255, 0, 0), 2)

# 圖片展示
f, ax = plt.subplots(2, 2, figsize=(12, 12))

# 子圖
ax[0, 0].imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
ax[0, 1].imshow(cv2.cvtColor(filter, cv2.COLOR_BGR2RGB))
ax[1, 0].imshow(filter_gray, "gray")
ax[1, 1].imshow(cv2.cvtColor(image_copy, cv2.COLOR_BGR2RGB))

# 標(biāo)題
ax[0, 0].set_title("original")
ax[0, 1].set_title("image filter")
ax[1, 0].set_title("image gray")
ax[1, 1].set_title("image circle")

plt.show()

# 保存結(jié)果
cv2.imwrite("coin_result.jpg", image_copy)

輸出結(jié)果:

在這里插入圖片描述

在這里插入圖片描述

到此這篇關(guān)于OpenCV半小時掌握基本操作之圓圈檢測的文章就介紹到這了,更多相關(guān)OpenCV圓圈檢測內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中xmltodict對xml的操作方式

    Python中xmltodict對xml的操作方式

    這篇文章主要介紹了Python中xmltodict對xml的操作方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 如何將python中的List轉(zhuǎn)化成dictionary

    如何將python中的List轉(zhuǎn)化成dictionary

    這篇文章主要介紹在python中如何將list轉(zhuǎn)化成dictionary,通過提出兩個問題來告訴大家如何解決,有需要的可以參考借鑒。
    2016-08-08
  • LyScript實現(xiàn)Hook隱藏調(diào)試器的方法詳解

    LyScript實現(xiàn)Hook隱藏調(diào)試器的方法詳解

    LyScript?插件集成的內(nèi)置API函數(shù)可靈活的實現(xiàn)繞過各類反調(diào)試保護(hù)機(jī)制。本文將運(yùn)用LyScript實現(xiàn)繞過大多數(shù)通用調(diào)試機(jī)制,實現(xiàn)隱藏調(diào)試器的目的,需要的可以參考一下
    2022-09-09
  • Python如何使用type()函數(shù)查看數(shù)據(jù)的類型

    Python如何使用type()函數(shù)查看數(shù)據(jù)的類型

    這篇文章主要介紹了Python如何使用type()函數(shù)查看數(shù)據(jù)的類型,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Python必知必會之os模塊實例詳解

    Python必知必會之os模塊實例詳解

    os模塊是Python標(biāo)準(zhǔn)庫中整理文件和目錄最為常用的模塊,該模塊提供了非常豐富的方法用來處理文件和目錄,下面這篇文章主要給大家介紹了關(guān)于Python必知必會之os模塊的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • python代碼 FTP備份交換機(jī)配置腳本實例解析

    python代碼 FTP備份交換機(jī)配置腳本實例解析

    這篇文章主要介紹了python代碼 FTP備份交換機(jī)配置腳本實例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • pytorch無法使用GPU問題的解決方法

    pytorch無法使用GPU問題的解決方法

    這篇文章主要介紹了如何解決pytorch 無法使用GPU 的問題,文中通過代碼和圖文給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-02-02
  • Python打開文件、文件讀寫操作、with方式、文件常用函數(shù)實例分析

    Python打開文件、文件讀寫操作、with方式、文件常用函數(shù)實例分析

    這篇文章主要介紹了Python打開文件、文件讀寫操作、with方式、文件常用函數(shù),結(jié)合實例形式分析了Python文件的打開、讀寫及常用文件操作函數(shù)使用技巧,需要的朋友可以參考下
    2020-01-01
  • 通過Python讀取照片的Exif信息解鎖圖片背后的故事

    通過Python讀取照片的Exif信息解鎖圖片背后的故事

    這篇文章主要為大家介紹了通過Python讀取照片的Exif信息解鎖圖片背后的故事探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • 簡單講解Python中的字符串與字符串的輸入輸出

    簡單講解Python中的字符串與字符串的輸入輸出

    這篇文章主要介紹了Python中的字符串與字符串的輸入輸出,Python3.x版本中默認(rèn)以Unicode為編碼,省去了不少麻煩,需要的朋友可以參考下
    2016-03-03

最新評論