实现抖音视频抖动效果---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帧率抖动一次。

相关文章
|
5天前
|
存储 API 数据库
使用Python和Twilio通过短信通知主持视频办公时间。
使用Python和Twilio通过短信通知主持视频办公时间。
|
6天前
|
机器学习/深度学习 编解码 监控
利用Python实现监控视频的超分辨率提升
利用Python实现监控视频的超分辨率提升
22 2
|
6天前
|
机器学习/深度学习 算法 数据挖掘
【视频】Python基于SVM和RankGauss的低消费指数构建模型
【视频】Python基于SVM和RankGauss的低消费指数构建模型
|
6天前
|
机器学习/深度学习 算法 数据挖掘
【视频】支持向量机算法原理和Python用户流失数据挖掘SVM实例(下)
【视频】支持向量机算法原理和Python用户流失数据挖掘SVM实例(下)
|
6天前
|
机器学习/深度学习 算法 搜索推荐
【视频】支持向量机算法原理和Python用户流失数据挖掘SVM实例(上)
【视频】支持向量机算法原理和Python用户流失数据挖掘SVM实例
|
6天前
|
安全 Python
【视频】Python用GM(1,1)灰色模型预测模型对电力预测
【视频】Python用GM(1,1)灰色模型预测模型对电力预测
|
6天前
|
数据挖掘 Python
【视频】随机波动率SV模型原理和Python对标普SP500股票指数预测|数据分享
【视频】随机波动率SV模型原理和Python对标普SP500股票指数预测|数据分享
|
6天前
|
数据可视化 Python
【视频】风险价值VaR原理与Python蒙特卡罗Monte Carlo模拟计算投资组合实例
【视频】风险价值VaR原理与Python蒙特卡罗Monte Carlo模拟计算投资组合实例
|
6天前
|
机器学习/深度学习 语音技术 网络架构
【视频】Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析|数据分享
【视频】Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析|数据分享
|
6天前
|
机器学习/深度学习 语音技术 网络架构
【视频】LSTM神经网络架构和原理及其在Python中的预测应用|数据分享
【视频】LSTM神经网络架构和原理及其在Python中的预测应用|数据分享