openCV:Sobel边缘检测出现断言错误

5 投票
1 回答
4376 浏览
提问于 2025-04-16 18:53

我在使用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))

我用CreateImage()创建了dest,它的大小和通道数都和src一样。而且srcdest的深度都是IPL_DEPTH_8U。我还尝试用LoadImageM()加载图像,这样常量就变成了CV_*类型,但这也没有解决问题。

我还发现IPL_DEPTH_8U == CV_8U这个判断是false

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文档中并没有明确说明,因此我们应该非常仔细地关注生成的错误信息。

撰写回答