图像特征提取 python

1. 边缘检测 (Edge Detection)

1.1 Sobel 算子

Sobel 算子是一种边缘检测算子,通过计算图像梯度来检测边缘。

python 复制代码
import cv2
import numpy as np

# 读取图像
image = cv2.imread('image.jpg', 0)

# 应用 Sobel 算子
sobel_x = cv2.Sobel(image, cv2.CV_64F, 1, 0, ksize=5)
sobel_y = cv2.Sobel(image, cv2.CV_64F, 0, 1, ksize=5)
sobel = cv2.magnitude(sobel_x, sobel_y)

# 显示结果
cv2.imshow('Sobel Edge Detection', sobel)
cv2.waitKey(0)
cv2.destroyAllWindows()
1.2 Canny 边缘检测

Canny 边缘检测是一种多级边缘检测算法,效果更好。

python 复制代码
# 应用 Canny 边缘检测
canny_edges = cv2.Canny(image, 100, 200)

# 显示结果
cv2.imshow('Canny Edge Detection', canny_edges)
cv2.waitKey(0)
cv2.destroyAllWindows()

2. 角点检测 (Corner Detection)

2.1 Harris 角点检测

Harris 角点检测是一种经典的角点检测方法。

python 复制代码
# 读取图像
image = cv2.imread('image.jpg')
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# Harris 角点检测
gray_image = np.float32(gray_image)
dst = cv2.cornerHarris(gray_image, 2, 3, 0.04)
image[dst > 0.01 * dst.max()] = [0, 0, 255]

# 显示结果
cv2.imshow('Harris Corners', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
2.2 Shi-Tomasi 角点检测

Shi-Tomasi 角点检测是对 Harris 算法的改进。

python 复制代码
# Shi-Tomasi 角点检测
corners = cv2.goodFeaturesToTrack(gray_image, 100, 0.01, 10)
corners = np.int0(corners)

for corner in corners:
    x, y = corner.ravel()
    cv2.circle(image, (x, y), 3, 255, -1)

# 显示结果
cv2.imshow('Shi-Tomasi Corners', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

3. 尺度不变特征变换 (SIFT)

SIFT 是一种用于检测和描述局部特征的算法。

python 复制代码
# 初始化 SIFT
sift = cv2.SIFT_create()

# 检测关键点并计算描述子
keypoints, descriptors = sift.detectAndCompute(image, None)

# 在图像中绘制关键点
sift_image = cv2.drawKeypoints(image, keypoints, None)

# 显示结果
cv2.imshow('SIFT Keypoints', sift_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

4. 加速稳健特征 (SURF)

SURF 是 SIFT 的加速版本,速度更快。

python 复制代码
# 初始化 SURF
surf = cv2.xfeatures2d.SURF_create()

# 检测关键点并计算描述子
keypoints, descriptors = surf.detectAndCompute(image, None)

# 在图像中绘制关键点
surf_image = cv2.drawKeypoints(image, keypoints, None)

# 显示结果
cv2.imshow('SURF Keypoints', surf_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

5. ORB (Oriented FAST and Rotated BRIEF)

ORB 是一种快速且高效的特征检测和描述算法。

python 复制代码
# 初始化 ORB
orb = cv2.ORB_create()

# 检测关键点并计算描述子
keypoints, descriptors = orb.detectAndCompute(image, None)

# 在图像中绘制关键点
orb_image = cv2.drawKeypoints(image, keypoints, None)

# 显示结果
cv2.imshow('ORB Keypoints', orb_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
相关推荐
weigangwin2 小时前
采用 mem0 之前,先决定 Agent 到底允许记住什么
人工智能·opencv·ai·llm·memory·ai agent·mem0
hhzz2 小时前
Python大数据实战(十六):音乐推荐系统——基于协同过滤算法构建个性化歌单引擎
大数据·人工智能·python·数据挖掘·数据分析
SunnyDays10112 小时前
Python PDF 转 Markdown 详解(转换整个文档,特定页面,表格,扫描 PDF)
python·pdf 转 markdown·pdf 转 md·扫描 pdf 转 md·pdf 表格转 md
2601_954706493 小时前
云手机 API 自动化实战:Python 批量控机、挂机脚本完整实现
python·智能手机·自动化
Alan_6916 小时前
聊聊 Swagger/Postman/Apifox 的真实选型与 Python 项目实战
python·测试工具·postman
搞科研的小刘选手6 小时前
【香港大学主办&IEEE出版】第六届计算机视觉、应用与算法国际学术会议(CVAA 2026)
算法·计算机视觉·应用·学术会议
智慧物业老杨7 小时前
物业绿化数智化权责管控方案:基于工单平台的双层权限追溯模块落地实践
python
Metaphor6928 小时前
使用 Python 在 Word 文档中添加批注
python·word
断眉的派大星8 小时前
YOLO实例分割详细解析
人工智能·yolo·计算机视觉
FreakStudio8 小时前
WIZnet 开源方案分享:W55MH32 开发板 + 小智 AI实现以太网版本的小智机器人
python·单片机·嵌入式·大学生·面向对象·并行计算·电子diy·电子计算机