计算dice系数,用于图像分割之后的精度检测python

只计算单个模板图片和一堆测试图片

import cv2
import os
import numpy as np
path = './dice/'
files = os.listdir(path)
s2 = cv2.imread("./guanfangyanmo/022.png", 0)# 模板
row, col = s2.shape[0], s2.shape[1]
d = []
for file in files:
    s1 = cv2.imread(path+file, 0)# 读取配准后图像
    print(file)
    s = []
    for r in range(row - 10):
        for c in range(col - 10):
            if s1[r][c] == s2[r][c]:# 计算图像像素交集
                s.append(s1[r][c])
    m1 = np.linalg.norm(s)
    m2 = np.linalg.norm(s1.flatten()) + np.linalg.norm(s2.flatten())
    d.append(2*m1/m2)
#     print(2*m1/m2)
print(d)

计算两个文件夹的图片

import cv2
import os
import numpy as np

for i in range(38, 40):
    s2 = cv2.imread("./dice/" + str(i) + ".png", 0)  # 模板
    row, col = s2.shape[0], s2.shape[1]
    s1 = cv2.imread("./dice2/" + str(i) + ".jpg", 0)  # 读取配准后图像
    d = []
    s = []
    for r in range(row):
        for c in range(col):
            if s1[r][c] == s2[r][c]:  # 计算图像像素交集
                s.append(s1[r][c])
    m1 = np.linalg.norm(s)
    m2 = np.linalg.norm(s1.flatten()) + np.linalg.norm(s2.flatten())
    d.append(2*m1/m2)
    msg = "这是第{}张图的dice系数".format(i) + str(2 * m1 / m2)
    # print(2*m1/m2)
    print(msg)
# print(d)