OpenCVSharp对图像进行颜色分割
2024-09-01 07:18:55
使用OpencvSharp的InRange函数对图像进行RGB颜色的分割。
using System;
using OpenCvSharp;
using OpenCvSharp.Extensions;
using OpenCvSharp.XFeatures2D;
using static OpenCvSharp.Cv2;
namespace Mycv
{
public class cvGO
{
/// <summary>
/// 分割颜色得到面积占比的大小
/// </summary>
/// <param name="srcbmp">原图</param>
/// <param name="dstbmp">结果图</param>
/// <param name="value_Low">最低值RGB(0-255) ([0]:R,[1]:G,[2]:B)这里用一个长度为3的数组存放最低RGB值</param>
/// <param name="value_High">最高值RGB(0-255)([0]:R,[1]:G,[2]:B)这里用一个长度为3的数组存放最高RGB值 </param>
public float Color_Inrange(Bitmap srcbmp, out Bitmap dstbmp, int[] value_Low, int[] value_High)
{
//bitmap转mat
using (Mat src = BitmapConverter.ToMat(srcbmp))
using (Mat dst = new Mat())
{
//根据传进来的2个数组新建两个Scalar
Scalar cvL = new Scalar(value_Low[], value_Low[], value_Low[]);
Scalar cvH = new Scalar(value_High[], value_High[], value_High[]); //这一步就是颜色分割
InRange(src, cvL, cvH, dst);
//Inrange的时候已经给dst赋值了,这里是mat转bitmap
dstbmp = dst.ToBitmap();
//用CountNonZero来得到面积,然后再计算占比并返回这个值
return (CountNonZero(dst) / (src.Width * src.Height * 1.0f) * );
}
}
}
}
最新文章
- 【转载】10 个实用技巧,让 Finder 带你飞
- PHP 使用 mcrypt 扩展中的 mcrypt_encrypt() 和 mcrypt_decrypt() 对数据进行加密和解密
- 线性四叉树十进制Morton码计算示例
- SslUtil
- c++库大全
- CentOS 6.0下面安装JDK7
- Android(java)学习笔记241:多媒体之 MediaPlayer使用
- freemarker定义自己的标签错误(一)
- Storm学习笔记六
- 4.Apache Spark的工作原理
- Travel 并查集
- Windows系统Nessus离线(Offline) 版的安装
- IDEA-使用技巧
- Android.mk 中常用“LOCAL_” 变量
- js面对对象编程(二):属性和闭包
- 《Android编程权威指南》
- WebRTC源码分析(一):安卓相机采集实现分析
- Java bean中布尔类型使用注意
- IOS7开发~Images.xcassets
- [Haskell]解决hslua unknown symbol `___s trtod&#39;的问题
热门文章
- Dynamics CRM - 如何创建一个新的 Organization
- 108.生成和下载csv文件
- 深入理解JVM - 垃圾收集器
- [LC] 51. N-Queens
- IDEA查看代码最近修改人及日期
- Popular generalized linear models|GLMM| Zero-truncated Models|Zero-Inflated Models|matched case–control studies|多重logistics回归|ordered logistics regression
- JavaSE--【转】网络安全之证书、密钥、密钥库等名词解释
- C++对象的动态建立与释放
- swoole使用协程
- sql server2008 装上后,总是出现machine.config line136,或者 出现 配置错误 无法识别的配置节 system.serviceModel 。