1. CvSeq* contour = NULL;
  2. double minarea = 100.0;
  3. double tmparea = 0.0;
  4. CFileDialog dlg(true);
  5. if (dlg.DoModal()==IDOK)
  6. {
  7. CvMemStorage* storage = cvCreateMemStorage();
  8.  
  9. IplImage* img_src= cvLoadImage(dlg.GetPathName(),CV_LOAD_IMAGE_ANYCOLOR);
  10. IplImage* img_Clone=cvCloneImage(img_src);
  11. //访问二值图像每个点的值
  12. uchar *pp;
  13. //显示原始图像
  14. cvNamedWindow("img_src",CV_WINDOW_AUTOSIZE);
  15. cvShowImage("img_src", img_src);
  16.  
  17. IplImage* img_dst = cvCreateImage(cvGetSize(img_src),IPL_DEPTH_8U,);
  18.  
  19. //------------搜索二值图中的轮廓,并从轮廓树中删除面积小于某个阈值minarea的轮廓-------------//
  20. CvScalar color = cvScalar(,,);//CV_RGB(128,0,0);
  21. CvContourScanner scanner = NULL;
  22. scanner = cvStartFindContours(img_src,storage,sizeof(CvContour),CV_RETR_CCOMP,CV_CHAIN_APPROX_NONE,cvPoint(,));
  23. //开始遍历轮廓树
  24. CvRect rect;
  25. while (contour=cvFindNextContour(scanner))
  26. {
  27. tmparea = fabs(cvContourArea(contour));
  28. rect = cvBoundingRect(contour,);
  29. if (tmparea < minarea/*||tmparea>4900*/)
  30. {
  31.  
  32. //当连通域的中心点为黑色时,而且面积较小则用白色进行填充
  33. pp=(uchar*)(img_Clone->imageData + img_Clone->widthStep*(rect.y+rect.height/)+rect.x+rect.width/);
  34. if (pp[]==)
  35. {
  36. for(int y = rect.y;y<rect.y+rect.height;y++)
  37. {
  38. for(int x =rect.x;x<rect.x+rect.width;x++)
  39. {
  40. pp=(uchar*)(img_Clone->imageData + img_Clone->widthStep*y+x);
  41.  
  42. if (pp[]==)
  43. {
  44. pp[]=;
  45. }
  46. }
  47. }
  48. }
  49.  
  50. }
  51. }
  52. cvSaveImage("c://temp//aav.bmp",img_Clone);

opencv删除二值图中较小的噪点色块的更多相关文章

  1. 使用OpenCV查找二值图中最大连通区域

    http://blog.csdn.net/shaoxiaohu1/article/details/40272875 使用OpenCV查找二值图中最大连通区域 标签: OpenCVfindCoutour ...

  2. opencv 删除二值化图像中面积较小的连通域

    对于上图的二值化图像,要去除左下角和右上角的噪点,方法:使用opencv去掉黑色面积较小的连通域. 代码 CvSeq* contour = NULL; double minarea = 100.0; ...

  3. opencv统计二值图黑白像素个数

    #include "iostream" #include "queue" #include "Windows.h" #include < ...

  4. 超越OpenCV速度的MorphologyEx函数实现(特别是对于二值图,速度是CV的4倍左右)。

    最近研究了一下opencv的 MorphologyEx这个函数的替代功能, 他主要的特点是支持任意形状的腐蚀膨胀,对于灰度图,速度基本和CV的一致,但是 CV没有针对二值图做特殊处理,因此,这个函数对 ...

  5. S0.4 二值图与阈值化

    目录 二值图的定义 二值图的应用 阈值化 二值化/阈值化方法 1,无脑简单判断 opencv3函数threshold()实现 2,Otsu算法(大律法或最大类间方差法) OpenCV3 纯代码实现大津 ...

  6. 用 Python 通过马尔可夫随机场(MRF)与 Ising Model 进行二值图降噪

    前言 这个降噪的模型来自 Christopher M. Bishop 的 Pattern Recognition And Machine Learning (就是神书 PRML……),问题是如何对一个 ...

  7. zw·准专利·高保真二值图细部切分算法

    zw·准专利·高保真二值图细部切分算法     高保真二值图细部切分算法,是中国字体协会项目的衍生作品.     说准专利算法,是因为对于图像算法的标准不了解,虽然报过专利,但不是这方面的,需要咨询专 ...

  8. c语言实现灰度图转换为二值图

    将上篇得到的灰度图转换为二值图,读取像素数据,低于某一值置0,否则设置为255,为得到更好的效果不同图片应采用不同的值 /* 2015年6月2日11:16:22 灰度图转换为二值图 blog:http ...

  9. C语言实现将彩色BMP位图转化为二值图

    CTF做了图片的隐写题,还没有形成系统的认识,先来总结一下BMP图的组成,并通过将彩色图转为二值图的例子加深下理解. 只写了位图二进制文件的格式和代码实现,至于诸如RGB色彩和调色板是什么的一些概念就 ...

随机推荐

  1. jquery ajax rest invoke

    notice: <script type="text/javascript"> $(document).ready(function() { $("#b03& ...

  2. 将一个tabel加到另一个table

    DataTable rate = GetRate(str_catchType,); dt.Merge(rate);//将两个table合并

  3. 3秒后自动跳转页面【js】

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. HTML教程

    HTML文档可以包含的内容 通过不同的标签,HTML文档可以包含不同的内容,比如文本,链接,图片,列表,表格,表单,框架等. 文本 HTML对文本的支持是最丰富的,你可以设置不同级别的标题,分段和换行 ...

  5. 使用BLADE构建c++工程管理

    使用BLADE构建c++工程管理 字数764 阅读2753 评论2 喜欢4 一. c++工程依赖管理 之前在百度一直使用comake2构建c++项目,十分方便.免去了手写Makefile的痛苦,很多项 ...

  6. 集合 ArrayList

    /* * 功能:演示java集合的用法:ArrayList */ package com.jihe; //先引入一个包 import java.util.ArrayList; public class ...

  7. C# 正则分组捕获

    分组语法 捕获 (exp) 匹配exp,并捕获文本到自动命名的组里 (?<name>exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp) (?:exp ...

  8. Apache Maven 入门篇 ( 上 )

    作者:George Ma 写这个 maven 的入门篇是因为之前在一个开发者会的动手实验中发现挺多人对于 maven 不是那么了解,所以就有了这个想法. 这个入门篇分上下两篇.本文着重动手,用 mav ...

  9. 源码编译安装 screen

    本文转自:http://blog.163.com/oracle_wwf/blog/static/213030127201211191481101/ [root@web1 soft]# wget ftp ...

  10. Spring Quartz定时调度任务配置

    applicationContext-quartz.xml定时调度任务启动代码: <?xml version="1.0" encoding="UTF-8" ...