使用C++或Python进行图像比较

0 投票
4 回答
2667 浏览
提问于 2025-04-17 06:42

我在找一个C++或Python的库,用来比较两张JPEG或BMP格式的图片。具体来说,我想逐个像素地比较它们。比如说,假设我们有图片1和图片2,每张图片都有500个像素;我需要知道每个像素的颜色值,也就是RGB值,比如R=24,G=15,B=4,然后把这些值和图片2中同样位置的像素进行比较。

另外,我还需要设置一个容差值,如果两张图片在这个容差范围之外还有差异,我还想知道它们的总百分比差异。

有没有这样的库呢?如果有的话,请告诉我,或者给我一些建议让我可以开始。

4 个回答

1

我建议你使用OpenCV。它是用C语言写的,不过也有Python的接口可以用。可能还有其他的解决方案,比如自己手动处理或者使用其他库,但我觉得OpenCV绝对是最受欢迎的图像处理库。

比如,你可以创建一张新图像,显示两张图片之间的差异,然后数一下不同的像素,或者根据颜色来判断你的结果等等。

1

你试过 OpenCV 吗?它是用C++编写的。

3

如果你只需要逐个像素进行比较,使用 numpy 可能会让你的程序跑得更快。

Numpy 是一个非常快速的 Python 模块,它可以处理多维数组(这些数组里的数据类型都是一样的,就像像素数据一样),并且可以对数组中的每个元素进行操作。

比如,“告诉我两张图片的像素的透明度值在哪些地方差异超过 0.5”,可以用类似下面的代码来实现:

img_one[..., ALPHA] - img_two[..., ALPHA] > 0.5

希望这对你有帮助!

撰写回答