關於使用OpenCV求解wasserstein distance的一些問題及解決方法

我之前在做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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章