我需要从Windows 10中的“资产”文件夹中复制图像,该图像具有自动下载的背景图像。其中一些图像将永远不会显示,并在某些时候被删除。为了确保在删除所有新图像之前看到了所有新图像,我创建了一个将这些图像复制到不同文件夹的Python脚本。为了高效,我需要一种方法来比较那些只复制新图像的图像。我需要做的就是让一个需要两个图像的功能与一个简单的方法进行比较,以确保两个图像在视觉上不相同。一个简单的测试就是将图像文件复制并将其与原件进行比较,在这种情况下,该功能应该能够辨别出这些图像是相同的。 如何比较python中的两个图像?我需要简单有效的方法来做到这一点。我读过的几个答案有点复杂。在Python中比较两个图像的简单方法
回答
我以前也遇到过类似的问题。我使用PIL.Image.tobytes()将图像转换为字节对象,然后在字节对象上调用hash()并比较哈希值。
从您的经历中,您是否遇到过这种情况无效? – Amani
不,我只是用它来捕捉一些截图,并确保我不做重复的副本。除非你正在处理数十亿的图像,否则我不会担心碰撞。 – user2341726
@Amani我强烈建议你使用'hashlib'中的加密哈希函数来代替这个哈希函数,而不是内置'哈希函数'来减少哈希冲突的机会。除非将图像文件转换为不同的图像文件格式,否则实际上不需要使用'PIL.Image.tobytes'。只需使用文件中字节的散列值。 –
在python比较两个图像
选项1: 使用ImageChops模块和它包含的数字算术图像操作的,所谓的信道操作(“印章”)。这些可以用于各种目的,包括特殊效果,图像合成,算法绘画等等。
实施例:
ImageChops.difference(图像1,图像2)⇒图像
返回两个图像之间的差异的绝对值。
出= ABS(图像1 - 图像2)
选项2:
Scikit-image为SciPy的图像处理工具箱。
在scikit-image中,请使用compare_ssim到计算两个图像之间的平均结构相似性指数。
参考文献:
- 1. 在C中比较两个列表的简单方法#
- 2. Python:如何以最简单的方式比较两个数组
- 3. 比较两个列表最简单的方法是什么?
- 4. 简单的方法来比较两个对象?
- 5. 在JavaScript中比较两个图像
- 6. OSX:比较两个图像
- 7. 比较两个图像android
- 8. 比较两个清单除方法
- 9. 简单的比较2 ArrayList的方法
- 10. 简单的比较双数的方法
- 11. 比较Android中的两个图像
- 12. 比较IOS中的两个图像8
- 13. 使用不安全的方法比较两个图像数据
- 14. 最快的方法来比较两个图像
- 15. 用于比较两个图像与方向的算法
- 16. Python简单数字比较
- 17. 算法比较两个图像与模式 - Python
- 18. Python:用户界面图像擦除,比较两个图像
- 19. 哪个是比较python中两个float值最快的方法?
- 20. SubSonic 3/ActiveRecord - 比较两条记录的简单方法?
- 21. 比较两个在Python
- 22. 最简单的方法来比较SQL Server 2008中的两个表模式?
- 23. 比较单个地图中的值python
- 24. 比较Python中两个列表中的两个单词
- 25. 最有效的方法来比较python中的两个字典
- 26. 比较两个图像图标?
- 27. 如何比较python中两个不同文件中的两个图像文件
- 28. 比较图像的两个坐标值
- 29. 比较低质量的两个图像
- 30. 两幅图像的图像比较
你是什么意思的“比较”?完全像素值或具有不同质量的类似图像? – minhhn2910
而比较功能只需要返回“相同”或“不同”? – minhhn2910
我想你看到的复杂答案是比较实际的图像。你并不需要那样做。您只需测试两个文件是否包含完全相同的字节。而简单的做法是比较这些文件的哈希值。你可以使用(例如)标准'hashlib'模块的MD5或SHA-256。 –