2、合并两张图像

目录

CV实现

PIL实现


使用一个函数实现两张图像合并,通过参数指定合并方式(水平或垂直或加权)。

CV实现

复制代码
import cv2
import numpy as np

def merge_images_cv(image_path1, image_path2, method='horizontal', alpha=0.5):
    # 读取图像
    img1 = cv2.imread(image_path1)
    img2 = cv2.imread(image_path2)

    # 确保 alpha 在 0 和 1 之间
    alpha = max(0, min(alpha, 1))

    if method == 'horizontal':
        # 调整 img2 到 img1 的高度
        img2 = cv2.resize(img2, (img2.shape[1], img1.shape[0]))
        # 水平合并
        merged_img = np.hstack((img1, img2))
        # merged_img = np.concatenate((image1, image2), axis=1)
    elif method == 'vertical':
        # 调整 img2 到 img1 的宽度
        img2 = cv2.resize(img2, (img1.shape[1], img2.shape[0]))
        # 垂直合并
        merged_img = np.vstack((img1, img2))
        # merged_img = np.concatenate((image1, image2), axis=0)
    elif method == 'weighted':
        # 加权合并,确保两张图像大小相同
        img2 = cv2.resize(img2, (img1.shape[1], img1.shape[0]))
        # 加权合并
        merged_img = cv2.addWeighted(img1, alpha, img2, 1 - alpha, 0)
    else:
        raise ValueError("Method must be 'horizontal', 'vertical', or 'weighted'")

    return merged_img

# 使用示例
merged_image = merge_images_cv('path_to_first_image.jpg', 'path_to_second_image.jpg', method='horizontal')
cv2.imwrite('merged_image.jpg', merged_image)

PIL实现

复制代码
from PIL import Image

def merge_images_pil(image_path1, image_path2, method='horizontal', alpha=0.5):
    # 打开图像
    img1 = Image.open(image_path1)
    img2 = Image.open(image_path2)

    # 确保 alpha 在 0 和 1 之间
    alpha = max(0, min(alpha, 1))

    if method == 'horizontal':
        # 调整 img2 到 img1 的高度
        img2 = img2.resize((img2.width, img1.height))
        # 水平合并
        merged_img = Image.new('RGB', (img1.width + img2.width, img1.height))
        merged_img.paste(img1, (0, 0))
        merged_img.paste(img2, (img1.width, 0))
    elif method == 'vertical':
        # 调整 img2 到 img1 的宽度
        img2 = img2.resize((img1.width, img2.height))
        # 垂直合并
        merged_img = Image.new('RGB', (img1.width, img1.height + img2.height))
        merged_img.paste(img1, (0, 0))
        merged_img.paste(img2, (0, img1.height))
    elif method == 'weighted':
        # 加权合并,确保两张图像大小相同
        img2 = img2.resize((img1.width, img1.height))
        # 加权合并
        merged_img = Image.blend(img1, img2, alpha)
    else:
        raise ValueError("Method must be 'horizontal', 'vertical', or 'weighted'")

    return merged_img

# 使用示例
merged_image = merge_images_pil('path_to_first_image.jpg', 'path_to_second_image.jpg', method='horizontal')
merged_image.save('merged_image.jpg')
相关推荐
万岳科技系统开发5 分钟前
AI赋能互联网医院小程序开启智慧医疗新时代
人工智能·小程序·apache
蓝狐社6 分钟前
市场不再为AI烧钱故事买单
人工智能
小白19979 分钟前
医疗影像分析与遥感
人工智能
电子科技圈10 分钟前
第二代无线平台历久弥新,赋能物联网创新迭代
人工智能·嵌入式硬件·mcu·物联网·设计模式·硬件架构·iot
东坡肘子17 分钟前
不是模型变慢了,是任务变大了 -- 肘子的 Swift 周报 #146
人工智能·swiftui·swift
xexpertS28 分钟前
不稳定测试治理:如何通过自动检测与自动抑制提升 CI 稳定性
人工智能·自动化
小程故事多_8030 分钟前
Graph Engineering,重构AI智能体协作的底层逻辑,让复杂任务高效落地
人工智能·重构
宸津-代码粉碎机31 分钟前
Jar热部署进阶实战|修复原生方案OOM与类冲突问题,生产级无BUG优化方案
java·大数据·服务器·开发语言·前端·人工智能·python
咖啡星人k41 分钟前
AI 编程工具集体变脸:Cursor 漏洞、TRAE 限额、Claude Code 数据收集风波
人工智能·安全·microsoft·cursor·trae·ai编程工具
凡人AI录1 小时前
GPT-5.6 正式发布:Codex 并入 ChatGPT,额度与模型体系全面调整
人工智能·gpt·chatgpt