十六、霍夫圓形檢測

一、獲取圓形檢測原理

原圖如下:在這里插入圖片描述
選取一個圓的任意點設定為圓形進行繪制圓形,交與一點在這里插入圖片描述
再將平面直角坐標系上的各點,通過公式在這里插入圖片描述轉到極坐標上在這里插入圖片描述

很明顯的看出較亮的點為圓心,然后通過半徑進行繪制出圓。

二、實現步驟

由于霍夫圓檢測對噪聲比較明顯,故需要首先對圖像進行濾波操作(中值濾波等)
霍夫圓形檢測是基于圖像梯度實現的,分為兩步:
1,檢測邊緣,發現可能是圓的圓形
2,基于第一步從候選的圓心中開始計算,求出最佳的半徑大小

三、代碼實現

cv2.HoughCircles(cimage,cv2.HOUGH_GRADIENT,1,20,param1=50,param2=30,minRadius=0,maxRadius=0)
cv2.HOUGH_GRADIENT:基于梯度計算
1:步長
20:最小距離即檢測出來的兩個圓形之間的最小距離,超過這個最小距離才會認定是兩個圓
param1=50,param2=30:高低閾值的設定
minRadius=0,maxRadius=0:當不確定圓的半徑時,可以這樣設定

import cv2
import numpy as np
from matplotlib import pyplot as pltdef detect_circles(image):dst = cv2.pyrMeanShiftFiltering(image,10,100)#消除噪聲!!!!必不可少cimage = cv2.cvtColor(dst,cv2.COLOR_BGR2GRAY)circles = cv2.HoughCircles(cimage,cv2.HOUGH_GRADIENT,1,20,param1=50,param2=30,minRadius=0,maxRadius=0)circles = np.uint16(np.around(circles))for i in circles[0,:]:cv2.circle(image,(i[0],i[1]),i[2],(0,0,255),2)cv2.circle(image,(i[0],i[1]),2,(255,0,0),2)#圓心cv2.imshow("circles",image)src = cv2.imread(r"G:\Juptyer_workspace\study\opencv\opencv3\circles.jpg")
cv2.imshow("image",src)
cv2.namedWindow("image",cv2.WINDOW_AUTOSIZE)
detect_circles(src)
cv2.waitKey(0)
cv2.destroyAllWindows()

效果圖如下:
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/377985.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/377985.shtml
英文地址,請注明出處:http://en.pswp.cn/news/377985.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

商務智能與交易系統的區別

商務智能與交易系統的區別 1、系統設計的區別 商務智能與交易系統之間的差異主要體現在系統設計和數據類型上(見表 1.1 和表1.2)。交易系統把結構強加于商務之上,不管誰來進行一項交易活動, 都會遵循同樣的程序和規則,…

LeetCode 572. 另一個樹的子樹 思考分析

題目 給定兩個非空二叉樹 s 和 t,檢驗 s 中是否包含和 t 具有相同結構和節點值的子樹。s 的一個子樹包括 s 的一個節點和這個節點的所有子孫。s 也可以看做它自身的一棵子樹。 示例 1: 給定的樹 s: 示例 2: 給定的樹 s: 思路 思路:首先層序遍歷s樹…

2013.8.7Java語言基礎——數組

數組是數據類型一致的變量的集合。 一個:變量 一堆(多個):數組 數組語法: 1)數組變量(引用類型變量) 數組變量通過引用地址引用了數組(數組對象) 2&#xff0…

ruby array_Ruby中帶有示例的Array.select方法

ruby arrayArray.select方法 (Array.select Method) In the last articles, we have seen how to iterate over the instances of Array class? We have seen that we have got methods like Array.each, Array.reverse_each and Array.map for this purpose. In this article…

十七、輪廓發現

一、輪廓發現原理 輪廓發現是在圖像邊緣提取的基礎上尋找對象輪廓的方法,故邊緣提取的閾值的選定會影響到最終輪廓發現的結果。 其本質是基于二值圖像的,邊緣提取常用Canny進行提取邊緣 輪廓發現也是基于拓撲結構,掃描連通圖,最后…

關于 WebRequest.RegisterPrefix

RegisterPrefix 方法將 WebRequest 子代注冊到服務請求。 WebRequest 后代通常被注冊來處理特定的協議(例如 HTTP 或 FTP),但也可能被注冊來處理對特定服務器或服務器上的路徑的請求。 已注冊的預注冊保留類型包括下列類型: htt…

LeetCode 404. 左葉子之和思考分析

題目 計算給定二叉樹的所有左葉子之和。 如果是下面的樹,只有一個左葉子結點4 思考分析 由此我們可以得到左葉子結點的定義: cur->left !NULL && cur->left->leftNULL && cur->left->rightNULL 遞歸遍歷累積操作 …

天王蓋地虎

1&#xff0c;求有序數列中某個元素的個數 思想&#xff1a;二分找上下界&#xff1a; int element_count(int * set, int len, int e) {int f, a, b, t;for(a 0, b len - 1; a < b; set[t a b >> 1] < e ? (a t 1) : (b t - 1));for(f a, b len - 1; a…

ruby array_Ruby中帶有示例的Array.cycle()方法

ruby arrayArray.cycle()方法 (Array.cycle() Method) In this article, we will study about Array.cycle() method. You must be a little more excited to read about Array.cycle method due to its catchy name as I was pretty amazed after reading this method. In the…

十八、對已經找到輪廓的圖像進行測量

圖像輪廓的獲取可參考博文十七 一、相關原理 1&#xff0c;弧長和面積 對于弧長和面積&#xff0c;計算出來的輪廓單位都是像素 2&#xff0c;多邊形擬合 每一個輪廓都是一系列的點&#xff0c;然后通過多邊形進行擬合&#xff0c;無限的接近真實形狀 相關API&#xff1a;…

Linux 終端登錄SSH:解決SSH的Access Denied 和 make xconfig的使用

對于SSH&#xff1a; 可以不是用putty&#xff0c;尤其是putty出現 Access denied 的時候&#xff0c;請換用konsole 或者其他終端 &#xff08;如 terminal&#xff09;在command line中&#xff1a; # ssh 要訪問的主機ip eg &#xff1a; ssh 192.168.111 然后確定…

LeetCode 513. 找樹左下角的值 思考分析

題目 給定一個二叉樹&#xff0c;在樹的最后一行找到最左邊的值。 遞歸解 左下角要滿足兩個條件&#xff1a; 1、深度最大的葉子結點 2、最左結點&#xff1a;使用前序遍歷&#xff0c;優先左邊搜索。 1、確定遞歸函數的參數和返回值 參數&#xff1a;樹的根結點&#xff…

利用MyBatis的動態SQL特性抽象統一SQL查詢接口

1. SQL查詢的統一抽象 MyBatis制動動態SQL的構造,利用動態SQL和自定義的參數Bean抽象,可以將絕大部分SQL查詢抽象為一個統一接口,查詢參數使用一個自定義bean繼承Map,使用映射的方法構造多查詢參數.在遇到多屬性參數(例如order by,其參數包括列名,升序降序類型,以及可以多個列及…

ctype函數_PHP Ctype(字符類型)函數

ctype函數Ctype功能 (Ctype functions) PHP provides some of the built-in functions, which are used to verify the characters in the string i.e. to check whether a string contains the characters of specific types. PHP提供了一些內置函數&#xff0c;這些函數用于驗…

Linux 平臺下 MySQL 5.5 安裝 說明 與 示例

一.下載說明前期的一些準備說明&#xff0c;參考&#xff1a;MySQL 發展史http://blog.csdn.net/tianlesoftware/article/details/6999245Mysql 不同版本 說明http://blog.csdn.net/tianlesoftware/article/details/6723117 MySQL 分為Community Server 和 Enterprise Edition。…

開始python之旅

接觸python緣于工作所需&#xff0c;曾經接觸過C、C等語言&#xff0c;對于編程語言在學習上大體是一個套路&#xff0c;當然套路因人而異&#xff0c;適合就好。接下來&#xff0c;我將不斷分享python的知識和學習技巧&#xff0c;共同學習。 起源 初識一門語言善于先了解語言…

LeetCode 112. 路徑總和 、113. 路徑總和 II 思考分析

目錄112. 路徑總和題目遞歸解遞歸解&#xff0c;其他人的解法迭代解&#xff0c;其他人的解法113. 路徑總和 II題目遞歸解遞歸解&#xff0c;參考別人的思路112. 路徑總和 題目 給定一個二叉樹和一個目標和&#xff0c;判斷該樹中是否存在根節點到葉子節點的路徑&#xff0c;…

kotlin 查找id_Kotlin程序查找矩陣的轉置

kotlin 查找idA transpose of a matrix is simply a flipped version of the original matrix. We can transpose a matrix by switching its rows with its columns 矩陣的轉置只是原始矩陣的翻轉形式。 我們可以通過切換矩陣的行和列來轉置矩陣 Given a matrix, we have to…

[mongodb翻譯]分片和故障轉移

一個配置恰當的mongodb 分片集群不會有單點失效。 本章節描述了集群服務器中可能出現的故障&#xff0c;及相應的對策。 1. 某個mongos路由進程故障 每一個mongos會運行每一臺應用服務器上面&#xff0c;該應用服務器只能通過這個mongos進程和集群進行通信。mongos進程不是…

看張子陽的書真是收獲很多,也醒悟了很多(一)

摘錄&#xff1a; 這是有一次開會時&#xff0c;我的老總跟我們說了這樣一個事例&#xff1a;通常來說&#xff0c;醫生是很高尚的職業&#xff08;暫不考慮國內醫生的負面新聞&#xff09;&#xff0c;尤其是牙科醫生&#xff0c; 他們有著體面的工作并且收入不菲。但是&#…