原理

不知道大家小时候有没有玩过这个?

最早的动画就是这么形成的,记得小时候还有这种小书卖。

其实视频的原理也是这样,一个视频是由很多张图片组成的,一个图片是一帧。所以我们要对视频进行画质增强,可以拆分成对

每一帧的图片进行操作,这个操作我们在前面介绍过。

因此,对视频进行画质增强的方法可以分为三步:拆分->处理->合成。

拆分

我们在第一篇文章讲到过如何捕获摄像头的视频流,以及如何读取视频并播放。不管通过哪种方法,我们都是通过帧操作的。所

以这里所谓的拆分就是获取到我们捕获到的视频流或者读取的视频流的每一帧。

success, img1 = cap.read()# 如果正确读取帧,success为Trueif not success:breakcv2.imshow('img1', img1)

就是这么简单,我们就可以获取到视频每一帧了。

处理

获取到视频的一帧之后,我们就要把这一帧转换成我们可以处理的格式的图片。在前面我们介绍如何对图片进行画质增强的时

候,使用的是 ImageEnhance 这个函数的相关方法,这个函数是 PIL 图像处理库里面的,所以我们必须把我们每一帧的图片读取

成 PIL 可以处理的格式:

image = Image.fromarray(np.uint8(img1))  # 转换成PIL可以处理的格式

读取到图像之后,我们就可以对图像进行画质增强处理了,这里还是用我们上篇文章中讲到的代码:

# 图像处理
python学习交流Q群:906715085####
def img_enhance(image, brightness=1, color=1,contrast=1,sharpness=1):# 亮度增强enh_bri = ImageEnhance.Brightness(image)if brightness:image = enh_bri.enhance(brightness)# 色度增强enh_col = ImageEnhance.Color(image)if color:image = enh_col.enhance(color)# 对比度增强enh_con = ImageEnhance.Contrast(image)if contrast:image = enh_con.enhance(contrast)# 锐度增强enh_sha = ImageEnhance.Sharpness(image)if sharpness:image = enh_sha.enhance(sharpness)return image

合成

图像处理完,我们需要每一帧图像进行合成,从而得到我们最终的视频:

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'):breakexcept:breakcap.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 】增强视频画质,就应该这么做相关推荐

  1. Python 增强视频画质,就这么做!

    文 | 闲欢 来源:Python 技术「ID: pythonall」 前面通过文章 几行代码,实现Python捕获.播放和保存摄像头视频!给大家介绍了如何读取.播放和保存视频,后面又通过文章 Pyth ...

  2. Python|使用PIL增强视频画质

    1.安装pillow和opencv-python pip install opencv-python pip install pillow 2.用opencv一帧一帧读取视频 import cv2 f ...

  3. 【公开课预告】:超分辨率技术在视频画质增强领域的研究与应用

     点击上方"LiveVideoStack"关注我们 随着终端大屏化趋势加快,高品质内容供给匮乏将成为互联网在线视频平台遇到的最大问题.因此,以人工智能超分辨率算法提供高分辨率.高画 ...

  4. 两款吾爱破解优秀软件,批量查找文本,图像视频画质增强

    批量查找文本 By:tuao 我们在电脑中查找文件的方式有很多,只要知道文件名便能很容易找到 但如果只记得文档中的某个关键词,而忘记文件名称的话,找起来就有些费劲了 这款工具便可以批量的在word.w ...

  5. 王荣刚:视频画质评定是个“大坑”

    这是『下一代编解码器』系列采访的第8篇,LiveVideoStack采访了北京大学信息工程学院教授王荣刚,畅聊了从热门编解码器的比较到4K.短视频等应用场景,国产AVS2的演进,以及视频画质评定. 策 ...

  6. 画质评测|一次关于视频画质的探(zhǎn)讨(xiàn)

    消费侧的用户体验是创作者最关心的问题,也是快手音视频技术团队高度重视的方向.目前,快手是国内首家同时支持1080P高分辨率.60帧高帧率.HDR高动态范围以及4K全景视频的短视频平台. 首先,介绍一下 ...

  7. 想自学python看哪位的视频比较好-python学习视频好的有哪些

    原标题:python学习视频好的有哪些 Python视频,一般找的同学事打算自学的,但作为曾经自学过Python的一员,想给你提几点学习Python的建议,希望你的Python学习之路能平坦些. 第一 ...

  8. 4个工具,个个都是精品!修复图片视频画质超好用

    分享4个好用的修复图片视频画质的工具,操作简单,上传图片或者视频就能一键修复画质,让图片视频秒变清晰! 1.改图鸭 一个免费的图片在线编辑处理网站,它里面有图片压缩.图片编辑.图片格式转换.抠图换背景 ...

  9. 视频画质修复,老旧视频的模糊画质如何修复为4K画质?

    最近在B站听伍佰的时候,发现有不少UP主制作了4K画质修复版 Live 视频.这些二十多年前的视频,在4K画质下,似乎多了一份莫名的感动... 他们是怎么制作的这些视频的呢?老旧视频的模糊画质如何修复 ...

最新文章

  1. Java06-day06【Debug(概述、操作流程)、Debug查看偶数求和、Debug查看方法调用】
  2. 宝骏530中控屏怎么安装软件_试驾2020款宝骏530:大屏加六座,就这么直接
  3. 什么是jsf_为什么应该避免JSF
  4. java各个版本的特性_Java各个版本的新特性
  5. ISSN和EAN原理及转换【转载】
  6. 互联网高可用架构技术实践
  7. ELK详解(十三)——Logstash收集Nginx日志实战
  8. C++ begin( ) cbegin( ) end() cend()区别
  9. python函数及方法大全_Python常用方法和技巧汇总
  10. python爬虫学习(1)爬取微软必应翻译(中英互译)
  11. DB2-SQLCODE 错误码大全---[IBM官方]
  12. codeforces NCPC2015 GYM 100781A Adjoin the Networks 圖的直徑
  13. plc梯形图语言c1,梯形图的特点——为什么梯形图能成为PLC第一编程语言
  14. python查询12306余票_Python之12306余票查询
  15. 从网易博客转入CSDN
  16. Linux交作业显示Eqw,SGE作业基本用法
  17. excel如何拆分表格?
  18. (纪中)2417. Loan Repayment【数学】
  19. 解决 Costmap2DROS transform timeout.问题
  20. Kaggle数据竞赛记录 - IEEE-CIS Fraud Detection

热门文章

  1. 极度的坦诚就是无坚不摧
  2. 线性代数复习笔记——第一章
  3. 学好C语言,你只需要这几句口诀!
  4. 使用python画K线图(蜡烛图)
  5. Shodan搜索引擎使用技巧
  6. Android Studio 模拟器联网设置
  7. 华为手机显示切换服务器,手机切换云服务器
  8. 电脑c语言跟英语关系大吗,英语和数学不好能学好C语言吗
  9. Python中pip,pip3,虚拟环境(venv)三者的关系,如何在pycharm中使用虚拟环境,以及安装依赖包所遇到的问题。
  10. 病毒泄密一个接一个,有7招能保护你的数字生活