首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我想对视频中检测到的人脸进行加密以保留身份。然后在视频上执行解密以显示人脸

我想对视频中检测到的人脸进行加密以保留身份。然后在视频上执行解密以显示人脸
EN

Stack Overflow用户
提问于 2020-05-15 09:56:43
回答 1查看 119关注 0票数 0

我在蟒蛇里工作,这就是我试过的-

  • 使用OpenCv来识别人脸并获取视频帧中的人脸坐标。
  • 将该帧和坐标传递给加密algo (我正在使用混沌掩蔽),只在脸周围的边界框内执行加密。
  • 没有将这些坐标保存在外部文件中,以便在加密区域上进行解密,我选择将框边界上的像素值修改为(0,0,000),从而将边框周围的脸标记为边界框。
  • 将加密帧保存在目录中,这样我就可以通过以下代码从这些帧中获得新的视频-

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)像素不存在(可能会发生变化)。所以我不能执行解密。你知道为什么会发生这种情况吗?我怎样才能在不丢失像素的情况下获得帧呢?或者还有别的办法可以做到吗?由于项目提供的一些约束,我无法将坐标存储在外部文件中。

EN

回答 1

Stack Overflow用户

发布于 2020-05-15 14:43:56

avi文件格式是一种容器格式,允许各种音频和视频编码格式。这些格式中有些是无损的,有些是有损的。

Lossy格式试图通过部分丢弃“不必要”数据来压缩数据。您的(0,0,0)像素已被适当优化。

您需要调查用于服务器目的的底层编解码器(如VideoWriter_fourcc(...)所指定的)。这个选择取决于它是无损的,以及在您的环境中提供的支持。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61816533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档