我在视频捕获的帮助下从视频中提取帧。 提取出第一帧图像,利用PIL技术将该帧转换成图像。 在位置(1,1)处打印上一个像素值 在新创建的图像的位置(1,1)处打印像素值 有人能解释为什么吗?你知道吗
import cv2
from PIL import Image
def FrameCapture(path):
# Path to video file
vidObj = cv2.VideoCapture(path)
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
width = cv2.CAP_PROP_FRAME_WIDTH
height = cv2.CAP_PROP_FRAME_HEIGHT
fps = cv2.CAP_PROP_FPS
out = cv2.VideoWriter("D:\Funny 3 second video.mp4", fourcc, fps, (width, height))
cnt = int(0)
while 1:
# vidObj object calls read
# function extract frames
success, arrayframe = vidObj.read()
if success == 0:
break
if cnt == 0:
#IF FIRST FRAME SAVE IT
sp = Image.fromarray(arrayframe)
sp.save("D:\sp2.jpg")
fp = "D:\sp2.jpg"
im = Image.open(fp, mode='r')
im = im.convert('RGB')
print("Old Value: ",arrayframe[1][1])
print("New Value: ",im.getpixel((1, 1)))
out.write(arrayframe)
cnt += 1
vidObj.release()
out.release()
cv2.destroyAllWindows()
# Driver Code
if __name__ == '__main__':
# Calling the function
FrameCapture("D:\Funny 2 second video.mp4")
Old Value: [94 95 90]
New Value: (94, 95, 89)
答案很简单。您以有损格式(即JPEG)保存了数据,但它丢失了数据。你知道吗
使用无损格式,如PNG,如果每一位是重要的,你。你知道吗
相关问题 更多 >
编程相关推荐