当前位置: 首页 > article >正文

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

//输入图像
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);            

初始彩色图

threshCropMap
mat
ResultMat
在这里插入图片描述


http://www.kler.cn/a/404703.html

相关文章:

  • docker安装zabbix +grafana
  • iOS应用网络安全之HTTPS
  • 丹摩|丹摩助力selenium实现大麦网抢票
  • js批量输入地址获取经纬度
  • WSL2 ubuntu配置redis
  • 什么是React Native?
  • 智慧路面管理系统平台 智慧照明 智慧市政 智慧交通
  • 40分钟学 Go 语言高并发:Go Channel使用与实践教程
  • k8s 集群安装
  • RTC QoS方法十三.(ReedSolomonFEC简介)
  • 音频信号采集前端电路分析
  • android版本ijkplayer2024编译笔记
  • 开源模型应用落地-qwen模型小试-调用Qwen2-VL-7B-Instruct-更清晰地看世界-vLLM+Docker(七)
  • CSS3中的响应式布局(媒体查询)之媒体类型、媒体特性、运算符
  • list =和addAll在List<实体类>数组的应用
  • 刘艳兵-DBA041-使用常用的数据泵功能导出时,主要需要关注以下哪些步骤?
  • Kafka 2.8 源码导读
  • 038集——quadtree(CAD—C#二次开发入门)
  • Python操作neo4j库py2neo使用(一)
  • Qt模块化编程:创建pri文件,写入函数并调用模块
  • Slate文档编辑器-WrapNode数据结构与操作变换
  • 网络安全核心目标CIA
  • Kingfisher 下载ENA、NCBI SRA、AWS 和 Google Cloud)序列数据和元数据
  • 游戏行业趋势:“AI、出海、IP”大热下,如何提升竞争力?
  • Vue:后端返回二进制文件,前端如何实现浏览器自动下载?
  • 零基础学Python之数据结构 -- 01篇