我正在使用以下代码为mp4视频生成缩略图:
import cv2 as cv from PIL import Image vidcap = cv.VideoCapture(videoPath) vidcap.set(cv.CAP_PROP_POS_MSEC, millisecond) #Turn video frame into numpy ndarray success, image = vidcap.read() cv.imwrite('fromImage.jpg', image) #line to be replaced
从高预算,专业拍摄的视频生成的缩略图如下所示: 不幸的是,在我的应用程序上下文中,我将无法直接将图像帧写入文件。相反,我必须将cv生成的图像数组转换为PIL图像,然后从那里开始。看起来像这样:
# Turn numpy ndarray int PIL image img = Image.fromarray(image) img.save('fromArray.jpg') #Saving it for stackoverflow
但是从同一个mp4视频输出的缩略图已完全失真,因为它似乎已变成红色和蓝色,看起来像这样: 图像失真的罪魁祸首是谁?
https://note.nkmk.me/zh-CN/python-opencv-bgr-rgb- cvtcolor/
imageRGB = cv.cvtColor(image, cv.COLOR_BGR2RGB) img = Image.fromarray(imageRGB) img.save('fromArray.jpg')