由于我是opencv新手,我不知道如何将^{numpy
数组一起使用。
我有两个数组:
a=[1,2,3,4,5]
b=[1,2,3,4]
如何将numpy array
转移到CVhistogram
,并从Cvhistogram
转移到函数参数signature
?
我希望任何回答问题的人都能通过提供的解决方案解释任何使用过的opencv
函数。
“EMD”=earth mover's distance。
更新:-
另外,如果有人能告诉我如何使用numpy
数组设置^{
注:-
*对于那些可能对这个问题感兴趣的人来说,这个答案需要更多的测试。
必须根据权重和坐标定义数组。如果有两个数组a=[1,1,0,0,1]和b=[0,1,0,1]表示一维直方图,则numpy数组应如下所示:
请注意,行数可以不同。列数应为维度+1。第一列包含权重,第二列包含坐标。
下一步是在将numpy数组作为签名输入到CalcEMD2函数之前,将数组转换为CV fc1 Mat。代码如下所示:
注意CalcEMD2的第三个参数是欧几里德距离CV_DIST_L2。第三个参数的另一个选项是曼哈顿距离CV_DIST_L1。
我还想提到的是,我编写代码是为了计算Python中两个2D直方图的地球移动者距离。你可以找到这个代码here。
CV.CalcEMD2期望数组也包括文档中每个信号的权重。
我建议定义权重为1的数组,如下所示:
我知道操作人员想用OpenCV来测量Earth Mover's Distance,但是如果你想用Scipy来测量,你可以用以下方法(Wasserstein距离也称为地球移动者距离):
相关问题 更多 >
编程相关推荐