OpenCV功能匹配多个图像

他们知道

如何使用FLANN优化许多图片的SIFT功能匹配?

我有一个来自Python OpenCV文档的工作示例。但是,这是将一个图像与另一个图像进行比较,而且速度很慢。我需要它来搜索一系列图像(几千个)中匹配的特征,并且我需要它更快。

我目前的想法:

  1. 浏览所有图像并保存功能。怎么样?
  2. 将相机的图像与上述基础进行比较,然后找到正确的图像。怎么样?
  3. 给我结果,匹配图像或其他东西。

http://docs.opencv.org/trunk/doc/py_tutorials/py_feature2d/py_feature_homography/py_feature_homography.html

import sys#仅用于调试
将numpy导入为np
导入cv2
从matplotlib导入pyplot作为plt

MIN_MATCH_COUNT = 10

img1 = cv2.imread('image.jpg',0)#queryImage
img2 = cv2.imread('target.jpg',0)#trainImage

#启动SIFT检测器
筛选= cv2.SIFT()

#使用SIFT查找关键点和描述符
kp1,des1 = sift.detectAndCompute(img1,None)
kp2,des2 = sift.detectAndCompute(img2,None)

FLANN_INDEX_KDTREE = 0
index_params = dict(算法= FLANN_INDEX_KDTREE,树= 5)
search_params = dict(checks = 50)

flann = cv2.FlannBasedMatcher(index_params,search_params)

匹配= flann.knnMatch(des1,des2,k = 2)

#根据Lowe的比率测试存储所有符合条件的匹配项。
好= []
对于在比赛中的m,n:
    如果m.distance MIN_MATCH_COUNT:
    src_pts = np.float32([k p1 [m.queryIdx] .pt for m in good])。reshape(-1,1,2)
    dst_pts = np.float32([m处于良好状态的[kp2 [m.trainIdx] .pt])。reshape(-1,1,2)

    M,遮罩= cv2.findHomography(src_pts,dst_pts,cv2.RANSAC,5.0)
    matchsMask = mask.ravel()。tolist()

    h,w = img1.shape
    pts = np.float32([[0,0],[0,h-1],[w-1,h-1],[w-1,0]])。reshape(-1,1,2)
    dst = cv2.perspectiveTransform(pts,M)

    img2 = cv2.polylines(img2,[np.int32(dst)],True,255,3,cv2.LINE_AA)

其他:
    打印“找不到足够的匹配项-%d /%d”%(len(good),MIN_MATCH_COUNT)
    matchsMask =无

draw_params = dict(matchColor =(0,255,0),#用绿色绘制匹配项
                   singlePointColor =无,
                   matchesMask = matchesMask,#只画内线
                   标志= 2)

img3 = cv2.drawMatches(img1,kp1,img2,kp2,good,None,** draw_params)

plt.imshow(img3,'灰色'),plt.show()

更新

在尝试了许多事情之后,我现在可能更接近解决方案了。我希望可以建立索引,然后像这样搜索它:

flann_params = dict(算法= 1,树木= 4)
flann = cv2.flann_Index(npArray,flann_params)
idx,dist = flann.knnSearch(queryDes,1,params = {})

但是我仍然没有设法为flann_Index参数建立一个可接受的npArray。

遍历所有图像作为图像:
  npArray.append(sift.detectAndCompute(image,None))
npArray = np.array(npArray)
他们知道

我从来没有在Python中解决过这个问题,但是我将环境切换到了C ++,在那里您可以获得更多的OpenCV示例,而不必使用包装较少的文档。

我在多个文件中存在匹配问题的示例可以在这里找到:https : //github.com/Itseez/opencv/blob/2.4/samples/cpp/matching_to_many_images.cpp

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

与多个图像匹配的功能

来自分类Dev

与多个图像匹配的功能

来自分类Dev

Opencv功能匹配不能正确匹配不同大小的裁剪图像和从各种来源拍摄的图像?

来自分类Dev

OpenCV Java。多个图像并排

来自分类Dev

处理多个图像的图像加载功能

来自分类Dev

具有Android模板匹配功能的OpenCV

来自分类Dev

将轮廓与水平图像匹配-OpenCV

来自分类Dev

用于模板匹配的OpenCV阅读图像

来自分类Dev

OpenCV检测和计算图像功能

来自分类Dev

使用OpenCV重映射功能裁剪图像

来自分类Dev

具有多个条件的VBA匹配功能

来自分类Dev

Excel-多个匹配项的功能

来自分类Dev

使用匹配功能返回多个结果

来自分类Dev

索引/匹配功能中的多个值求和

来自分类Dev

如何使用OpenCV对齐多个相机图像

来自分类Dev

使用OpenCV(Python)拼接多个图像

来自分类Dev

如何在OpenCV中融合多个图像?

来自分类Dev

使用本机功能IOS下载多个图像

来自分类Dev

jQuery-多个图像的onclick缩放功能

来自分类Dev

为什么opencv Templete匹配功能根本不准确

来自分类Dev

与OpenCV中的蒙版匹配的图像提取部分

来自分类Dev

OpenCV FaceRecognition问题-它几乎总是与图像匹配

来自分类Dev

OpenCV 图像匹配 - 表单照片与表单模板

来自分类Dev

根据Opencv中检测到的功能对齐图像

来自分类Dev

在图像OpenCV的特定区域上应用清晰度功能

来自分类Dev

在图像OpenCV的特定区域上应用清晰度功能

来自分类Dev

查找多个单元格和匹配项的功能

来自分类Dev

在具有多个匹配行的R中使用重塑功能

来自分类Dev

在openCV和C ++中以给定的命名方法读取多个图像