首页 > 电脑专区 > windows >

python3用opencv3进行结构化相似度判别

来源:互联网 2023-02-20 17:56:43 419

相似度判断除了直方图之外,还有一种结构化相似度判别也很好Sgz办公区 - 实用经验教程分享!

就是采用compare_ssim函数进行处理,该函数在skimage.measure里Sgz办公区 - 实用经验教程分享!

需要导出即可.Sgz办公区 - 实用经验教程分享!

工具/原料

  • pycharm win7环境
  • opencv3 python3 skimage.measure

方法/步骤

  • 1

    首先需要通过from skimage.measure import compare_ssim进行导出Sgz办公区 - 实用经验教程分享!

    Sgz办公区 - 实用经验教程分享!

    import cv2 as cvSgz办公区 - 实用经验教程分享!

    import numpy as npSgz办公区 - 实用经验教程分享!

    import copySgz办公区 - 实用经验教程分享!

    from matplotlib import pyplot as pltSgz办公区 - 实用经验教程分享!

    from skimage.measure import compare_ssimSgz办公区 - 实用经验教程分享!

    Sgz办公区 - 实用经验教程分享!

    image = cv.imread('c:meiping1.png')Sgz办公区 - 实用经验教程分享!

    cv.imshow("image", image)Sgz办公区 - 实用经验教程分享!

    pic = cv.imread('c:meiping2.png')Sgz办公区 - 实用经验教程分享!

    pic = cv.imread('c:meiping3.png')Sgz办公区 - 实用经验教程分享!

    # pic = cv.imread('c:meiping4.png')Sgz办公区 - 实用经验教程分享!

    cv.imshow("pic", pic)Sgz办公区 - 实用经验教程分享!

    python3用opencv3进行结构化相似度判别Sgz办公区 - 实用经验教程分享!

    python3用opencv3进行结构化相似度判别Sgz办公区 - 实用经验教程分享!

  • 2

    转化成灰度, 注意这个和直方图比较相似度不同。Sgz办公区 - 实用经验教程分享!

    grayImage = cv.cvtColor(image, cv.COLOR_BGR2GRAY)Sgz办公区 - 实用经验教程分享!

    cv.imshow("grayImage", grayImage)Sgz办公区 - 实用经验教程分享!

    Sgz办公区 - 实用经验教程分享!

    grayPic = cv.cvtColor(pic, cv.COLOR_BGR2GRAY)Sgz办公区 - 实用经验教程分享!

    cv.imshow("grayPic", grayPic)Sgz办公区 - 实用经验教程分享!

    python3用opencv3进行结构化相似度判别Sgz办公区 - 实用经验教程分享!

    python3用opencv3进行结构化相似度判别Sgz办公区 - 实用经验教程分享!

  • 3

    列出直方图对比图,直观明了。Sgz办公区 - 实用经验教程分享!

    plt.subplot(2, 1, 1)Sgz办公区 - 实用经验教程分享!

    plt.hist(grayImage[0].ravel(), 256, [0, 256])Sgz办公区 - 实用经验教程分享!

    plt.subplot(2, 1, 2)Sgz办公区 - 实用经验教程分享!

    plt.hist(grayPic[0].ravel(), 256, [0, 256])Sgz办公区 - 实用经验教程分享!

    plt.show()Sgz办公区 - 实用经验教程分享!

    结果太令人惊讶 又核对了代码 是两个不同的灰度图,这难道是直方图的问题?Sgz办公区 - 实用经验教程分享!

    注意这种方式是有问题的!Sgz办公区 - 实用经验教程分享!

    python3用opencv3进行结构化相似度判别Sgz办公区 - 实用经验教程分享!

  • 4

    plt.subplot(2, 1, 1)Sgz办公区 - 实用经验教程分享!

    #图像,通道[0]-灰度图,掩膜-无,灰度级,像素范围Sgz办公区 - 实用经验教程分享!

    hist_grayImage = cv.calcHist([grayImage],[0],None,[256],[0,256])Sgz办公区 - 实用经验教程分享!

    plt.plot(hist_grayImage)Sgz办公区 - 实用经验教程分享!

    plt.subplot(2, 1, 2)Sgz办公区 - 实用经验教程分享!

    hist_grayPic = cv.calcHist([grayPic],[0],None,[256],[0,256])Sgz办公区 - 实用经验教程分享!

    plt.plot(hist_grayPic)Sgz办公区 - 实用经验教程分享!

    plt.show()Sgz办公区 - 实用经验教程分享!

    python3用opencv3进行结构化相似度判别Sgz办公区 - 实用经验教程分享!

  • 5

    通过compare_ssim计算相似度或者叫SSIM图像质量(图像评价)Sgz办公区 - 实用经验教程分享!

    (xiangsidu, delta) = compare_ssim(grayImage, grayPic, full=True)print(xiangsidu, delta)Sgz办公区 - 实用经验教程分享!

    输出结果。Sgz办公区 - 实用经验教程分享!

    python3用opencv3进行结构化相似度判别Sgz办公区 - 实用经验教程分享!

  • 6

    评价结果是0.56 基本和目视感觉差不多。说明这种结构化判断方法还是可以的。Sgz办公区 - 实用经验教程分享!

  • 6本页面未经许可获取自百度经验
  • 注意事项

    • 注意直方图的处理方法
    • 这个要先转灰度再计算

    以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!Sgz办公区 - 实用经验教程分享!


    标签: python操作系统结构判别

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码