【问题标题】:openCV: Sobel edge detection gives me assertion erroropenCV:Sobel 边缘检测给了我断言错误
【发布时间】:2011-06-03 10:41:01
【问题描述】:

我正在使用 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 相同。 src 和 dest 的深度也是 IPL_DEPTH_8U。我还尝试使用LoadImageM() 加载图像,以便常量类似于CV_*,但这没有帮助。

我也碰巧发现IPL_DEPTH_8U == CV_8Ufalse

【问题讨论】:

  • 是的,我自己也遇到过这个错误。我喜欢 OpenCV,但我讨厌他们的错误信息。这非常无益,尤其是对于新手而言,但基本上这意味着您的源图像和目标图像的格式不同(例如不同的像素尺寸或不同的通道数)。

标签: python opencv edge-detection


【解决方案1】:

我发现新手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 参考中没有明确记录操作所需的图像格式,因此应该非常注意产生的错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-30
    • 2010-11-26
    • 1970-01-01
    • 2021-03-01
    • 1970-01-01
    • 2016-09-12
    • 1970-01-01
    • 2017-01-02
    相关资源
    最近更新 更多