OpenCV 霍夫变换

概念

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

import cv2
import numpy as np

img = cv2.imread("shape.png")#读取原图
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray,50,150)

minLineLength = 10
maxLineGap = 30
lines = cv2.HoughLinesP(edge,1,np.pi/180,50,minLineLength,maxLineGap)

#画线
for line in lines:
    x1,y1,x2,y2 = line[0]
    
    cv2.line(img,(x1,y1),(x2,y2),(0,255,0),2)
    
    
cv2.imshow("img",img)
cv2.imshow("edges",edges)
cv2.imshow("gray",gray)
cv2.waitKey(0)
cv2.destroyAllWindows()

题2

import cv2
import numpy as np

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

gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray,50,100)

circles =cv2.HoughCircles(edges,cv2.HOUGH_GRADIENT,1,30,\
                         param1=40,param2=20,minRadius=5,maxRadius=100)

if not circles is None:
    circles = np.uint16(np.around(circles))
    for circle in circles:
        x,y,r = circle[0]
        
        cv2.circle(img,(x,y),r,(0,0,255),2)
        
cv2.imshow("img",img)
cv2.imshow("edges",edges)
cv2.imshow("gray",gray)
cv2.waitKey(0)
cv2.destroyAllWindows()

ti3

在这里插入图片描述

import cv2
import numpy as np

def canny(image):
    blur = cv2.GaussianBlur(image,(5,5),0)
    canny = cv2.Canny(blur,50,150)
    return canny

def region_of_interest(image):
    height = image.shape[0]
    ploygons = np.array([[(200,height),(1100,height),(550,250)]])
    mask = np.zeros_like(image)
    cv2.fillPoly(mask,ploygons,255)
    
    return mask

image = cv2.imread('test_image.jpg',0)
imgcopy = image.copy()
lane_image = np.copy(image)
canny = canny(lane_image)
roi = region_of_interest(canny)
masked_image = cv2.bitwise_and(image,roi)

cv2.imshow("canny",canny)
cv2.imshow("region_of_interest(canny)",roi)
cv2.imshow("masked_image",masked_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值