python opencv.怎么合并两张大小不一的图_OpenCV,Python:如何缝合两个不同大小和透明......

我一直致力于一个项目,在那里我用无人机在割草机模式中飞行的图像拼接在一起.我能够将单个图像中的图像拼接在一起(感谢stackoverflow上的许多答案)但是当我尝试将两个单独的传递拼接在一起时,我的方法产生的变换是荒谬的.这是我想要缝合的两个图像:

这里是我用来估计两者之间的单应性的代码,base和curr.

base_gray = cv2.cvtColor(base, cv2.COLOR_BGRA2GRAY)

curr_gray = cv2.cvtColor(curr, cv2.COLOR_BGRA2GRAY)

detector = cv2.ORB_create()

base_keys, base_desc = detector.detectAndCompute(base_gray, None)

curr_keys, curr_desc = detector.detectAndCompute(curr_gray, None)

FLANN_INDEX_LSH = 6

flann_params = dict(algorithm = FLANN_INDEX_LSH,

table_number = 12,

key_size = 20,

multi_probe_level = 2)

search_params = dict(checks=100)

matcher = cv2.FlannBasedMatcher(flann_params, search_params)

matches = matcher.match(base_desc, curr_desc)

max_dist = 0.0

min_dist = 100.0

for match in matches:

dist = match.distance

min_dist = dist if dist < min_dist else min_dist

max_dist = dist if dist > max_dist else max_dist

good_matches = [match for match in matches if match.distance <= 10 * min_dist ]

base_matches = []

curr_matches = []

for match in good_matches:

base_matches.append(base_keys[match.queryIdx].pt)

curr_matches.append(curr_keys[match.trainIdx].pt)

bm_final = np.asarray(base_matches)

cm_final = np.asarray(curr_matches)

# find perspective transformation using the arrays of corresponding points

transformation, hom_stati = cv2.findHomography(cm_final, bm_final, method=cv2.RANSAC, ransacReprojThreshold=1)

正如我所说,它不起作用.是因为透明背景搞乱计算?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值