Emgu-WPF学习使用-阈值化
原文:Emgu-WPF学习使用-阈值化

环境:Win8 64位 Vs2015

Emgu 版本:emgucv-windesktop 3.2.0.2682

上图为常用阈值化处理效果。不同阈值设置可呈现不同处理效果。

       private void InitSourceFile(object sender, RoutedEventArgs e){string sFile = "";if (!String.IsNullOrEmpty(AppConstUtils.GDefaultFile) && File.Exists(AppConstUtils.GDefaultFile))sFile = AppConstUtils.GDefaultFile;elsesFile = GlobalVar.DATAS_PATH + "Samples/Test3.png";BitmapImage oOriginBitSrc = new BitmapImage(new Uri(sFile));this.ImgOrigin1Zm.Source = oOriginBitSrc;System.Drawing.Image oImgOrigin = System.Drawing.Image.FromFile(sFile);System.Drawing.Bitmap oBitmap = new System.Drawing.Bitmap(oImgOrigin);Image<Bgr, byte> imgSrc = new Image<Bgr, byte>(oBitmap);oBitmap.Dispose();this.Func1(imgSrc);this.Func2(imgSrc);this.Func3(imgSrc);this.Func4(imgSrc);this.Func5(imgSrc);}private void Func1(Image<Bgr, byte> imgSrc){// 灰度化Image<Gray, byte> imgGray = new Image<Gray, byte>(imgSrc.Size);CvInvoke.CvtColor(imgSrc, imgGray, ColorConversion.Bgr2Gray);AppUtils.ShowGrayImage(this.ImgFun1Result1Zm, imgGray);// 转换为BitmapSource呈现// 二进制阈值化Image<Gray, byte> imgThresholdBinary = new Image<Gray, byte>(imgGray.Size);//90为阈值,可调整,255为最大值CvInvoke.Threshold(imgGray, imgThresholdBinary, 90, 255, ThresholdType.Binary);AppUtils.ShowGrayImage(this.ImgFun1Result2Zm, imgThresholdBinary);//反向二进制阈值化Image<Gray, byte> imgThresholdBinaryInv = new Image<Gray, byte>(imgGray.Size); CvInvoke.Threshold(imgGray, imgThresholdBinaryInv, 90, 255, ThresholdType.BinaryInv);AppUtils.ShowGrayImage(this.ImgFun1Result3Zm, imgThresholdBinaryInv);//截断阈值化Image<Gray, byte> imgThresholdTrunc = new Image<Gray, byte>(imgGray.Size);CvInvoke.Threshold(imgGray, imgThresholdTrunc, 90, 255, ThresholdType.Trunc);AppUtils.ShowGrayImage(this.ImgFun1Result4Zm, imgThresholdTrunc);//超阈值归零化Image<Gray, byte> imgThresholdToZero = new Image<Gray, byte>(imgGray.Size);CvInvoke.Threshold(imgGray, imgThresholdToZero, 90, 255, ThresholdType.ToZero);AppUtils.ShowGrayImage(this.ImgFun1Result5Zm, imgThresholdToZero);//低于阈值归零化Image<Gray, byte> imgThresholdToZeroInv = new Image<Gray, byte>(imgGray.Size);CvInvoke.Threshold(imgGray, imgThresholdToZeroInv, 150, 255, ThresholdType.ToZeroInv);AppUtils.ShowGrayImage(this.ImgFun1Result6Zm, imgThresholdToZeroInv);//MaskImage<Gray, byte> imgThresholdMask = new Image<Gray, byte>(imgGray.Size);CvInvoke.Threshold(imgGray, imgThresholdMask, 90, 255, ThresholdType.Mask);AppUtils.ShowGrayImage(this.ImgFun1Result7Zm, imgThresholdMask);//OtsuImage<Gray, byte> imgThresholdOtsu = new Image<Gray, byte>(imgGray.Size);CvInvoke.Threshold(imgGray, imgThresholdOtsu, 150, 255, ThresholdType.Otsu);AppUtils.ShowGrayImage(this.ImgFun1Result8Zm, imgThresholdOtsu);}private void Func2(Image<Bgr, byte> imgSrc){// 灰度化Image<Gray, byte> imgGray = new Image<Gray, byte>(imgSrc.Size);CvInvoke.CvtColor(imgSrc, imgGray, ColorConversion.Bgr2Gray);// 自适应阈值Image<Gray, byte> imgAdapativeThresholdMeanC = imgGray.ThresholdAdaptive(new Gray(255), AdaptiveThresholdType.MeanC, ThresholdType.Binary, 9, new Gray(5));AppUtils.ShowGrayImage(this.ImgFun2Result1Zm, imgAdapativeThresholdMeanC);}private void Func3(Image<Bgr, byte> imgSrc){// 灰度化Image<Gray, byte> imgGray = new Image<Gray, byte>(imgSrc.Size);CvInvoke.CvtColor(imgSrc, imgGray, ColorConversion.Bgr2Gray);// 自适应阈值Image<Gray, byte> imgAdapativeThresholdGaussianC = imgGray.ThresholdAdaptive(new Gray(255),AdaptiveThresholdType.GaussianC, ThresholdType.Binary, 9, new Gray(5));AppUtils.ShowGrayImage(this.ImgFun2Result2Zm, imgAdapativeThresholdGaussianC);}private void Func4(Image<Bgr, byte> imgSrc){// 灰度化Image<Gray, byte> imgGray = new Image<Gray, byte>(imgSrc.Size);CvInvoke.CvtColor(imgSrc, imgGray, ColorConversion.Bgr2Gray);// 自适应阈值Image<Gray, byte> imgAdapativeThresholdMeanC = imgGray.ThresholdAdaptive(new Gray(255),AdaptiveThresholdType.MeanC, ThresholdType.BinaryInv, 9, new Gray(5));AppUtils.ShowGrayImage(this.ImgFun2Result3Zm, imgAdapativeThresholdMeanC);}private void Func5(Image<Bgr, byte> imgSrc){// 灰度化Image<Gray, byte> imgGray = new Image<Gray, byte>(imgSrc.Size);CvInvoke.CvtColor(imgSrc, imgGray, ColorConversion.Bgr2Gray);// 自适应阈值Image<Gray, byte> imgAdapativeThresholdGaussianC = imgGray.ThresholdAdaptive(new Gray(255),AdaptiveThresholdType.GaussianC, ThresholdType.BinaryInv, 9, new Gray(5));AppUtils.ShowGrayImage(this.ImgFun2Result4Zm, imgAdapativeThresholdGaussianC);}

另外:

 AppUtils.ShowGrayImage(Image oImg, Image<Bgr, byte> imgSrc); 在我的上一篇博客中有实现。

点击打开链接  http://blog.csdn.net/u013224722/article/details/79613445

posted on 2018-08-14 09:37 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/9472686.html

Emgu-WPF学习使用-阈值化相关推荐

  1. 灰度图像阈值化分割常见方法总结及VC实现

    灰度图像阈值化分割常见方法总结及VC实现 分类: 图像处理 OpenCV2011-11-11 23:20 609人阅读 评论(11) 收藏 举报 在图像处理领域,二值图像运算量小,并且能够体现图像的关 ...

  2. OpenCV学习笔记(十一):阈值化:threshold(),adaptivethreshold()

    OpenCV学习笔记(十一):阈值化:threshold(),adaptivethreshold() 一.定义: 1)固定阈值操作 double threshold( InputArray src, ...

  3. 《OpenCV3编程入门》学习笔记6 图像处理(七)阈值化

    6.7 阈值化 · 最简单的图像切割方法,剔除图像中像素高于或低于一定值的像素,用图像中每一个像素点的灰度值与选取的阈值进行比较,做出判断 · 涉及函数:Threshold()函数(基本阈值操作)和a ...

  4. opencv2函数学习之threshold:实现图像阈值化

    在opencv2中,threshold函数可以进行阈值化操作. double threshold( const Mat& src, Mat& dst, double thresh,do ...

  5. OpenCV-python学习笔记(五)——shreshoding阈值化

    文章目录 shreshoding阈值化 1 simple thresholding简单阈值化 2 adaptive shresholding自适应阈值 3 Otsu and Riddler-Calva ...

  6. 深度残差收缩网络:借助注意力机制实现特征的软阈值化

    作者 | 哈尔滨工业大学(威海)讲师 赵明航 本文解读了一种新的深度注意力算法,即深度残差收缩网络(Deep Residual Shrinkage Network). 从功能上讲,深度残差收缩网络是一 ...

  7. [Python图像处理] 三十一.图像点运算处理两万字详细总结(灰度化处理、阈值化处理)

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

  8. [Python图像处理] 七.图像阈值化处理及算法对比

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

  9. 【数字图像处理】五.MFC图像点运算之灰度线性变化、灰度非线性变化、阈值化和均衡化处理详解

    本文主要讲述基于VC++6.0 MFC图像处理的应用知识,主要结合自己大三所学课程<数字图像处理>及课件进行讲解,主要通过MFC单文档视图实现显示BMP图片点运算处理,包括图像灰度线性变换 ...

最新文章

  1. 使用Eclipse与Pydev开发Python
  2. App设计灵感之十二组精美的家具产品电商App设计案例
  3. 陕理工高级语言程序设计实验 (C)答案,陕理工高级语言程序计实验 (C)模板.doc
  4. 分析go程序内存逃逸情况
  5. osgearth_annotation示例
  6. 迭代最近点算法Iterative Closest Point(ICP)以及c++实现代码
  7. android flag,Android 屏幕锁 - FLAG_KEEP_SCREEN_ON
  8. CSDN免费快速获得积分和直接获取下载码的几个办法,亲测有效区
  9. 邱锡鹏神经网络怎么样,邱锡鹏 神经网络pdf
  10. 我读“世界500强面试题”
  11. FreeCAD开发:修改了源码,需要翻译成中文,如何更新语言包
  12. SDHC和SDXC的区别总结
  13. MST703调试群创AT070TN92
  14. 0CTF2017 WEB WriteUp
  15. win10office2016计算机试题,大学计算机基础(Windows10+Office2016)试卷6(含答案).docx
  16. Cipher Block chaining
  17. oracle10g rman备份有效性,Oracle 10g RMAN的备份 恢复
  18. javaOOP -- 笔记
  19. c语言图像羽化,C图像边缘羽化
  20. ACA世界大赛_让青年设计发声, 第二期!

热门文章

  1. Yii 2 —— Backend自动出现登录页
  2. .NET的委托和匿名函数应用一例
  3. Mybatis学习笔记-CURD(基于配置文件的方式)
  4. POJ 2449 Remmarguts' Date
  5. strcmp可以比较数组么_数组:总结篇
  6. c++多边形扫描线填充算法_基于3DGIS技术的梯形格网构建及其简化算法设计
  7. js滤镜灰度计算_案例分享爱奇艺边缘计算探索与实践
  8. 怎么看笔记本电脑的配置参数_电脑参数怎么看?教你看懂电脑各种配置
  9. 原始的DSH深度哈希代码
  10. java 正则 js_正则表达式在js和java中如何使用