Python 对图像使用sklearn.card索引?
我试图做一些图像比较,首先从查找Jaccard索引开始。我正在使用Jaccard索引的sklearn.metrics实现,使用下面的示例,仅使用一个小的数字数组,它的工作方式与预期的一样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
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数组的方法调用时,请执行相同的操作!您可以通过将任一答案标记为“已接受”来结束此问题