2、合并两张图像

这篇具有很好参考价值的文章主要介绍了2、合并两张图像。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

CV实现

PIL实现


使用一个函数实现两张图像合并,通过参数指定合并方式(水平或垂直或加权)。文章来源地址https://www.toymoban.com/news/detail-795655.html

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')

到了这里,关于2、合并两张图像的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包