Python OpenCV cvCreateStructuringElementEx 从图像创建自定义形状

0 投票
2 回答
1823 浏览
提问于 2025-04-16 23:10

有人知道怎么用一张图片来创建一个 cvCreateStructuringElementEx 吗?我想用 opencv.cv.cvCreateStructuringElementEx(),我的结构是一个160x120的黑色bmp图片,上面有一个白色的半椭圆。

im = Image.open("struture.jpeg", "r")
im = im.convert("1")
val = numpy.uint(im.getdata())
gim = opencv.cv.cvCreateStructuringElementEx(im.size[0], im.size[1], im.size[0]/2, im.size[1]/2, opencv.cv.CV_SHAPE_CUSTOM, val)

所以返回了一个错误:

TypeError: in method 'cvCreateStructuringElementEx', argument 6 of type 'int *'

2 个回答

0

用Python 2.7和OpenCV 2.3.0运行相同的指令时,我没有遇到错误。它返回了一个IplConvKernel,正如我预期的那样。

我猜你可能在用旧版的OpenCV,因为你使用的是它们函数的旧命名方式(比如cvCreateStructureElementEx和CreateStructureElementEx)。OpenCV在过去的版本中,Python的接口有过一些小错误,这可能就是其中之一。

在你的环境中,有没有可能把OpenCV更新到2.3.x版本?如果可以的话,确保你也在使用Python 2.6或2.7——据我所知,这两个版本是目前唯一被支持的。

编辑:嗯,刚看到这个问题的日期。没想到我回溯得这么久!不过,希望对某些人有用。

1

这可能解决了你的问题:

int val[9]={0,1,0,1,1,1,0,1,0};

撰写回答