如何使用c检查两个图像是否相同

时间:2017-04-20 11:40:42

标签: c image comparison libjpeg

我有一个嵌入式设备。在此,它从远程源产生一些输出图像,这些图像是每1秒间隔从实时流中截取的屏幕截图。我需要每隔10分钟将第一张图片与下一张10张图片进行比较,以检测流是否被冻结。

此设备具有c和c ++访问权限且内存非常有限,我将获得的是jpeg图像。我可以使用libjpeg解压缩jpeg图像 我很想使用角点检测和筛选,因为如果图像旋转会导致误报。我也不能opencv

当我在解压缩后与memcmp()进行比较时,我发现它们是不同的。我尝试使用

转换为灰度

cinfo.out_color_space = JCS_GRAYSCALE;

如何将1张图像与第1张图像进行比较。我只需要比较部分,实现管理内存。

更新

我无法比较原始图像,因为它会包含一些附加的timstamp, 如果图像高度为517像素,我只需要比较前400列 所以我的代码是

 // The row_stride is the total number of bytes it takes to store an
 // entire scanline (row).
 row_stride = width * pixel_size;
 while (cinfo.output_scanline < cinfo.output_height)
        {
            unsigned char *buffer_array[1];
            buffer_array[0] = bmp_buffer + \
                       (cinfo.output_scanline) * row_stride;

            jpeg_read_scanlines(&cinfo, buffer_array, 1);
        }
        jpeg_finish_decompress(&cinfo);
        jpeg_destroy_decompress(&cinfo);

        checking_buff = (unsigned char *)malloc((size_t)(row_stride*400));

然后与第一个样本进行memcmp()比较

0 个答案:

没有答案