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 中包含的问题