我之前在做wasserstein distance時運行的一段代碼,如下:
import cv2 as cv
p = [0,5,9]
p = [2,5,7]
pp=cv.fromarray(p)
qq=cv.fromarray(q)
emd=cv.CalcEMD2(pp,qq,cv.CV_DIST_L2)
運行的時候先是提示:“No model named cv2”
於是我就在網上尋找資料,我使用的是Windows + pycharm + anaconda3,有大佬說是需要安裝 opencv-contrib-python和opencv-python,於是我在pycharm中安裝後還是運行不出來,我又在Windows命令窗口pip install opencv-contrib-python和pip install opencv-python 進行安裝,再進入pycharm進行環境的修改就成了。但是在運行的時候又老是提示:“model cv2.cv2 has no attribute ‘fromarray’ ”。而且cv中的其他屬性也是運行不不來,例如:cv.imshow() cv.imread()
直到我看一位大佬那裏看到了這個:EMD距離Python實現(wasserstein distance,又稱爲EMD 距離)
於是我換了一種思路,試着運行了一下代碼:
import numpy as np
from scipy.stats import wasserstein_distance
p = [0,5,9]
q = [2,5,7]
w = wasserstein_distance(q,p)
print(w)
結果完美出來了:
1.3333333333333335
Process finished with exit code 0