python - 如何找到数据集的基本矩阵?
问题描述
我想比较 openCV 中用于计算基本矩阵的不同算法。我已经使用下面的代码来找到对应图像对的基本矩阵。有没有办法在不使用 for 循环的情况下对数据集做同样的事情?
import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt
img1 = cv.imread('myleft.jpg',0) #queryimage # left image
img2 = cv.imread('myright.jpg',0) #trainimage # right image
sift = cv.SIFT_create()
# find the keypoints and descriptors with SIFT
kp1, des1 = sift.detectAndCompute(img1,None)
kp2, des2 = sift.detectAndCompute(img2,None)
# FLANN parameters
FLANN_INDEX_KDTREE = 1
index_params = dict(algorithm = FLANN_INDEX_KDTREE, trees = 5)
search_params = dict(checks=50)
flann = cv.FlannBasedMatcher(index_params,search_params)
matches = flann.knnMatch(des1,des2,k=2)
pts1 = []
pts2 = []
# ratio test as per Lowe's paper
for i,(m,n) in enumerate(matches):
if m.distance < 0.8*n.distance:
pts2.append(kp2[m.trainIdx].pt)
pts1.append(kp1[m.queryIdx].pt)
pts1 = np.int32(pts1)
pts2 = np.int32(pts2)
F, mask = cv.findFundamentalMat(pts1,pts2,cv.FM_LMEDS)
# We select only inlier points
pts1 = pts1[mask.ravel()==1]
pts2 = pts2[mask.ravel()==1]
解决方案
推荐阅读
- mysql - MySQL - 月份选择命令
- python - Windows上的python多处理
- apache-spark - 在 spark shell 中获取 spark 驱动程序内存的命令是什么
- javascript - 由于 javascript 范围而分配变量时出错
- javascript - d3 raise() 不适用于特定选择
- android-studio - 如何修复会话应用程序:android studio 3.2.1 中的“启动活动时出错”
- wordpress - 将永久链接从 postid 更改为没有 404 的 postname
- javascript - 如何为图表的每个点添加带有值的标签?
- function - Postgresql - 将表传递给多对多插入函数
- java - 安卓工作室?一个键按下了多长时间?