繁体   English   中英

如何比较两个文件并提取差异?

[英]how to compare two files and extract the difference?

我创建了一个将记录存储到文件的录像机。 我想实现一种方法,该方法每秒读取一次文件,将当前文件与旧值(旧1秒)进行比较,并将差异写入单独的文件中。

如果有人能解释如何做或写一个简单的例子,我将非常感激。 我猜必须有一个线程可以通过在给定的时间段内调用自定义方法compareFiles(File currentFile,File oldFile)将新值与旧值进行比较。 也可以将旧文件另存为临时文件,并将原始路径中的当前文件与临时文件进行比较。

关于改进所描述的逻辑的任何建议都值得欢迎!

由于具有不完美(物理上不完美)的相机,因此视频文件的数据太多了。 我怀疑您可以使用一般的DIFF算法进行视频流比较。

听起来您正在尝试进行运动检测。 基本思想是从两帧中提取像素,因此您将获得:

int p1[],p2[];

然后, 它们转换为灰度,然后从另一个中减去一个:

int diff[] = new int[pixels1.length];
for(int i=0;i<pixels1.length;i++) diff[i] = Math.abs(p1[i] - p2[i]);

事实是,由于jpeg压缩等,即使没有任何变化,两个后续图像也不相同。 因此您要查找大于某个阈值的像素。 如果找到他们,您就会有动静。

如果您的相机在移动,则此方法将不起作用,因为那样一来,您在所有像素中都有运动。

您应该看看http://www.lavrsen.dk/twiki/bin/view/Motion/WebHome如何执行此操作。 如果您尝试进行简单的“一对一”差异,则噪声将是一个大问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM