猫变虎,图像变形(image morphing)

本文介绍了如何使用Python和OpenCV库,通过逐帧图像混合的方法,将猫的图片转换为老虎,生成180张过渡图片并制作成3秒视频。代码实例展示了如何读取图片、调整大小、混合图像以及保存和输出视频的过程。
摘要由CSDN通过智能技术生成

使用image morphing(图像变形)的相关方法,将猫咪的图片逐帧变成老虎的图片。

部分效果图如下:

 

代码如下:

import cv2
import os
#读取猫图和虎图
cat_image = cv2.imread('cat.png')
tiger_image = cv2.imread('tiger.png')

# 确保两张图片的大小一致,将猫图的大小变成和虎图的大小一致
tiger_height, tiger_width, _ = tiger_image.shape
cat_image = cv2.resize(cat_image, (tiger_width, tiger_height), interpolation=cv2.INTER_CUBIC)

#检查是否存在指定名字的文件夹,没有的话就创建一个文件夹,用于存储图片变化过程中的中间过渡图片
if not os.path.exists('images'):
    os.makedirs('images')

# 指定生成视频的参数,每秒60张图片,共180张图片,持续3秒,可以调整每秒120张图片等,以显示更加细腻
output_video = cv2.VideoWriter('morphing.avi', cv2.VideoWriter_fourcc(*'XVID'), 60, (tiger_width, tiger_height))
numbers = 180

# 计算混合系数,主要用于控制图片变化的程度,numbers越大,更多张图片,每张图片变化的更小,显示得会更加细腻
for i in range(numbers):
    alpha = i / numbers

    # 使用混合系数 alpha 逐渐混合猫和老虎的图像
    morphed_image = cv2.addWeighted(cat_image, 1 - alpha, tiger_image, alpha, 0)

    # 保存中间状态图像,将图片存放在Images文件夹中
    cv2.imwrite(f'images/{i:03d}.jpg', morphed_image)

    # 将中间状态图像添加到视频中
    output_video.write(morphed_image)

# 释放视频对象
output_video.release()

具体实现方法:

1.使用python语言完成任务,代码只有一个mian.py。
2.两张原图片,cat.png和tiger.png。请这两张图片放在与mian.py同一目录下。
3.运行代码之后会生成一个文件夹,生成一个视频,文件夹images记录了猫变虎过程中每一帧的过渡图片,代码中设置的是每秒钟60张中间过渡图片,共3秒,所以有180张过渡图片,图片名字从000到179。具体参数可以修改以获得更好的视觉效果。
4.morphing.avi是生成的变化视频。
5.代码需要两个库,代码前两行:
import cv2
import os
导入cv2的时候,在pycharm的“文件”、“设置”、“项目-Python解释器”中安装的软件包的名字为:opencv-python,而不是cv2。

效果:
在images文件夹中有180张中间过渡图片:

生成的是morphing.avi,视频截图如下:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值