思路是对视频抽帧并对每帧图像画质增强然后在把图片合成视频。如何实现抽帧之后就对抽出来的图像进行画质增强,在合成视频的时候能保证图像顺序不混乱
实现这个任务可以按照以下步骤进行:
ffmpeg -f image2 -framerate 30 -i frame_%d.png -s 640x480 output.mp4
其中,-i参数指定输入文件列表,frame_%d.png表示图像文件名的格式(%d表示帧的编号),-s参数指定输出视频的分辨率,output.mp4表示输出视频的文件名。
删除临时的图像文件。
需要注意的是,在实现这个任务时,需要考虑以下问题:
目前的代码,但是处理完之后好像是逐帧播放的,,要如何改进使帧合成视频呢
```python
def Img_enhance(image):
# 亮度增强
enh_bri = ImageEnhance.Brightness(image)
brightness = 1.5
image_brightened = enh_bri.enhance(brightness)
# image_brightened.show()
# 色度增强
enh_col = ImageEnhance.Color(image_brightened)
color = 1.5
image_colored = enh_col.enhance(color)
# image_colored.show()
# 对比度增强
enh_con = ImageEnhance.Contrast(image_colored)
contrast = 1.5
image_contrasted = enh_con.enhance(contrast)
# image_contrasted.show()
# 锐度增强
enh_sha = ImageEnhance.Sharpness(image_contrasted)
sharpness = 3.0
image_sharped = enh_sha.enhance(sharpness)
# image_sharped.show()
return image_sharped
import cv2
from PIL import Image , ImageEnhance
import numpy as np
cap = cv2.VideoCapture('G:\yingxiongshike\shipinyuanjian.mp4')
images = []
while(cap.isOpened()):
ret, frame = cap.read() # 读出来的frame是ndarray类型
image = Image.fromarray(np.uint8(frame)) # 转换成PIL可以处理的格式
images.append(image)
cv2.imshow('frame', frame)
if cv2.waitKey(25) & 0xFF == ord('q'):
break
# 同步进行增强画质处理,并显示
Image_enhanced = Img_enhance(image) # 调用编写的画质增强函数
cv2.imshow('frame_enhanced', np.asarray(Image_enhanced)) # 显示的时候要把格式转换回来
if cv2.waitKey(25) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
```