文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python怎么实现视频画质增强

2023-06-30 10:52

关注

本文小编为大家详细介绍“Python怎么实现视频画质增强”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python怎么实现视频画质增强”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

原理

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

Python怎么实现视频画质增强

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

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

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

实现步骤

拆分

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

success, img1 = cap.read()    # 如果正确读取帧,success为True    if not success:        break    cv2.imshow('img1', img1)

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

处理

获取到视频的一帧之后,我们就要把这一帧转换成我们可以处理的格式的图片。在前面我们介绍如何对图片进行画质增强的时候,使用的是 ImageEnhance 这个函数的相关方法,这个函数是 PIL 图像处理库里面的,所以我们必须把我们每一帧的图片读取成 PIL 可以处理的格式:

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

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

# 图像处理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'):            break    except:        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怎么实现视频画质增强

处理之后(我这里处理比较随意,参数都是随意写的)的视频是这样子的:

Python怎么实现视频画质增强

读到这里,这篇“Python怎么实现视频画质增强”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯