5

我正在使用 python-openCV。使用 Sobel 边缘检测时,出现以下断言错误:

src.size() == dst.size() && src.channels() == dst.channels() && ((src.depth() == CV_8U && (dst.depth() == CV_16S || dst.depth() == CV_32F)) || (src.depth() == CV_32F && dst.depth() == CV_32F))

我创建了destusing CreateImage(),它的大小和通道与src. src 和 dest 的深度也是 IPL_DEPTH_8U。我还尝试使用加载图像,LoadImageM()以便常量是一种类型CV_*,但这没有帮助。

我也碰巧发现IPL_DEPTH_8U == CV_8Ufalse

4

1 回答 1

5

我发现对于openCV的新手来说解决方案有点棘手:

src = cv.LoadImageM('src.png', cv.CV_LOAD_IMAGE_GRAYSCALE)
dest = cv.CreateMat(src.height, src.width, cv.CV_16S)
cv.Sobel(src, dest, 1, 1)

需要注意的重要一点是,API 参考中没有明确记录操作所需的图像格式,因此应该非常注意产生的错误。

于 2011-06-03T11:20:57.573 回答