1

我有一个 10 位灰度图像,我喜欢使用 cvSobel 函数。文档不清楚它是否可以接受 16 位灰度图像。当我尝试完成这项工作时,我得到了 OpenCV 的异常。

在我的 VC++ 中,当我查看函数时,这就是我所看到的。

 CVAPI(void) cvSobel( const CvArr* src, CvArr* dst,
            int xorder, int yorder,
            int aperture_size CV_DEFAULT(3));

我试图使目的地 32F 但仍然崩溃。

4

1 回答 1

2

在这里说:

为避免溢出,如果源图像为 8 位,则该函数需要 16 位目标图像。可以使用 cvConvertScale 或 cvConvertScaleAbs 函数将结果转换回 8 位。除了 8 位图像,该函数还可以处理 32 位浮点图像。源和目标都必须是相同大小或 ROI 大小的单通道图像。

因此,您可以将源转换为 8 位,然后将目标声明为 16 位。

如果这不起作用,您可以发布代码的特定部分也会有所帮助。

于 2012-09-05T01:49:55.880 回答