Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过计算两个不同形状的距离来计算形状上下文错误_Python_Python 2.7_Python 3.x_Opencv_Shape Context - Fatal编程技术网

Python 通过计算两个不同形状的距离来计算形状上下文错误

Python 通过计算两个不同形状的距离来计算形状上下文错误,python,python-2.7,python-3.x,opencv,shape-context,Python,Python 2.7,Python 3.x,Opencv,Shape Context,简而言之,我想通过“形状-背景”匹配来比较不同的道路标记 你可以在下面看到我的第一个问题: 我解决了第一个问题,但现在出现了新的错误。这是我的密码: import cv2 import numpy as np # read data datapath = "/Users/output/test/"; a = cv2.imread(datapath+"template_orig.png"); b = cv2.imread(datapath+"template.png"); imgray_a =

简而言之,我想通过“形状-背景”匹配来比较不同的道路标记

你可以在下面看到我的第一个问题:

我解决了第一个问题,但现在出现了新的错误。这是我的密码:

import cv2
import numpy as np

# read data
datapath = "/Users/output/test/";
a = cv2.imread(datapath+"template_orig.png");
b = cv2.imread(datapath+"template.png");

imgray_a = cv2.cvtColor(a,cv2.COLOR_BGR2GRAY)
ret_a,thresh_a = cv2.threshold(imgray_a,127,255,0)

imgray_b = cv2.cvtColor(b,cv2.COLOR_BGR2GRAY)
ret_b,thresh_b = cv2.threshold(imgray_b,127,255,0)


# find contours
_, ca, _ = cv2.findContours(thresh_a, cv2.RETR_CCOMP, cv2.CHAIN_APPROX_SIMPLE)
_, cb, _ = cv2.findContours(thresh_b, cv2.RETR_CCOMP, cv2.CHAIN_APPROX_SIMPLE)
print(np.shape(ca[0]), np.shape(cb[0]))

# generate distance --> Hausdorff OR ShapeContext
hd = cv2.createHausdorffDistanceExtractor()
sd = cv2.createShapeContextDistanceExtractor()

d1 = hd.computeDistance(ca[0],cb[0])
d2 = sd.computeDistance(ca[0],cb[0])


print(d1, " ", d2)
当我比较a时(原始转向箭头) 使用b(提取的转向箭头)没有问题,但是当我将ac(任何其他测试“形状匹配”算法)进行比较时,出现以下错误:

OpenCV错误:在gemmImpl文件/Users/travis/build/skvark/OpenCV python/OpenCV/modules/core/src/matmul.cpp中断言失败(type==cv64fc2), 第1218行

回溯(最后一次调用):文件“/test\u shape.py”,第74行,在 d2=sd.计算距离(ca[0],cb[0])

cv2.error:/Users/travis/build/skvark/opencvpython/opencv/modules/core/src/matmul.cpp:1218: 错误:(-215)类型==函数gemmImpl中的CV_64FC2


错误只发生在“形状上下文”的生成距离函数中,而不是“Hausdorff”的生成距离函数中。好的,我认为问题是,abac没有相同的像素高度(a:131 x 32px,b/c:29 x 18 px)。当我将bc的图像大小更改为更高分辨率(如131 x 81 px)时,误差消失,并且正在计算“形状上下文”的距离