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

如何将多幅同尺寸图像中的Blob合并至同尺寸最终图像

解决方案

工具选择

OpenCV是更合适的选择:

  • 你已基于OpenCV编写了初始代码,延续使用无需额外学习成本
  • OpenCV的矩阵操作与图像处理API,能高效完成Blob提取、多图像像素融合这类任务
  • 针对批量图像的阈值分割与像素级操作,OpenCV的性能优于Pillow

实现步骤

  1. 基于输入图像尺寸创建白色空白背景图
  2. 遍历所有输入图像,依次完成灰度化、二值化(提取黑色Blob区域)
  3. 将每幅图像中的Blob区域,按原位置叠加到空白背景图上
  4. 保存最终融合图像

完整可运行代码

import cv2
import numpy as np

# 输入图像路径列表(支持任意数量图像)
image_paths = ["im1.jpg", "im2.jpg"]

# 获取输入图像尺寸,初始化白色背景图
sample_img = cv2.imread(image_paths[0], cv2.IMREAD_GRAYSCALE)
height, width = sample_img.shape
final_image = np.full((height, width), 255, dtype=np.uint8)

for img_path in image_paths:
    # 灰度化处理
    gray = cv2.imread(img_path, cv2.IMREAD_GRAYSCALE)
    # 二值化:自动阈值分割,Blob为黑色(0),背景为白色(255)
    _, binary = cv2.threshold(gray, 128, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)
    # 叠加Blob到最终图像:将对应位置设为黑色
    final_image[binary == 0] = 0

# 保存结果
cv2.imwrite("merged_blobs.png", final_image)

代码细节说明

  • 空白图初始化:用np.full生成全白图像,确保与输入图像尺寸完全一致
  • 二值化优化:使用THRESH_BINARY_INV反转阈值结果,让原图像中的黑色Blob直接对应像素值0,简化后续叠加逻辑
  • 批量兼容:通过列表管理图像路径,新增图像只需添加路径到列表即可
  • 重叠处理:若Blob位置重叠,后续图像的Blob会覆盖之前的(符合需求中“重叠无需处理”的要求)

示例效果

输入图像

  • 图像1:im1.jpg
  • 图像2:im2.jpg

最终输出

期望输出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 13:10:29