python视频清晰度增强,python做视频特效

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: