首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >图像拼接Python

图像拼接Python
EN

Stack Overflow用户
提问于 2013-12-30 02:18:34
回答 2查看 13.3K关注 0票数 1

我必须使用python和openCV将两个或多个图像缝合在一起。我找到了用于查找关键点和匹配的代码,但我不知道如何继续。请帮帮我!

代码语言:javascript
复制
import numpy as np
import cv2

MIN_MATCH_COUNT = 10

img1 = cv2.imread('a.jpg',0)          # queryImage
img2 = cv2.imread('b.jpg',0) # trainImage

# Initiate SIFT detector
sift = cv2.SIFT()

# find the keypoints and descriptors with SIFT
kp1, des1 = sift.detectAndCompute(img1,None)
kp2, des2 = sift.detectAndCompute(img2,None)

FLANN_INDEX_KDTREE = 0
index_params = dict(algorithm = FLANN_INDEX_KDTREE, trees = 5)
search_params = dict(checks = 50)

flann = cv2.FlannBasedMatcher(index_params, search_params)

matches = flann.knnMatch(des1,des2,k=2)

# store all the good matches as per Lowe's ratio test.
good = []
for m,n in matches:
    if m.distance < 0.7*n.distance:
        good.append(m)
EN

回答 2

Stack Overflow用户

发布于 2014-06-27 19:21:25

你的问题不是很清楚,但我假设你的意思是你有一堆图像,你想让opencv找到相应的地标,然后扭曲/缩放每一张图片,这样它们就可以形成一个大图像。

this github code中记录了一种不使用stitcher类的方法,基本上是循环遍历图片并在每次迭代中确定最佳拟合的图片

票数 0
EN

Stack Overflow用户

发布于 2018-03-02 20:48:01

图像拼接的一种方法由以下步骤组成。

首先,正如你已经知道的,你需要一个特征点检测器和一些方法来找到两个图像上特征点之间的对应关系。通常情况下,消除大量的对应关系是个好主意,因为它们可能包含大量噪声。消除大量噪声的一个非常简单的方法是在比赛中寻找对称性。

到目前为止,这大致就是您的代码所做的事情。

接下来,要将图像缝合在一起,您需要扭曲其中一个图像以匹配另一个图像的透视。这是通过使用对应关系估计单应性来完成的。由于您的通信可能仍然包含大量噪声,我们通常使用RANSAC来稳健地估计单应性。

快速的google搜索提供了许多正在实现的示例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20828512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档