import numpy as np
import cv2
from skimage.metrics import structural_similarity as ssim
img_list = ['train_set/train01.jpg',
'train_set/train02.jpg',
'train_set/train03.jpg',
'train_set/train04.jpg',
'train_set/train05.jpg',
'train_set/train06.jpg',
'train_set/train07.jpg',
'train_set/train08.jpg',
'train_set/train09.jpg',
'train_set/train10.jpg']
def compute_ssim(img1_path, img2_path):
imageA = cv2.imread(img1_path)
imageB = cv2.imread(img2_path)
imageB = np.resize(imageB, (imageA.shape[0], imageA.shape[1], imageA.shape[2]))
grayA = cv2.cvtColor(imageA, cv2.COLOR_BGR2GRAY)
grayB = cv2.cvtColor(imageB, cv2.COLOR_BGR2GRAY)
(score, diff) = ssim(grayA, grayB, full=True)
return score
def get_S1_list():
rst_list1 = []
for i in range(len(img_list)):
for j in range(len(img_list)):
x = img_list[i]
y = img_list[j]
if j <= i:
continue
if i != j:
v = compute_ssim(x, y)
rst_list1.append(v)
rst = np.array(rst_list1).reshape((len(rst_list1), 1))
return rst
print(get_S1_list())
报错:
Traceback (most recent call last):
File "C:/Users/yxyst/Desktop/c1983717/4_sim_cals.py", line 52, in <module>
print(get_S1_list())
File "C:/Users/yxyst/Desktop/c1983717/4_sim_cals.py", line 47, in get_S1_list
v = compute_ssim(x, y)
File "C:/Users/yxyst/Desktop/c1983717/4_sim_cals.py", line 31, in compute_ssim
grayB = cv2.cvtColor(imageB, cv2.COLOR_BGR2GRAY)
TypeError: src data type = 17 is not supported
一样的问题,参考
https://stackoverflow.com/questions/60626980/opencv-type-17-is-not-supported
你想把B的尺寸resize成A对吧,如果不是unit8类型的问题的话,试试后面再加个参数,比如缩小cv2.resize(imageB,(imageA.shape[0], imageA.shape[1], imageA.shape[2]), interpolation=cv2.INTER_AREA)
cvtColor是彩色转灰度函数,你要保证你读取出来的imageB是彩色图类型。