选择图片的区域部分进行特征提取

本文介绍了SIFT(尺度不变特征变换)算法,包括其独特的特性和在图像处理中的应用,如角点检测、特征提取与匹配。通过Python代码展示了如何使用OpenCV进行SIFT操作并可视化结果。
摘要由CSDN通过智能技术生成

1、SIFT

SIFT所查找的关键点都是一些十分突出,不会因光照,仿射变换和噪声等因素而变换的特征点,如角点、边缘点、暗区的亮点以及亮区的暗点等。

2、 SIFT的特性

独特性(Distinctiveness)信息量丰富,适用于在海量特征数据库中进行快速、准确的匹配;
多量性,即使少数的几个物体也可以产生大量的SIFT特征向量;
高速性,经优化的SIFT匹配算法甚至可以达到实时的要求;
可扩展性,可以很方便的与其他形式的特征向量进行联合。

3、SIFT的应用

import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt
from pretreatment import Carry

# 导入资源
image = cv.imread(r"E:/data/1.jpg")
img1 = cv.resize(image, (400, 250))
#cv2.selectROI() 可以通过鼠标选择感兴趣的矩形区域(ROI)
roi = cv.selectROI(img1, showCrosshair=True, fromCenter=False)
# 矩形裁剪区域 (ymin:ymin+h, xmin:xmin+w) 的位置参数
xmin, ymin, w, h = roi
# 切片获得裁剪后保留的图像区域
imgROI = img1[ymin:ymin + h, xmin:xmin + w].copy()

image_copy = np.copy(imgROI)
image_copy = cv.cvtColor(image_copy, cv.COLOR_BGR2RGB)
gray = cv.cvtColor(image_copy, cv.COLOR_RGB2GRAY)
carry = Carry(gray)
# SIFT角点检测
sift = cv.xfeatures2d.SIFT_create()
# 找到关键点和描述符
keypoints, des = sift.detectAndCompute(carry, None)

# 把特征点标记到图片上
corner_image = np.copy(gray)
for point in keypoints:
    cv.circle(corner_image, (int(point.pt[0]), int(point.pt[1])), 1, (0,0,255), 1)

plt.subplot(131),plt.imshow(imgROI,'autumn'),plt.title('imgROI')
plt.subplot(132),plt.imshow(carry,'autumn'),plt.title('cary')
plt.subplot(133),plt.imshow(corner_image,'autumn'),plt.title('corner_image')
plt.show()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值