C# OpenCV 通过高度图去筛选轮廓

csharp 复制代码
//输入图像
threshCropMap.ImWrite("D:\\test\\threshCropMap_BeforeFilterByBlob.bmp");
//设定我们要筛选的高度
var ResultHeight = 60;
//创建对应高度的图像,由于是高度信息图,所有要使用32位来存放数据
Mat mat = new Mat(filter.Rows, filter.Cols, MatType.CV_32F, new Scalar(ResultHeight));
mat.ImWrite("D:\\test\\mat.bmp");

Mat ResultMat = new Mat(filter.Rows, filter.Cols, MatType.CV_32F, new Scalar(0));
//将基础图像减去高度图像,将低于指定高度的图像置为负值
Cv2.Subtract(threshCropMap, mat, ResultMat);
ResultMat.ImWrite("D:\\test\\ResultMat.bmp");
//将负值的数值置为0,仅保留大于指定高度的图像
Mat mask = new Mat();
Cv2.Compare(ResultMat, new Scalar(0), mask, CmpType.GT);
mask.ImWrite("D:\\test\\mask.bmp");

 Mat resultMat = new Mat();
ResultMat.CopyTo(resultMat, mask);
//将最终图像转换为8位灰度图,方便后续处理结果
resultMat.ConvertTo(resultMat, MatType.CV_8UC1);
int num = resultMat.CountNonZero();
Point[][] contours;
HierarchyIndex[] hierarchy;
Cv2.FindContours(resultMat, out contours, out hierarchy, RetrievalModes.External, ContourApproximationModes.ApproxSimple);            




相关推荐
钰fly3 小时前
C#异常处理 递归算法
c#
ejjdhdjdjdjdjjsl4 小时前
JSON序列化与反序列化实战指南
数据库·microsoft·c#
编码小哥9 小时前
OpenCV形态学操作:腐蚀与膨胀原理解析
人工智能·opencv·计算机视觉
格林威9 小时前
跨设备图像拼接:统一色彩偏差的8个核心策略,附OpenCV+Halcon实战代码!
人工智能·数码相机·opencv·机器学习·计算机视觉·视觉检测·工业相机
沃达德软件11 小时前
视频侦查技术揭秘
人工智能·opencv·计算机视觉·视觉检测·音视频·实时音视频·视频编解码
Macbethad12 小时前
区块链技术在分布式系统中的应用实践技术报告
开发语言·c#
编码小哥12 小时前
OpenCV高级形态学变换:梯度、顶帽与黑帽
人工智能·opencv·计算机视觉
编码小哥12 小时前
OpenCV轮廓检测与绘制实战
人工智能·opencv·计算机视觉
玩泥巴的13 小时前
如何在.NET系统中快速集成飞书任务分配能力
c#·.net·二次开发·飞书
bugcome_com13 小时前
深入理解 C# 特性(Attribute):概念、实现与实战
c#·.net