Image processing OpenCV';s距离变换在边界附近产生奇怪的结果

Image processing OpenCV';s距离变换在边界附近产生奇怪的结果,image-processing,opencv,Image Processing,Opencv,我注意到opencv会产生奇怪的结果,例如以下代码: arr = numpy.zeros((6, 6), numpy.uint8) (distance, labels) = cv2.distanceTransform(arr, cv2.cv.CV_DIST_L1, cv2.cv.CV_DIST_MASK_PRECISE) print 'array\n', arr print '\ndistance\n', distance 印刷品: array [[0 0 0 0 0 0] [0 0 0 0

我注意到opencv会产生奇怪的结果,例如以下代码:

arr = numpy.zeros((6, 6), numpy.uint8)
(distance, labels) = cv2.distanceTransform(arr, cv2.cv.CV_DIST_L1, cv2.cv.CV_DIST_MASK_PRECISE)
print 'array\n', arr
print '\ndistance\n', distance
印刷品:

array
[[0 0 0 0 0 0]
 [0 0 0 0 0 0]
 [0 0 0 0 0 0]
 [0 0 0 0 0 0]
 [0 0 0 0 0 0]
 [0 0 0 0 0 0]]

distance
[[ 2.  1.  1.  1.  1.  2.]
 [ 1.  0.  0.  0.  0.  1.]
 [ 1.  0.  0.  0.  0.  1.]
 [ 1.  0.  0.  0.  0.  1.]
 [ 1.  0.  0.  0.  0.  1.]
 [ 2.  1.  1.  1.  1.  2.]]
为什么边界附近有正值?当我执行此操作时,我甚至有更奇怪的结果:

arr = numpy.zeros((6, 6), numpy.uint8)
arr[1:-1,1:-1] = 255

(distance, labels) = cv2.distanceTransform(arr, cv2.cv.CV_DIST_L1, cv2.cv.CV_DIST_MASK_PRECISE)
distance = distance.astype(numpy.uint8)
print 'array\n', arr
print '\ndistance\n', distance
给出:

array
[[  0   0   0   0   0   0]
 [  0 255 255 255 255   0]
 [  0 255 255 255 255   0]
 [  0 255 255 255 255   0]
 [  0 255 255 255 255   0]
 [  0   0   0   0   0   0]]

distance
[[ 8192.  8192.  8192.  8192.  8192.  8192.]
 [ 8192.  8192.  8192.  8192.  8192.  8192.]
 [ 8192.  8192.  8192.  8192.  8192.  8192.]
 [ 8192.  8192.  8192.  8192.  8192.  8192.]
 [ 8192.  8192.  8192.  8192.  8192.  8192.]
 [ 8192.  8192.  8192.  8192.  8192.  8192.]]

更新:我已经使用C++ API测试了类似的代码,我注意到只有当我执行DistaSochange版本返回标签,也就是代码>(VooDistangSurvivin(INPIDROSARD.SRC,OutPuxStudio.DST,OutPoxStay.Labelype,int StistaCype,int MaskSead)< /COD>),其他版本的W/O标签工作正常。(
void distance transform(输入阵列?src、输出阵列?dst、输出阵列?标签、int-distance类型、int-maskSize
)看起来Python包装器总是执行后者的bug。我在这里报告了一个错误:Update:我已经用C++ API测试了类似的代码,我注意到只有当我执行DistaSosio的版本,返回标签和代码>(空距离转换)时,我的错误结果也是一样的。(InputArray?src、OutputArray?dst、OutputArray?标签、int-distanceType、int-maskSize)另一个没有标签的版本运行良好(
无效距离转换(InputArray?src、OutputArray?dst、OutputArray?标签、int-distanceType、int-maskSize
)。看起来python包装器总是执行后一个错误。我在这里报告了一个错误: