Python 对图像使用sklearn.card索引?

Python 对图像使用sklearn.card索引?,python,opencv,numpy,scikit-learn,Python,Opencv,Numpy,Scikit Learn,我试图做一些图像比较,首先从查找Jaccard索引开始。我正在使用Jaccard索引的sklearn.metrics实现,使用下面的示例,仅使用一个小的数字数组,它的工作方式与预期的一样 import numpy as np from sklearn.metrics import jaccard_similarity_score #The y_pred represents the values that the program has found y_pred = [0,0,1,0,0,0

我试图做一些图像比较,首先从查找Jaccard索引开始。我正在使用Jaccard索引的sklearn.metrics实现,使用下面的示例,仅使用一个小的数字数组,它的工作方式与预期的一样

import numpy as np
from sklearn.metrics import jaccard_similarity_score

#The y_pred represents the values that the program has found 
y_pred = [0,0,1,0,0,0,1,1,1,1,0,1,0,1,0,0,1,0,1,1,1,0,1,1,0,1,1,1,1,1,0,1,0,1,1,1,0,0,0,0,1,1,0,0,1,1,0,1,1,1]
#The y_true represents the values that are actually correct 
y_true = [1,0,0,1,0,1,1,0,1,1,1,0,1,0,1,1,0,1,1,0,0,1,0,1,0,1,0,1,0,1,1,1,1,1,0,1,1,0,0,0,0,1,1,1,0,1,0,1,1,1]

iou = jaccard_similarity_score(y_true, y_pred)
虽然这是一个错误的

ValueError: unknown is not supported
当我给它输入两个图像时,比如

iou = jaccard_similarity_score(img_true, img_pred)
我不确定该怎么办,我尝试使用OpenCV将图像转换为灰度,并将两个图像都转换为一种类型(浮动),但两种情况都没有成功。

您可以使用
ravel()
将其转换为一维:

img_true=np.array(img_true).ravel()
img_pred=np.array(img_pred).ravel()
iou = jaccard_similarity_score(img_true, img_pred)

发布作为答案,以便问题可以结束:通过执行
img\u-true.flatte()
img\u-pred()

解决展平
img\u-true.flatte()
img\u-pred.flatte()

在您的简单示例中,您有一维列表。我假设图像是二维numpy阵列。试着使用
img\u true.flatte()
看看发生了什么好的是的,成功了@JasonStein谢谢!jaccard_similarity_score已被弃用,并替换为jaccard_scoreravel和flatten。当作为numpy数组的方法调用时,请执行相同的操作!您可以通过将任一答案标记为“已接受”来结束此问题