• Python 判断图片相似度的方法


    这里是博主自己使用不同的方法对相似度的测试

    最后还是觉得最后一个方法的准确度比较高,其有效的降低了图片尺寸不一致导致的不准确性

    1. import cv2
    2. import imagehash as imagehash
    3. import numpy as np
    4. from PIL import Image
    5. from skimage import io, transform
    6. from skimage.metrics import structural_similarity as ssim
    7. # image1 = cv2.imread(r'D:\BusinessProject\desktop-program\test_test\IMG\1.jpg')
    8. # image2 = cv2.imread(r'D:\BusinessProject\desktop-program\test_test\IMG\2.jpg')
    9. # image1 = cv2.resize(image1, (400, 400))
    10. # image2 = cv2.resize(image2, (400, 400))
    11. #
    12. # gray1 = cv2.cvtColor(image1, cv2.COLOR_BGR2GRAY)
    13. # gray2 = cv2.cvtColor(image2, cv2.COLOR_BGR2GRAY)
    14. #
    15. # ssim_score = cv2.compareSSIM(gray1, gray2)
    16. # print("SSIM Score:", ssim_score)
    17. # image1 = io.imread(r'D:\BusinessProject\desktop-program\test_test\IMG\1.jpg')
    18. # image2 = io.imread(r'D:\BusinessProject\desktop-program\test_test\IMG\2.jpg')
    19. #
    20. # # 计算图像尺寸
    21. # image1_height, image1_width = image1.shape[:2]
    22. # image2_height, image2_width = image2.shape[:2]
    23. #
    24. # # 设置窗口大小为图像中较小的一侧
    25. # win_size = min(image1_height, image1_width, image2_height, image2_width)
    26. #
    27. # # 计算两个图片的相似度
    28. # similarity = ssim(
    29. # image1,
    30. # image2,
    31. # win_size=min(win_size, 7), # 确保窗口大小小于等于较小的一侧,并至少为 7
    32. # multichannel=True
    33. # )
    34. #
    35. # # 打印相似度
    36. # print("图片相似度:", similarity)
    37. # image1 = Image.open(r'D:\BusinessProject\desktop-program\test_test\IMG\1.jpg')
    38. # image2 = Image.open(r'D:\BusinessProject\desktop-program\test_test\IMG\4(1).jpg')
    39. # phash1 = imagehash.phash(image1)
    40. # phash2 = imagehash.phash(image2)
    41. # hamming_distance = phash1 - phash2
    42. # print("相似度得分: ", 1 - (hamming_distance / len(phash1.hash)) )
    43. image1 = cv2.imread(r'D:\BusinessProject\desktop-program\test_test\IMG\1.jpg', cv2.IMREAD_GRAYSCALE)
    44. image2 = cv2.imread(r'D:\BusinessProject\desktop-program\test_test\IMG\4(1).jpg', cv2.IMREAD_GRAYSCALE)
    45. orb = cv2.ORB_create()
    46. keypoints1, descriptors1 = orb.detectAndCompute(image1, None)
    47. keypoints2, descriptors2 = orb.detectAndCompute(image2, None)
    48. bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True)
    49. matches = bf.match(descriptors1, descriptors2)
    50. matches = sorted(matches, key=lambda x: x.distance)
    51. similarity_score = len(matches) / len(keypoints1) * 100
    52. print(similarity_score)

  • 相关阅读:
    【动态规划】123. 买卖股票的最佳时机 III、188. 买卖股票的最佳时机 IV
    20221205今天的世界发生了什么
    [附源码]Python计算机毕业设计SSM科研信息管理(程序+LW)
    代码随想录刷题记录day36 整数拆分+不同的二叉搜索树
    安装python扩展库
    Pytorch Pytorch+深度学习神经网络相关学习收获
    【小尘送书-第八期】《小团队管理:如何轻松带出1+1>2的团队》
    建模杂谈系列179 博弈推演模型探索
    前端react面试题总结
    OSI七层模型&TCP四层模型横向对比
  • 原文地址:https://blog.csdn.net/gongzairen/article/details/133064721