opencv,SIFT特征提取怎么只要区域识别?

import cv2

img1 = cv2.imread("iphone1.jpg")

img2 = cv2.imread("iphone2.jpg")

sift = cv2.SIFT_create()

kp1, des1 = sift.detectAndCompute(img1, None)

kp2, des2 = sift.detectAndCompute(img2, None)

# 采用暴力匹配

matcher = cv2.BFMatcher()

matches = matcher.knnMatch(des1, des2, k=2) # k=2,表示寻找两个最近邻

good_match = []

for m, n in matches:

if m.distance < 0.5*n.distance: # 如果第一个邻近距离比第二个邻近距离的0.5倍小,则保留

good_match.append(m)

mg3 = cv2.drawMatchesKnn(img1, kp1, img2, kp2, good_match, None, flags=2)

opencv,SIFT特征提取怎么只要区域识别?opencv,SIFT特征提取怎么只要区域识别?

SIFT特征提取怎么只要区域识别?
有些图片太大了,整张图 速度太慢了,
比如 红色框 这个红色框X坐标的 才去识别
或者筛选出红色框里面的


回答:

import cv2

img1 = cv2.imread("iphone1.jpg")

# 定义区域边界

x1, y1, x2, y2 = 100, 100, 500, 500

roi = img1[y1:y2, x1:x2]

sift = cv2.SIFT_create()

kp, des = sift.detectAndCompute(roi, None)

以上是 opencv,SIFT特征提取怎么只要区域识别? 的全部内容, 来源链接: utcz.com/p/938628.html

回到顶部