当前位置: 首页> 娱乐> 八卦 > 3种使用OpenCV进行图像合成的技巧

3种使用OpenCV进行图像合成的技巧

时间:2025/7/12 0:07:12来源:https://blog.csdn.net/wenjie20070212/article/details/139374103 浏览次数:2次

准备好探索图像世界的魔法了吗?今天,我们将用Python和OpenCV库,一起解锁三种超炫的图像合成技巧,让你的照片变得与众不同!🌈

1. 图像融合:让风景与梦境交织

想象一下,把日出的辉煌与夜空的星辰合二为一,是不是很酷?

首先,确保你的Python环境已经安装了OpenCV。如果没有,简单一句命令就能搞定:

pip install opencv-python

接下来是魔法时间:

import cv2
import numpy as np# 加载图片,想象一下,一张是白天,一张是夜晚
day = cv2.imread('day.jpg')
night = cv2.imread('night.jpg')# 确保两张图片尺寸相同,不然它们可没法手拉手
if day.shape != night.shape:print("尺寸不匹配,请调整图片尺寸!")
else:# 创建一个简单的权重数组,用于控制融合效果alpha = 0.5  # 白天的权重beta = 0.5   # 夜晚的权重# 使用addWeighted函数,就像调色盘一样混合颜色blended = cv2.addWeighted(day, alpha, night, beta, 0)# 显示合成后的图像,见证奇迹cv2.imshow('梦幻交融', blended)cv2.waitKey(0)  # 等待按键后关闭窗口cv2.imwrite('dreamy_sky.jpg', blended)  # 保存你的杰作

这段代码的魔法在于addWeighted函数,它按指定权重合并两个图像,创造了一个既非完全白天也非完全夜晚的新景象,仿佛是梦境与现实的交汇。

2. 创意拼贴:打造个性化的照片墙

想不想让你的照片变成艺术展览的一部分?

让我们动手吧,这次我们需要随机挑选图像区域进行拼贴:

import random# 假设我们有两张图片,准备进行拼贴
img1 = cv2.imread('image1.jpg')
img2 = cv2.imread('image2.jpg')# 定义拼贴区域的大小
tile_size = (200, 200)# 获取目标图像的尺寸
height, width, _ = img1.shape# 初始化一个新的空白画布
canvas = np.zeros((height, width, 3), dtype=np.uint8)# 随机放置图片块
for i in range(height // tile_size[0]):for j in range(width // tile_size[1]):# 随机选择来自img1或img2的图片块source_img = random.choice([img1, img2])x = j * tile_size[1]y = i * tile_size[0]canvas[y:y+tile_size[0], x:x+tile_size[1]] = source_img[y:y+tile_size[0], x:x+tile_size[1]]cv2.imshow('创意拼贴', canvas)
cv2.waitKey(0)
cv2.imwrite('art_wall.jpg', canvas)

这里的关键是通过循环和随机选择,将原图切割成小块,然后随机放置到一个新的画布上,创造出独一无二的拼贴效果。每一运行都是新的惊喜!

3. 梦幻镜像:水中的倒影,宛如仙境pondscape

想要复制自然界的镜像效应吗?水面的倒影,轻而易举就能实现。

让我们用水的倒影来增添几分神秘感:

def create_mirror_image(image, reflection_ratio=0.5):height, _, _ = image.shapemirror_height = int(height * reflection_ratio)# 上半部分保持不变upper_half = image[:height-mirror_height]# 下半部分翻转作为倒影reflected_half = cv2.flip(image[-mirror_height:], 0)# 渐变融合,模拟水面的模糊效果for i in range(mirror_height):alpha = i / mirror_heightblended_row = cv2.addWeighted(upper_half[-i-1], 1-alpha, reflected_half[i], alpha, 0)upper_half[-i-1] = blended_rowreturn upper_halfimage = cv2.imread('lake.jpg')
mirrored_image = create_mirror_image(image)
cv2.imshow('湖畔仙境', mirrored_image)
cv2.waitKey(0)
cv2.imwrite('pondscape.jpg', mirrored_image)

这段代码的亮点在于create_mirror_image函数。它首先确定倒影的高度,然后通过翻转下半部分图像创建倒影,接着使用渐变融合技术,模拟光线在水面上的折射效果,最终得到一幅如梦似幻的镜像画面。


好啦,今天的图像合成之旅就到这里。是不是觉得OpenCV超级有趣又强大呢?试着用这些技巧去创造你自己的视觉故事吧,分享给朋友们,让他们也惊叹不已!

关键字:3种使用OpenCV进行图像合成的技巧

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: