OpenCV 2.4 distanceTransform不支持​​的格式

时间:2016-08-05 19:44:04

标签: c++ opencv

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

  

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

然而,似乎我的输入mat确实是CV_8U(其类型= 16,深度= 0,通道= 3)。我的输出mat声明为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 个答案:

答案 0 :(得分:1)

如果有人好奇的话。确保您的图像是单通道的。我假设CV_8U可以投射到CV_8UC1用于灰度图像,但事实并非如此

您可以使用public boolean hasNulls() { return this.bundle == null || bundle.hasNulls(); } //in bundle public boolean hasNulls() { return this.category == null || category.hasNulls(); } 来减少频道数量。