opencv之霍夫圆检测 角点检测

霍夫圆检测

API接口

circles=cv.HoughCircles(mdian,cv.HOUGH_GRADIENT,1,50,param1=n,param2=30,minRadius=50,maxRadius=120)

 图片  要用什么算法  分辨率  圆和圆的距离  canny边界检测的上界  多少点在圆上才取  半径最小最大值

import  cv2 as cv
import  math
import numpy as np
import  matplotlib.pyplot as plt

path=r"F:\xingtai.jfif"
img=cv.imread(path)
rows,cols=img.shape[:2]
cv.imshow("1",img)
gray=cv.cvtColor(img,cv.COLOR_BGRA2GRAY)
cla=cv.createCLAHE(clipLimit=4.0,tileGridSize=(8,8))
gray1=cla.apply(gray)
n=400
mdian=cv.medianBlur(gray1,5)
canny=cv.Canny(mdian,n/2,n)


circles=cv.HoughCircles(mdian,cv.HOUGH_GRADIENT,1,50,param1=n,param2=30,minRadius=50,maxRadius=120)
for i in circles[0,:]:
    cv.circle(img,(int(i[0]),int(i[1])),int(i[2]),(0,255,0),2)

cv.imshow("1",img)



cv.waitKey(0)



cv.destroyAllWindows()

角点检测1:

import  cv2 as cv
import  math
import numpy as np
import  matplotlib.pyplot as plt

path=r"F:\kaibi.png"
img=cv.imread(path)
rows,cols=img.shape[:2]
cv.imshow("1",img)
gray=cv.cvtColor(img,cv.COLOR_BGRA2GRAY)
gray=np.float32(gray)
dst=cv.cornerHarris(gray,2,3,0.04,)
dst = cv.dilate(dst, None)
img[dst>0.000001*dst.max()]=[0,0,255]
cv.imshow("1",img)


cv.waitKey(0)



cv.destroyAllWindows()

角点测shi-tomas检测

import  cv2 as cv
import  math
import numpy as np
import  matplotlib.pyplot as plt

path=r"F:\kaibi.png"
img=cv.imread(path)
rows,cols=img.shape[:2]
cv.imshow("1",img)
gray=cv.cvtColor(img,cv.COLOR_BGRA2GRAY)
corners=cv.goodFeaturesToTrack(gray,1000,0.01,10)
for i in corners:
    x,y=i.ravel()
    cv.circle(img,(int(x),int(y)),2,(0,0,255),-1)
cv.imshow("1",img)


cv.waitKey(0)



cv.destroyAllWindows()

角点数量最大值,质量,角点之间的距离

SIFT算法检测特征点 (SURF用不了 python版本高了)

import  cv2 as cv
import  math
import numpy as np
import  matplotlib.pyplot as plt

path=r"F:\chenhao.jpg"
img=cv.imread(path)
rows,cols=img.shape[:2]
cv.imshow("1",img)
gray=cv.cvtColor(img,cv.COLOR_BGRA2GRAY)
sift=cv.xfeatures2d.SIFT_create()
kp,des=sift.detectAndCompute(gray,None)
cv.drawKeypoints(img,kp,img,flags=cv.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
cv.imshow("1",img)

cv.waitKey(0)



cv.destroyAllWindows()

ORB算法检测特征点

import  cv2 as cv
import  math
import numpy as np
import  matplotlib.pyplot as plt

path=r"F:\chenhao.jpg"
img=cv.imread(path)
rows,cols=img.shape[:2]
cv.imshow("1",img)
orb=cv.ORB_create(nfeatures=5000)
kp,des=orb.detectAndCompute(img,None)
img2=cv.drawKeypoints(img,kp,None,flags=0)
cv.imshow("1",img2)



cv.waitKey(0)



cv.destroyAllWindows()

 

 fast算法检测特征点

import  cv2 as cv
import  math
import numpy as np
import  matplotlib.pyplot as plt

path=r"F:\chenhao.jpg"
img=cv.imread(path)
rows,cols=img.shape[:2]
cv.imshow("1",img)

fast=cv.FastFeatureDetector_create(threshold=30)

kp=fast.detect(img,None)
img2=cv.drawKeypoints(img,kp,None,color=(255,0,0))

cv.imshow("1",img2)


cv.waitKey(0)



cv.destroyAllWindows()

 阈值是和周围灰度值的差值阈值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
霍夫圆检测是一种用于检测图像中圆形的算法。在OpenCV中,霍夫圆检测是基于图像梯度的实现。具体原理如下: 1. 首先,对图像进行中值滤波,以减少噪声的影响\[1\]。 2. 接下来,通过检测边缘来发现可能的圆心。这一步使用图像梯度的方法来计算边缘\[1\]。 3. 在第一步的基础上,从候选圆心开始计算最佳半径大小。这一步使用霍夫变换的方法来确定圆的半径\[1\]。 在OpenCV中,可以使用cv::HoughCircles函数来实现霍夫圆检测。该函数的参数包括输入图像、输出结果、方法、尺度因子、最短距离、Canny边缘检测的低阈值、中心点累加器阈值、最小半径和最大半径\[3\]。 总结来说,霍夫圆检测通过对图像进行中值滤波和边缘检测,然后使用霍夫变换来确定圆的位置和半径。这种方法可以有效地检测图像中的圆形物体。 #### 引用[.reference_title] - *1* [OpenCvSharp 学习笔记21-- 霍夫变换 - 圆检测 (Hough Circle transform)](https://blog.csdn.net/weixin_41049188/article/details/92422241)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [OpenCV 霍夫圆检测](https://blog.csdn.net/qq_44989881/article/details/116135750)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [OpenCV20---霍夫圆检测](https://blog.csdn.net/qq_45646174/article/details/105086711)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值