2009-09-22 170 views
0

我创建了一个录像机,它将录制内容存储到一个文件中。我想实现一种方法,每秒钟读取文件,比较当前文件与旧值(旧的1秒),并将差异写入单独的文件。如何比较两个文件并提取差异?

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

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

+0

我想尝试使用一些算法来找到最长的公共子序列(s)(http:// en.wikipedia.org/wiki/Longest_common_subsequence_problem)要比较的部分。那些不属于共同子序列的部分显然必须有区别...但是,我不确定这种方法是否适合您的用例。你想在这里实现什么? – Dirk 2009-09-22 10:20:13

回答

0

对于视频文件,您将有太多不同的数据,因为有非完美的(物理上非完美的)相机。我怀疑你可以使用通用的DIFF算法进行视频流比较。

0

它听起来像你正在尝试做运动检测。 的基本思想是从两个帧提取的像素,让您得到:

int p1[],p2[]; 

然后,convert他们灰度,然后你。减去从另一个:

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

的东西是由于jpeg压缩等原因,即使没有任何变化,两个后续图像也不会完全相同。所以你想要查找大于某个阈值的像素。如果你发现他们,你有运动。

如果您的相机正在移动,则此方法将不起作用,因为您的所有像素都有移动。

相关问题