python视频清晰度增强,python做视频特效
本文主要详细介绍了如何使用Python语言来增强视频的图像质量。本文中的样例代码解释的很详细,有兴趣的朋友可以试试。
00-1010前言原理实施步骤、拆分处理和合成效果总结
目录
通过上一篇文章中的几行代码,Python就可以捕捉、播放和保存摄像头视频!我通过文章Python米托技术向你介绍了如何阅读、播放和保存视频,然后只有几行代码!本文介绍了如何调整图像的亮度、对比度、色度或锐度来实现基本的图像处理操作。
其实那两篇都是铺垫,都是介绍如何提升视频质量。本文将结合前两篇文章的内容来谈谈如何提升视频质量。
如果想直接看效果,可以拉到文末。
前言
不知道你年轻的时候有没有玩过这个?
最早的动画就是这样形成的。记得小时候也有这种小书卖。
其实视频的原理是一样的。一个视频是由很多画面组成的,一个画面就是一帧。因此,我们需要增强视频的图像质量,可以将视频分割成每一帧的图像进行操作。这个操作前面已经介绍过了。
因此,视频质量增强的方法可以分为三个步骤:分割-处理-合成。
原理
实现步骤
在第一篇文章中,我们讨论了如何从摄像机中捕获视频流,以及如何读取和播放视频。无论哪种方式,我们都是通过框架来操作的。所以这里所谓的拆分,就是把我们抓拍的视频流或者读取的视频流的每一帧都取过来。
成功,img1=cap.read()
#如果帧被正确读取,则成功为真
ifnotsuccess:
破裂
cv2.imshow(img1 ,img1)
就这么简单,我们可以得到视频的每一帧。
拆分
在获得一帧视频后,我们必须将这一帧转换成我们可以处理的格式的图片。前面我们在介绍如何增强图像质量时,使用了ImageEnhance函数的相关方法,这个函数在PIL图像处理库中,所以我们要把每一帧的图像读入PIL可以处理的格式:
image=image . from array(NP . uint 8(img 1))#转换为PIL可以处理的格式。
在读取图像后,我们可以增强图像质量。这里我们仍然使用上一篇文章中提到的代码:
#图像处理
defimg_enhance(图像,亮度=1,颜色=1,对比度=1,清晰度=1):
#亮度增强
enh _ bri=图像增强。亮度(图像)
ifbrightness:
image=enh_bri.enhance(亮度)
#色度增强
enh _ col=图像增强。颜色(图像)
ifcolor:
image=enh_col.enhance(彩色)
#对比度增强
enh _ con=图像增强。对比度(图像)
ifcontrast:
image=enh_con.enhance(对比度)
#清晰度增强
enh _ sha=图像增强。清晰度(图像)
ifsharpness:
image=enh_sha.enhance(锐度)
返回图像
处理
在图像被处理后,我们需要合成每一帧图像来得到
我们最终的视频:
cap = cv2.VideoCapture(你的视频目录/xxx.mp4)success, _ = cap.read()
# 分辨率-宽度
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
# 分辨率-高度
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
# 总帧数
frame_counter = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
video_writer = cv2.VideoWriter(输出.mp4, cv2.VideoWriter_fourcc(M, P, 4, V), 15, (width, height), True)
while success:
success, img1 = cap.read()
try:
image = Image.fromarray(np.uint8(img1)) # 转换成PIL可以处理的格式
img_enhanced = img_enhance(image, 2, 2, 2, 3)
video_writer.write(np.asarray(img_enhanced))
if cv2.waitKey(1) & 0xFF == ord(q):
break
except:
break
cap.release()
video_writer.release()
cv2.destroyAllWindows()
我这里读取的是 mp4 格式的视频,所以在合成写视频文件的时候,我们需要用
cv2.VideoWriter_fourcc('M', 'P', '4', 'V')
这个格式。
我这里没有对图片的分辨率进行修改,只是分别获取原始视频的分辨率,然后写入视频文件的时候,将原始分辨率传入作为参数。
如果你需要修改视频的分辨率的话,可以使用下面的方式:
cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]])
使用resize
方法就可以了:
resized = cv2.resize(img, (width, height), interpolation = cv2.INTER_AREA)
效果
我们先来看看处理前的视频:
处理之后(我这里处理比较随意,参数都是随意写的)的视频是这样子的:
总结
到此为止,我们的视频画质增强的功能算是基本实现了,代码也不复杂,加起来也就这么点。但是,如果要处理成自己满意的效果,还是需要下一番功夫去调参数,去优化。甚至针对每一帧可能传入的参数都不一样,这就需要各位自己去慢慢研究了。
以上就是Python实现视频画质增强的示例代码的详细内容,更多关于Python视频画质增强的资料请关注盛行IT软件开发工作室其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。