实现抖音视频抖动效果---OpenCV-Python开发指南(53)

简介: 实现抖音视频抖动效果---OpenCV-Python开发指南(53)

抖音视频抖动原理


感兴趣的不妨随便弄一个视频使用抖音抖动效果观察。这里,博主建议读者使用国际象棋的视频图像,这种方块的格式更能看清细微的抖动变化。


我们观察抖音抖动视频会发现,抖动效果的原理是对视频中的一些帧进行剪切和放大到原图,出现视频中的人或者物体放大颤动的效果,并因为视觉残留出现闪影效果。


换到OpenCV中进行处理,就可以分为以下几个步骤:


1.读取原视频,设置其抖动的帧数,比如相邻的9帧的图像按照图像中心进行剪裁,然后缩放到原来的尺寸

2.设置抖动中不变的帧数,比如以9帧为间隔来处理图像


实现抖音视频抖动


按照原理,我们先读取视频,或者直接使用摄像头。然后获取图像的帧数FPS,同时获取图像的中心Center,将图像按比例剪裁20%之后,在放大至原图。


下面,我们来实现视频抖动效果:

#抖动视频图像处理
def video_shake_effect(img):
    height, width, n = img.shape
    new_img = img[int(height * 0.1):int(height * 0.9), int(width * 0.1):int(width * 0.9)]
    new_img = cv2.resize(new_img, (width, height))
    return new_img
if __name__ == "__main__":
    cap = cv2.VideoCapture("45.mp4")
    #获取视频帧率,视频宽度高度,所有通过cv2.CAP_PROP_FPS获取的参数都是浮点数,而视频宽高必须为整数,所以要进行强制类型转换。
    fps = cap.get(cv2.CAP_PROP_FPS)
    width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
    height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
    i = 1
    count = 5
    fourcc = cv2.VideoWriter_fourcc(*'MJPG')
    videoWriter = cv2.VideoWriter("output.avi", fourcc, fps, (width, height))
    while (cap.isOpened()):
        ret, frame = cap.read()
        if ret:
            if (i % 5 == 0 or 0 < count < 5):
                frame = video_shake_effect(frame)
                videoWriter.write(frame)
            else:
                count = 5
                cv2.imshow('video', frame)
                videoWriter.write(frame)
            i += 1
            c = cv2.waitKey(1)
            if c == 27:
                break
        else:
            break
    cap.release()
    videoWriter.release()
    cv2.destroyAllWindows()


运行之后,效果如下:


上图抖动节奏有间歇,是因为博主将GIF帧率调小了点,实际情况抖动效果基本一致。上面程序应该很好理解都是前面博文的知识,这里不在赘述,至于抖动频率算法,这里是打开视频先抖动5帧,然后每间隔5帧率抖动一次。

目录
打赏
0
0
0
0
20
分享
相关文章
|
1月前
|
【01】整体试验思路,如何在有UID的情况下获得用户手机号信息,python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
【01】整体试验思路,如何在有UID的情况下获得用户手机号信息,python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
213 82
|
27天前
|
Python如何给视频添加音频和字幕
通过以上方法和代码示例,你可以在Python中成功实现视频的音频和字幕添加。确保理解每一步的实现细节,应用到实际项目中时能有效地处理各种视频编辑需求。
45 20
Python爬虫:从人民网提取视频链接的完整指南
Python爬虫:从人民网提取视频链接的完整指南
【02】整体试验思路,在这之前我们发现sec_uid,sec_uid是什么和uid的关系又是什么?相互如何转换?python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
【02】整体试验思路,在这之前我们发现sec_uid,sec_uid是什么和uid的关系又是什么?相互如何转换?python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
80 6
【01】python开发之实例开发讲解-如何获取影视网站中经过保护后的视频-用python如何下载无法下载的视频资源含m3u8-python插件之dlp-举例几种-详解优雅草央千澈
【01】python开发之实例开发讲解-如何获取影视网站中经过保护后的视频-用python如何下载无法下载的视频资源含m3u8-python插件之dlp-举例几种-详解优雅草央千澈
160 34
【01】python开发之实例开发讲解-如何获取影视网站中经过保护后的视频-用python如何下载无法下载的视频资源含m3u8-python插件之dlp-举例几种-详解优雅草央千澈
Python用代理IP获取抖音电商达人主播数据
在当今数字化时代,电商直播成为重要的销售模式,抖音电商汇聚了众多达人主播。了解这些主播的数据对于品牌和商家至关重要。然而,直接从平台获取数据并非易事。本文介绍如何使用Python和代理IP高效抓取抖音电商达人主播的关键数据,包括主播昵称、ID、直播间链接、观看人数、点赞数和商品列表等。通过环境准备、代码实战及数据处理与可视化,最终实现定时任务自动化抓取,为企业决策提供有力支持。
Python数据分析项目:抖音短视频达人粉丝增长趋势
Python数据分析项目:抖音短视频达人粉丝增长趋势
深入解析:使用Python爬取Bilibili视频
本文介绍了如何使用Python编写脚本自动化下载Bilibili视频。通过requests等库获取视频和音频URL,使用ffmpeg合并音视频文件,最终实现高效下载。注意遵守网站爬虫政策和法律法规。
743 4
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等