## 2、合并两张图像

news/2024/2/24 7:05:11/文章来源:https://blog.csdn.net/sinat_34461199/article/details/135579764

CV实现

PIL实现

### CV实现

import cv2
import numpy as npdef 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 Imagedef 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')

### 深入理解 Spark（一）spark 运行模式简介与启动流程源码分析

spark 的运行模式 standalone 模式 以 standalone-client 为例&#xff0c;运行过程如下&#xff1a; SparkContext 连接到 Master&#xff0c;向 Master 注册并申请资源&#xff08;CPU Core 和 Memory&#xff09;&#xff1b;Master 根据 SparkContext 的资源申请要求和 …

### ruoyi后台管理系统部署-4-安装nginx

yum 安装 ngix 1.24 yum 官方源安装&#xff1a; # 1. 需要预先安装 yum-utils sudo yum install yum-utils # 2. 配置yum repo touch /etc/yum.repos.d/nginx.repongix.repo: [nginx-stable] namenginx stable repo baseurlhttp://nginx.org/packages/centos/$releasever/$…

### 【LabVIEW FPGA 编程入门】使用FPGA IO进行编程

1.在项目中新建一个VI&#xff0c;命名为FPGA IO Test。 2. 可以直接将项目中的FPGA IO拖入程序框图中。 FPGA IO的类型&#xff1a; 数字线&#xff1a; 数字端口&#xff1a; 模拟IO&#xff1a; 其他&#xff1a; 3.如果新增加了FPGA资源&#xff0c;不是创建项目时扫描到的…

### C++算法学习心得五.二叉树（3）

1.合并二叉树&#xff08;617题&#xff09; 题目要求&#xff1a; 给定两个二叉树&#xff0c;想象当你将它们中的一个覆盖到另一个上时&#xff0c;两个二叉树的一些节点便会重叠。 你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠&#xff0c;那么将他们…

### Jenkins自动化部署docker

Jenkins自动化部署docker和普通方式构建 docker外挂目录 准备测试服务器docker环境准备jdk环境将上传jar包修改为app.jar对外暴露1000端口启动jar FROM openjdk:8-jdk-alpine ARG JAR_FILE COPY \${JAR_FILE} app.jar EXPOSE 1000 ENTRYPOINT ["java","-jar&q…

### CSS 下载进度条

<template><view class=btn>下载中</view></template><script></script><style>/* 设置整个页面的样式 */body {width: 100vw; /* 页面宽度为视口宽度 */background: #000000; /* 背景颜色为白色 */display: flex; /* 使用 flex…

### Linux 内核大转变：是否将迈入现代 C++ 的时代？

Linux开发者 H. Peter Anvin 在邮件列表中重启了关于 Linux内核C代码转换为C的讨论&#xff0c;并陈述了自己的观点。说之前先看一下这个话题的历史背景。 早在2018年4月1日&#xff0c;Andrew Pinski提议将 Linux 内核源码转为 C&#xff0c;在文中写道之所以引入是由于以下优…

### Springboot + websocket 实现 一对一 单人聊天

Springboot websocket 实现 一对一 单人聊天 要使用websocket ,需要添加 jar 打开项目中的pom.xml,添加以下内容 创建java端代码 配置websocke的endpoints 配置websocket的server ServerEndpoint(value "/websocket/{username}") 这句话 一定要注意, 这里 路…