OpenCV 2.4 distanceTransform 不支持的格式

Posted

技术标签:

【中文标题】OpenCV 2.4 distanceTransform 不支持的格式【英文标题】:OpenCV 2.4 Unsupported format for distanceTransform 【发布时间】:2016-08-05 19:44:04 【问题描述】:

我正在尝试使用 cv::distanceTransform() 函数,但在运行时出现以下错误:

OpenCV 错误:不支持的格式或格式组合(来源 图像必须为 8uC1,距离图必须为 32fC1(或 8uC1,以防万一 cvDistTransform 中的简单 L1 距离变换)),

但是,我的输入垫似乎确实是 CV_8U(它的类型=16,深度=0,通道=3)。我的输出垫被声明为 CV_32FC1。违规代码:

     //...Apply laplacian
     //Convert to CV_8U
     cv::convertScaleAbs(image_laplacian, image_laplacian);

     //Distance transform
     cv::Mat edge_distance(image_laplacian.rows, image_laplacian.cols, CV_32FC1);
     cv::distanceTransform(image_laplacian, edge_distance, CV_DIST_L2, 5);

感谢您的帮助!

【问题讨论】:

【参考方案1】:

如果有人好奇的话。确保您的图像是单通道的。我以为 CV_8U 可以为灰度图像转换为 CV_8UC1,但事实并非如此

您可以使用cv::cvtColor(src, src, CV_BGR2GRAY); 减少频道数。

【讨论】:

以上是关于OpenCV 2.4 distanceTransform 不支持的格式的主要内容,如果未能解决你的问题,请参考以下文章

带有 QtCreator 的 Ubuntu 12.04 上的 OpenCV 2.4

OpenCV 2.4 distanceTransform 不支持的格式

OpenCV 2.4 staticlib 链接仍然依赖 DLL? [视窗]

OpenCV 2.4:Windows 中 Qt 中包含的问题

OpenCV 2.4 VideoCapture 在 Windows 上不起作用

OpenCV 2.4 VideoCapture 在 Windows 上不起作用