加油,我们一直同行,最美好的,永远是昨天。
by 世外居士
回味与往后
前面我们对图像和视频的读取进行了实操,今天我们继续来学习它们的处理-------放慢视频VS图像添加文字,学会今天的项目,你将会进入新的境界。
一、放慢视频
相信在我们平时的生活工作中,大家可能遇到过这样的问题,有一段不错的视频,但是时间很短,而且播放速度较快,快的你都看不清视频中的某个细节,你一定想过,要是视频能够放慢一点就好了,这样我们就能看到视频的细节部分了,带着这样的问题,我们进入今天的实战,原理:读取视频,从视频中取出一帧帧图像保存,关键在于保存的时候将每一张图像进行延时,如此循环到视频的结束,这样原来的视频每一个图像都变慢了一定时间,总得视频也就变得慢了,下面请看关键函数讲解:
代码片段1:
# 下面的代码在于得到视频的原始信息,这样我们就可以用同样得到方式对处理后的视频进行保存,而不去生成未知的视频格式。
#获取帧率
src_fps = cap.get(cv2.CAP_PROP_FPS)
# 原始的帧率
# 获取总帧数
totalFrameNumber = int(
cap.get(cv2.CAP_PROP_FRAME_COUNT))
print("原始的帧率:", src_fps)
print("原始的总帧数", totalFrameNumber)
interval = 1
# 捕获图像的间隔,单位:秒
num_frames = totalFrameNumber
# 捕获图像的总帧数
out_fps = src_fps
# 输出文件的帧率
代码片段2:
# 视频保存参数设置
# 设置要保存视频的编码,分辨率和帧率
video = cv2.VideoWriter(
"out.mp4",
cv2.VideoWriter_fourcc('M','P','4','V'),
#cv2.VideoWriter_fourcc('F','L','V','1'),
out_fps,
size
)
代码片段3:
# 视频图像循环读取及保存
for i in range(num_frames):
_, frame = cap.read()
video.write(frame)
# 将视频一帧帧保存下来
# 如果希望把每一帧也存成文件
比如:制作GIF,则取消下面的注释
# filename = '{:0>6d}.png'.format(i)
# cv2.imwrite(filename, frame)
# 打印是否捕获当前帧
print('Frame {} is captured.'.format(i+1))
time.sleep(interval)
运行结果:
如此得出的视频,便是放慢了。。
二、图像添加文字。
平时,我们在发送图片时,第一个想到的就是截图,涂鸦,添加文字信息,这样的操作其实很简单,我们来看一看python+OpenCV是如何做到的。
代码实践:
# -*- coding:gbk -*-
import cv2
ori_img = cv2.imread("tower.jpg")
img = ori_img.copy()
font = cv2.FONT_HERSHEY_SIMPLEX
# 想要用的字体声明
# 在img图像上,左上角坐标为
(100,200)的位置
开始写文字:Eiffel Tower(埃菲尔铁塔)
cv2.putText(img, 'Eiffel Tower ',
(100, 200), font,4,
(255, 255, 255), 2,
lineType=cv2.LINE_AA)
cv2.imshow('添加文字后的图像', img)
# 显示图像
cv2.imshow('原始图像', ori_img)
# 显示图像
cv2.waitKey(0)
运行结果:
原图
效果图
如此,我们的代码成功的实现了在图片上添加文字,请欣赏美景。。。
居士寄语:上面的例子不难,希望大家实操一遍,再去体会他们的读取和处理方式,期待在以后的生活工作中用到,如此,幸甚至哉!
▼
往期精彩回顾
▼
·END·
IT进阶之旅
平凡·却不失魅力
微信号:IT进阶之旅