如何在cv2 Python API中使用OpenCV的reduce
我查看了文档,但发现它不太完整:没有提到rtype
参数到底是什么。
我觉得它应该是一个减少类型,但我找不到像cv2.CV_REDUCE_SUM
这样的变量……我发现很多使用不同变量名的函数都有这个问题。请问在cv2 API中,找到正确的名称的最好方法是什么?
3 个回答
2
如果你在使用 Open CV 3.x 或更高版本时看到这个内容,这些常量已经被重命名为 cv2.REDUCE_SUM
、cv2.REDUCE_AVG
、cv2.REDUCE_MAX
和 cv2.REDUCE_MIN
。
下面是一个可以正常工作的 reduce 函数的例子:
reducedArray = cv2.reduce(im, 0, cv2.REDUCE_MAX)
4
现在的新cv2库里有一些东西没有被包含进去。通常这些是一些常量,它们还没有被转移到cv2中,仍然只在cv里。下面有段代码可以帮助你找到这些常量:
import cv2
import cv2.cv as cv
nms = [(n.lower(), n) for n in dir(cv)] # list of everything in the cv module
nms2 = [(n.lower(), n) for n in dir(cv2)] # list of everything in the cv2 module
search = 'window'
print "in cv2\n ",[m[1] for m in nms2 if m[0].find(search.lower())>-1]
print "in cv\n ",[m[1] for m in nms if m[0].find(search.lower())>-1]
7
我发现可以在以下包中找到合适的变量。
cv2.cv
如果你在uint8类型的图像上使用CV_REDUCE_SUM操作,你需要明确提供一个范围更大的数据类型参数,以避免溢出(比如说,
slice = cv2.reduce(image, 1, cv2.cv.CV_REDUCE_SUM, dtype=numpy.int32)
如果你使用CV_REDUCE_AVG操作,结果不会溢出,所以设置数据类型参数是可选的。