当前位置: 首页 > news >正文

python将两张图片对齐

目录

需要对齐的照片如下:

源码:

结果:


需要对齐的照片如下:

源码:
import cv2
import numpy as np
from matplotlib import pyplot as plt# 读取两张图片
imgA = cv2.imread('./out/out/3.png')
imgB = cv2.imread('./out/out/4.jpg')# 创建SIFT对象
sift = cv2.SIFT_create()# 在两张图片中检测特征点和计算描述子
kp1, des1 = sift.detectAndCompute(imgA, None)
kp2, des2 = sift.detectAndCompute(imgB, None)# 创建FLANN匹配器
FLANN_INDEX_KDTREE = 1
index_params = dict(algorithm=FLANN_INDEX_KDTREE, trees=5)
search_params = dict(checks=50)
flann = cv2.FlannBasedMatcher(index_params, search_params)# 使用k近邻算法进行特征匹配
matches = flann.knnMatch(des1, des2, k=2)# 根据Lowe's ratio test选择最佳匹配
good_matches = []
for m, n in matches:if m.distance < 0.7 * n.distance:good_matches.append(m)# 获取匹配的特征点的坐标
src_pts = np.float32([kp1[m.queryIdx].pt for m in good_matches]).reshape(-1, 1, 2)
dst_pts = np.float32([kp2[m.trainIdx].pt for m in good_matches]).reshape(-1, 1, 2)# 计算透视变换矩阵
M, mask = cv2.findHomography(src_pts, dst_pts, cv2.RANSAC, 5.0)# 应用透视变换将imgA对齐到imgB
aligned_img = cv2.warpPerspective(imgA, M, (imgB.shape[1], imgB.shape[0]))
cv2.imwrite('aligned_img.jpg', aligned_img)plt.figure(figsize=(12, 6))
plt.subplot(1, 2, 1), plt.imshow(cv2.cvtColor(aligned_img, cv2.COLOR_BGR2RGB)), plt.title('Image A with Detected Changes')
plt.subplot(1, 2, 2), plt.imshow(cv2.cvtColor(imgB, cv2.COLOR_BGR2RGB)), plt.title('Original Image B')
plt.show()
结果:

http://www.lryc.cn/news/349638.html

相关文章:

  • Linux修炼之路之初识操作系统+基础指令(1)
  • Flink中基于Chandy-Lamport算法的分布式快照实现详解
  • 软件3班20240513
  • 【小程序】怎么优化小程序的性能
  • 告别信用卡绑定烦恼:探索这个全功能的Azure语音替代品,包含AI视频制作!(微软Azure语音替代方案)
  • 酷开科技依托酷开系统“硬件+内容”产业布局,抢占全球机遇!
  • 从离线到实时:无锡锡商银行基于 Apache Doris 的数据仓库演进实践
  • 网易云如何改ip地址到另外城市
  • Golang 开发实战day13 - Reciver Functions
  • ZL-016D多通道小鼠主动跑轮系统主要研究动物生活节律
  • 基于 LlaMA 3 + LangGraph 在windows本地部署大模型 (九)
  • 计算机类的英语
  • 深⼊理解指针(5)
  • baomidou dynamic-datasource 强制查询sql走主库
  • FPGA ov5640视频以太网传输
  • 论Java和C++方向选择
  • 交通灯-设计说明书
  • [前端] vue2的/deep/转化为vue3语法(笔记)
  • JavaScript基础(七)
  • 【DevOps】Linux 内核网络子系统全面指南与性能调优
  • mybatis-plus-ui代码生成器
  • 项目进度总结
  • CheckStyle静态样式之道
  • 2024中国振威化工装备展
  • Docker操作之启动多个相同容器实例并nginx负载均衡
  • 本地的git仓库和远程仓库
  • Google I/O 2024 干货全解读:Gemini AI 横空出世,智能未来触手可及!
  • 深入理解JVM:介绍JVM的工作原理,包括类加载机制,内存模型,垃圾回收机制等
  • Springboot+Vue项目-基于Java+MySQL的民族婚纱预定系统(附源码+演示视频+LW)
  • Java面经学习2