使用ffmpeg拼接两张图片

news/2024/7/10 19:21:13 标签: ffmpeg, 音视频

  最近在工作中遇到了一个需求,就是需要将两张图片拼接在一起,作为一个封面图。如果只是临时拼接一张,我们可以只用photoshop之类的图片编辑工具,将两张图片拼接在一起。而我们的需要是需要实现自动化,由于之前使用过ffmpeg做过图片的操作,于是搜索了下,ffmpeg确实能实现两张图片的拼接,这里分享下相关操作的命令行。

  为了方便演示拼接效果,我这里提前准备了两张图片,cat.jpg和dog.jpg。如果想练习本文中所涉及到的命令行,也可以直接下载这两张图。
在这里插入图片描述
在这里插入图片描述

备注:ffmpeg拼接图片时要求图片大小一致,所以我已经提前将两种图片预处理成同样大小的方形图片了。

水平or垂直拼接

  首先是最简单的两种拼接,也就是直接将这俩张图水平或者垂直拼接在一起,我们先看垂直拼接命令行和效果。

ffmpeg -i cat.jpg -i dog.jpg -filter_complex vstack vout.jpg

在这里插入图片描述
  再看下水平拼接的命令行和效果:

ffmpeg -i cat.jpg -i dog.jpg -filter_complex hstack hout.jpg

在这里插入图片描述
  这里最重要的参数就是-filter_complex hstack-filter_complex vstack 其中h代表英文单词horizontal,v代表英文单词vertical。

部分拼接

  如果我们只想让两张图的部分拼接在一起,防止图片过宽或者过长,我们也可以filter_complex增加一些更复杂的参数来分别截取部分内容拼接起来,如下:

ffmpeg -i cat.jpg -i dog.jpg -filter_complex "[0:v]crop=960:1920:0:0[img1];[1:v]crop=960:1920:0:0[img2];[img1][img2]hstack" phoutput.jpg

  其中[0:v]和[1:v]分别表示第一张图片和第二张图片的画面。crop=960:1920:0:0表示截取大小为960:1920的区域,后面的0:0表示从坐标0:0点(左上角)开始截取,[img1]和[img2]是临时命名的截取后的图片。hstack表示水平拼接,最后的拼接效果如下:
在这里插入图片描述
  我们也可以截取狗狗图的右半部分,只需要将命令行中的第二个crop=960:1920:0:0 替换成 crop=960:1920:960:0即可,完整命令和拼接效果如下:

ffmpeg -i cat.jpg -i dog.jpg -filter_complex "[0:v]crop=960:1920:0:0[img1];[1:v]crop=960:1920:960:0[img2];[img1][img2]hstack" phoutput1.jpg

在这里插入图片描述
  这里相信你也能自己拼出来垂直拼接的命令了,完整命令和拼接效果如下:

ffmpeg -i cat.jpg -i dog.jpg -filter_complex "[0:v]crop=1920:960:0:0[img1];[1:v]crop=1920:960:0:960[img2];[img1][img2]vstack" pvoutput.jpg

在这里插入图片描述

总结

  通过本篇文章的介绍,我们了解了使用FFmpeg拼接两张图片的方法。可以看到出来,使用ffmpeg将两张图片拼接在一起还是相当简单的。希望这篇文章能够对大家有所帮助,如果您有任何疑问或者建议,欢迎在评论区留言。


http://www.niftyadmin.cn/n/285687.html

相关文章

Java时间类(三) -- Calendar()(日历类)

java.util.Calendar类是一个抽象类,它提供了日期计算的相关功能、获取或设置各种日历字段的方法。 protected Calendar() 构造方法为protected修饰,无法直接创建该对象。1. Calendar()的常用方法: 方法名说明static Calendar getInstance()使用默认时区和区域获取日历vo…

【致敬未来的攻城狮计划】— 连续打卡第二十天:RA2E1_UART —— 串口通信例程

系列文章目录 1.连续打卡第一天:提前对CPK_RA2E1是瑞萨RA系列开发板的初体验,了解一下 2.开发环境的选择和调试(从零开始,加油) 3.欲速则不达,今天是对RA2E1 基础知识的补充学习。 4.e2 studio 使用教程 5.…

快手sig3 48位-unidbg

研究某手app的小伙伴都了解sig3有两个版本,低版本的是42位,高版本的48位。 废话不多说,先抓个包: 上一个当前最新版本的48位sig3,我们以搜索接口为例,效果如图: 在上面可以看到使用unidbg的方式…

基频建模方法总结

基频F0建模方法 语音合成领域需要对基频进行建模,具体到文语转换TTS、语音转换VC、情感语音转换EVC领域等。 语音合成F0 包括文语转换,情感语音转换 TTEF:text-to-emotional-features synthesis EVC:emotional voice conversio…

libfacedetection 人脸检测库 检测速度慢的问题

目录 一、libfacedetection 性能介绍 英特尔CPU 使用AVX2指令集 使用AVX512指令集 嵌入式设备 二、加速检测速度 libfacedetetion的前向推理速度很快的原因 使用axv2加速指令 一、libfacedetection 性能介绍 在上一篇文章中,我发现使用摄像头检测,构…

Python实战项目:手势识别控制电脑音量

今天给大家带来一个OpenCV的实战小项目——手势识别控制电脑音量 先上个效果图: 通过大拇指和食指间的开合距离来调节电脑音量,即通过识别大拇指与食指这两个关键点之间的距离来控制电脑音量大小 技术交流 技术要学会分享、交流,不建议闭…

ChatGPT常见问题及其解决方法汇总

好久没有更新过技术类的文章了,希望本篇文章能够对你有所帮助,今天这篇博客将会把ChatGPT注册中可能遇到的问题彻头彻尾的讲一下,创作不易,如果感觉有帮助的话就动动你发财的小手点个收藏点个赞吧。如有需要转载请附上原文链接&am…

如何安装 Auto GPT 4:分步指南

动动发财的小手,点个赞吧! 您对尝试最新最好的文本生成技术感到兴奋吗? Auto GPT 4 因其令人印象深刻的功能而广为人知,但启动和运行它似乎令人望而生畏。幸运的是,我们在这里[1]提供安装 Auto GPT 4 的分步指南。 1. …