python opencv 霍夫变换

python opencv 霍夫变换
© Fu Xianjun. All Rights Reserved.

文章目录

  1. 霍夫变换是什么
  2. 步骤
  3. 入库
  4. 读入数据
  5. 效果图展示

 

 

霍夫变换是什么

霍夫变换:霍夫变换是一种特征检测(feature extraction),被广泛应用在图像分析(image analysis)、计算机视觉(computer vision)以及数位影像处理(digital image processing)。霍夫变换是用来辨别找出物件中的特征,例如:线条。他的算法流程大致如下,给定一个物件、要辨别的形状的种类,算法会在参数空间(parameter space)中执行投票来决定物体的形状,而这是由累加空间(accumulator space)里的局部最大值(local maximum)来决定。

二,步骤

1.引入库模版

import cv2
import numpy as np

1.2 读取模版图片

template = cv2.imread(要读取的图片)
cv_show("template",template)

1.3读取检测图片

img = cv2.imread("检测的图片")
cv_show("img",img)

1.4获取模版的大小

# 获取到我们模版的大小h,w
h, w = template.shape[:2]

1.5进行匹配

python opencv 霍夫变换_第1张图片

2.1读入数据

 

import cv2

import numpy as np

 

img = cv2.imread("shape.png")#读取原图

gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

edge = cv2.Canny(gray,50,150)

 

lines = cv2.HoughLines(edge,1,np.pi/180,50)

#画线

for line in lines:

    rho,theta = line[0]

    a = np.cos(theta)

    b = np.sin(theta)

    x0 = rho * a

    y0 = rho * b

    x1 = int(x0 + 1000 * (-b))

    y1 = int(y0 + 1000 * a)

    x2 = int(x0 - 1000 * (-b))

    y2 = int(y0 - 1000 * a)

   

    cv2.line(img,(x1,y1),(x2,y2),(0,255,0),2)

cv2.imshow("img",img)

cv2.imshow("gray",gray)

cv2.imshow("edges",edges)

cv2.waitKey(0)

cv2.destroyAllWindows()
————————————————

 

效果图展示

 

python opencv 霍夫变换_第2张图片

 

2.2霍夫变换,基本方法

python opencv 霍夫变换_第3张图片

python opencv 霍夫变换_第4张图片

 

 

你可能感兴趣的:(opencv,图像识别)