人工智能应用——特征点和Hough变换形状检测
一、实验目的
- 掌握图像特征点提取
- 掌握图像的边缘提取
- 掌握Hough形状检测
二、实验内容与记录
- 使用OpenCV对图像进行Harris,SIFT特征点提取,并标注特征点。
- Harris:

- SIFT:

代码:
import cv2
import numpy as np
import imutils
img = cv2.imread("\small_fish.jpg",1)
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 = 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()
- 使用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])
- 使用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