Python 为什么opencv Videocapture函数读取像素值错误的视频帧?

Python 为什么opencv Videocapture函数读取像素值错误的视频帧?,python,opencv,aes,cv2,Python,Opencv,Aes,Cv2,我正在从相机捕获视频,并使用opencv VideoWriter功能保存它们。我将捕获的视频保存为未压缩的avi文件。当我录制完视频后,我有另一个脚本,应该逐帧读取视频,处理像素值。但是,当我尝试读取保存的视频帧时,像素值有点偏离 例如,比较正在写入的视频的第一帧和正在读取的视频(假设为100%相同),我注意到像素值关闭了一个小数字(RGB值关闭了一个小数字,通常小于5) 我已经确定我在写视频和阅读视频时使用的是完全相同的视频代码(检查下面的代码) def write_video(): out=

我正在从相机捕获视频,并使用opencv VideoWriter功能保存它们。我将捕获的视频保存为未压缩的avi文件。当我录制完视频后,我有另一个脚本,应该逐帧读取视频,处理像素值。但是,当我尝试读取保存的视频帧时,像素值有点偏离

例如,比较正在写入的视频的第一帧和正在读取的视频(假设为100%相同),我注意到像素值关闭了一个小数字(RGB值关闭了一个小数字,通常小于5)

我已经确定我在写视频和阅读视频时使用的是完全相同的视频代码(检查下面的代码)

def write_video():
out=cv2.VideoWriter(“encrypted.avi”,cv2.VideoWriter_fourcc(*'XVID'),30,(640480))
foreach帧:
输出。写入(帧)
def read_video():
cap=cv2.VideoCapture(“encrypted.avi”)
cap.set(cv2.cap_PROP_FOURCC,cv2.VideoWriter_FOURCC(*'XVID'))
while(cap.isOpened()):
ret,frame=cap.read()
对于我的应用程序,正在写入和读取的帧应该100%匹配。我已经包括了一个图像,突出显示了正在写入的视频的第一帧和正在读取的视频之间的差异。非常感谢您的帮助


这些是压缩伪影,因为您使用的是有损压缩。如果希望帧匹配到最后一位,请将它们作为.PNG文件序列写入,这些文件是无损压缩的,并保留所有内容。当心.PNG会比压缩视频占用更多的硬盘空间。

我想它可能与压缩有关。但是没有任何方法可以使用opencv创建无损视频序列吗?@user10664643使用无损压缩<代码>xvid有损。