我在蟒蛇里工作,这就是我试过的-
pathIn=‘./ frame /’pathOut = 'videonew.avi‘fps = 15 frame_array = [] frame_array=f in os.listdir(pathIn)如果isfile(join(pathIn,f)) #用于正确排序帧名(key= lambda x: int(x0:-4))在范围内(len(文件)):filename=pathIn + files #读取每个文件img =cv2.imread(文件名)高度、宽度、层数= img.shape大小=(宽度,#将帧插入到图像数组frame_array.append(img) out =cv2中。视频写作器(pathOut,cv2.VideoWriter_fourcc(*'DIVX'),fps,size)用于i在范围(len(Frame_array)):#向图像数组out.write(frame_arrayi)写入操作良好,并创建了视频‘vionew.avi’。现在,为了解密,我使用了下面的代码从‘frames onew.avi’中提取帧。
视频捕获(‘videonew.avi’)成功,图像= vidcap.read()计数=0 path = os.getcwd() + "/test“os.chdir(路径)而成功: cv2.imwrite("%d.png”%计数,图像)#将帧保存为PNGfile成功,image = vidcap.read() #print(‘读取新帧:',成功)计数+= 1
但是,提取的帧会受到某种压缩,而在边界上标记的(0,0,0,0)像素不存在(可能会发生变化)。所以我不能执行解密。你知道为什么会发生这种情况吗?我怎样才能在不丢失像素的情况下获得帧呢?或者还有别的办法可以做到吗?由于项目提供的一些约束,我无法将坐标存储在外部文件中。
发布于 2020-05-15 14:43:56
avi文件格式是一种容器格式,允许各种音频和视频编码格式。这些格式中有些是无损的,有些是有损的。
Lossy格式试图通过部分丢弃“不必要”数据来压缩数据。您的(0,0,0)像素已被适当优化。
您需要调查用于服务器目的的底层编解码器(如VideoWriter_fourcc(...)所指定的)。这个选择取决于它是无损的,以及在您的环境中提供的支持。
https://stackoverflow.com/questions/61816533
复制相似问题