我试图使用cv::distanceTransform((函数,但在运行时出现以下错误:
OpenCV错误:不支持的格式或格式组合(源图像必须是8uC1,距离图必须是32fC1(在情况下为8uC1简单L1距离变换的((在cvDistTransform、中
然而,我的输入垫似乎确实是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);
谢谢你的帮助!
如果其他人好奇。确保你的图像是单通道的。我认为CV_8U可以转换为CV_8UC1用于灰度图像,但并非如此
您可以使用cv::cvtColor(src, src, CV_BGR2GRAY);
来减少通道的数量。