You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jupyter Lab中拼接无人机图像?求对应代码/脚本

无人机图像拼接Jupyter Lab可运行脚本

首先确保Jupyter Lab环境中安装了所需依赖,在代码单元格中运行:

!pip install opencv-python numpy matplotlib

以下是完整的拼接脚本,直接在Jupyter Lab代码单元格中运行即可:

import cv2
import numpy as np
import matplotlib.pyplot as plt

# 1. 定义待拼接的无人机图像路径列表
# 替换为你自己的图像路径,按拍摄顺序排列更佳
image_paths = [
    "drone_img_1.jpg",
    "drone_img_2.jpg",
    "drone_img_3.jpg",
    # 可继续添加更多图像路径
]

# 2. 加载所有图像
images = []
for path in image_paths:
    img = cv2.imread(path)
    if img is not None:
        # OpenCV默认读入BGR格式,转为RGB方便matplotlib显示
        img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
        images.append(img_rgb)
    else:
        print(f"警告:无法加载图像 {path}")

# 3. 初始化OpenCV拼接器
# 针对航拍图像,使用SCANS模式(专门处理扫描/航拍类全景图)
stitcher = cv2.Stitcher_create(cv2.Stitcher_SCANS)

# 4. 执行拼接
status, stitched_img = stitcher.stitch(images)

# 5. 处理拼接结果
if status == cv2.Stitcher_OK:
    # 显示拼接后的全景图
    plt.figure(figsize=(15, 10))
    plt.imshow(stitched_img)
    plt.axis('off')
    plt.title('拼接完成的无人机全景图')
    plt.show()

    # 保存拼接结果(可选)
    # 转回BGR格式保存,符合常规图像文件格式
    stitched_img_bgr = cv2.cvtColor(stitched_img, cv2.COLOR_RGB2BGR)
    cv2.imwrite("stitched_panorama.jpg", stitched_img_bgr)
    print("全景图已保存为 stitched_panorama.jpg")
else:
    error_messages = {
        cv2.Stitcher_ERR_NEED_MORE_IMGS: "需要更多重叠的图像",
        cv2.Stitcher_ERR_HOMOGRAPHY_EST_FAIL: "图像匹配失败,可能重叠度不足",
        cv2.Stitcher_ERR_CAMERA_PARAMS_ADJUST_FAIL: "相机参数调整失败"
    }
    print(f"拼接失败,错误码:{status},原因:{error_messages.get(status, '未知错误')}")

关键注意事项

  • 图像顺序:尽量按无人机飞行时的拍摄顺序排列图像,有助于提升拼接成功率
  • 重叠度:确保相邻图像有至少20%-30%的重叠区域,这是拼接成功的前提
  • 图像尺寸:如果图像过大导致内存不足,可以先对图像进行缩放处理(比如用cv2.resize())
  • 光照一致性:尽量保证拍摄时光照变化小,避免拼接后出现明显的明暗断层

内容的提问来源于stack exchange,提问作者Edy Trihatmoko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 04:25:19