2022-04-03 特征点和Hough变换形状检测(实验)

本文通过实验介绍了如何使用OpenCV进行特征点检测,如Harris和SIFT,以及Hough变换进行形状检测,包括直线和圆形。实验分析了Harris和SIFT在图像旋转变化下的效果,指出SIFT在效率和稳定性上的优势。还讨论了Canny边缘检测和霍夫变换的原理,以及OpenCV全景图的拼接方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

人工智能应用——特征点和Hough变换形状检测

一、实验目的
  1. 掌握图像特征点提取
  2. 掌握图像的边缘提取
  3. 掌握Hough形状检测
二、实验内容与记录
  1. 使用OpenCV对图像进行Harris,SIFT特征点提取,并标注特征点。
  • Harris:
    在这里插入图片描述
  • SIFT:
    在这里插入图片描述
    代码:
import cv2
import numpy as np
import imutils 
img = cv2.imread("\small_fish.jpg",1)

# Harris特征点提取
origin = img.copy()
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 转换成灰度图
dst = cv2.cornerHarris(gray, blockSize=2, ksize=3, k=0.04)
dst = cv2.dilate(dst, None)
img[dst > 0.01 * dst.max()] = [0, 0, 255]

cv2.imshow('origin', origin)
cv2.imshow('Harris', img)
cv2.waitKey(0)

# SIFT特征检测
sift = cv2.xfeatures2d.SIFT_create()  # 得到特征点
kp = sift.detect(gray, None)
cv2.drawKeypoints(gray, kp, img)

cv2.imshow('origin', origin)
cv2.imshow('SIFT', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
  1. 使用OpenCV对图像Canny边缘检测,显示并保存。
    在这里插入图片描述
    代码:
import cv2
o = cv2.imread("\small_fish.jpg",cv2.IMREAD_GRAYSCALE)
r = cv2.Canny(o,32,128)

cv2.imshow("original",o)
cv2.imshow("result",r)
cv2.waitKey()
cv2.destroyAllWindows()

cv2.imwrite("\small_fish_1.jpg", r, [cv2.IMWRITE_PNG_COMPRESSION, 0])
  1. 使用OpenCV对house.tif进行霍夫直线检测,对硬币图片进行霍夫圆形检测。
  • 霍夫直线检测:
    在这里插入图片描述
    代码:
import cv2
img = cv2.imread("\house.jpg")
house = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(house, 50, 200)
lines = cv2.HoughLines(edges, 1, np.pi/180, 260) 
print(np
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值