c# - DistanceTransform 在 OpenCVSharp 中不起作用吗?

标签 c# opencv

我的代码非常简单——我对图像进行阈值处理,然后尝试对其应用 DistanceTransform:

var source = new Mat(path, ImreadModes.AnyDepth | ImreadModes.AnyColor);
var bgr = new Mat[3];
var thresh = new Mat();
var dist = new Mat();
Cv2.Split(source, out bgr);
Cv2.AdaptiveThreshold(bgr[2], thresh, 255, AdaptiveThresholdTypes.MeanC, ThresholdTypes.Binary, 13, 2);
Cv2.ImShow("thresh", thresh);
Cv2.DistanceTransform(thresh, dist, DistanceTypes.L2, DistanceMaskSize.Mask5);
Cv2.ImShow("dist", dist);

但好像过滤器根本没有应用:

enter image description here

最佳答案

事实证明,未能将图像从 32 位规范化 回落到 8 位(如 this answer 所述)。

添加以下行后,图像符合预期:

Cv2.Normalize(dist, dist, 0, 1, NormTypes.MinMax);

enter image description here

关于c# - DistanceTransform 在 OpenCVSharp 中不起作用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50952525/

相关文章:

Unity3d 中的 c# 方法重写

opencv - 根据任意连续概率密度生成样本

java - 实时 OpenCV 相机上的透明图像叠加

c# - 如何使用 NPOI 2.0 在 excel 2010+ 中保存

c# - 数据未加载到网格中(此错误的发生不一致)

C# - 使用变量作为 MySQL 表名

python - 将图像另存为numpy数组

c# - 为什么我在 Web 客户端中得到结果,即使服务器已关闭?

iphone - 用OpenCV检测的最佳标记类型是什么?如何在iPhone上实时找到2D位置?

opencv - 如何在Windows Phone 8中写入文件(编码)修改后的相机框架