在模式识别中常用垂直投影和水平投影对目标物进行精确投影,以便于后期的分割。

示例:

(1)                                                                                    (2)                                                                                           (3)

对上图一中“静”精确定位,字体行书刚好将它为连通。(若如不是连笔,后期分割可能将“青”和“争”分开)

从图(2)可知:从第三白色部分即可定位出“静”字的宽度,

从图(3):即可定位出“静”字的高度。

垂直投影和水平投影代码:

<pre name="code" class="cpp">// Vertical_gray_projection.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"
#include <opencv2/opencv.hpp>using namespace std;
using namespace cv;int _tmain(int argc, _TCHAR* argv[])
{IplImage * src=cvLoadImage("1.bmp");IplImage *dst = cvCreateImage(cvGetSize(src), 8, 1);IplImage *img = cvCreateImage(cvGetSize(src), 8, 1);cvSmooth(src,src,CV_BLUR,3,3,0,0);cvCvtColor(src,img,CV_BGR2GRAY);cvThreshold(img,dst,50,255,CV_THRESH_BINARY);IplImage* paintx=cvCreateImage( cvGetSize(dst),IPL_DEPTH_8U, 1 );IplImage* painty=cvCreateImage( cvGetSize(dst),IPL_DEPTH_8U, 1 );cvZero(paintx);cvZero(painty);int* v=new int[dst->width];int* h=new int[dst->height];memset(v,0,dst->width*4);memset(h,0,dst->height*4);int x,y;CvScalar s,t;//可以用来存放4个double数值的数组,一般用来存放像素值(不一定是灰度值哦)的,最多可以存放4个通道的/*typedef struct CvScalar{double val[4];}CvScalar;*///垂直投影for(x=0;x<dst->width;x++){for(y=0;y<dst->height;y++){s=cvGet2D(dst,y,x); //cvGet2D() 的函数原型是 : CvScalar cvGet2D (const CvArr * arr, int idx0, int idx1); //函数返回的是一个CvScalar 容器,其参数中也有两个方向的坐标,//但跟我们平常习惯的坐标不一样的是,idx0代表是的行,即高度,对应于我们平常坐标系的y,//idx1代表的是列,即宽度,对应于我们平常坐标系的x,cvSet2D() 也类似。        //printf("area == %lf\n",s);if(s.val[0]==0)v[x]++;  }       }for(x=0;x<dst->width;x++){for(y=0;y<v[x];y++){      t.val[0]=255;cvSet2D(paintx,y,x,t);}       }//水平投影for(y=0;y<dst->height;y++){for(x=0;x<dst->width;x++){s=cvGet2D(dst,y,x);  if(s.val[0]==0)h[y]++;  }}for(y=0;y<dst->height;y++){for(x=0;x<h[y];x++){            t.val[0]=255;cvSet2D(painty,y,x,t);    }       }cvNamedWindow("二值图像",1);cvNamedWindow("垂直投影",1);cvNamedWindow("水平投影",1);cvShowImage("二值图像",dst);cvShowImage("垂直投影",paintx);cvShowImage("水平投影",painty);cvWaitKey(0);cvDestroyAllWindows();cvReleaseImage(&dst);cvReleaseImage(&paintx);cvReleaseImage(&painty);return 0;
}

效果图:上图(1)(2)(3)

模式识别中精确定位之垂直和水平投影相关推荐

  1. JVM 性能调优实战之:使用阿里开源工具 TProfiler 在海量业务代码中精确定位性能代码...

    本文是<JVM 性能调优实战之:一次系统性能瓶颈的寻找过程> 的后续篇,该篇介绍了如何使用 JDK 自身提供的工具进行 JVM 调优将 TPS 由 2.5 提升到 20 (提升了 7 倍) ...

  2. 天池大赛—商场中精确定位用户所在店铺 作品分享

    向AI转型的程序员都关注了这个号??? 大数据挖掘DT数据分析  公众号: datadw 本文初赛.决赛代码 github 地址 在公众号 datadw 里 回复 定位  即可获取. 题目回顾 题目地 ...

  3. 易语言对象--Word之精确定位表格单元格中并写入文本

    1,打开一个doc文档; 2,代码编写: 变量定义 .版本 2 .局部变量 wdapp, 对象 .局部变量 tblIndex, 整数型 .局部变量 row, 整数型 .局部变量 column, 整数型 ...

  4. opencv实现图像的垂直投影和水平投影

    垂直投影是将图像投影到另一个坐标系中的x轴上,水平投影是将图像投影到另一个坐标系中的y轴上.如果想要只获取到图像内容,而不想要图像的无用边缘信息时,可用垂直.水平投影获取行项中的最小值.最大值,列项中 ...

  5. matlab水声定位,基于水平投影的ROV水下GPS精确定位算法

    基于水平投影的ROV水下GPS精确定位算法 基于水平投影的ROV水下GPS精确定位算法 张颖军 付本国 刘光 (海军潜艇学院,山东青岛,266046) 摘 要 精确的水下定位是提高水下机器人(ROV) ...

  6. [html] 当html中使用map标签时,area中coords值如何精确定位呢?

    [html] 当html中使用map标签时,area中coords值如何精确定位呢? 在 area 标签上支持的属性有 shape.coords.href.alt.target.type.downlo ...

  7. opencv java水平投影_使用OpenCv中Mat进行水平投影与垂直投影并实现字符切分

    由于要做图像的处理,所以最近在学习Opencv的相关知识,学习了Opencv中的Mat对象,查阅了网上的资料,了解了相关知识.现在实现了一个使用Mat对象来进行图像的水平投影与垂直投影,并在此基础之上 ...

  8. 精确定位网页中各个元素的位置

    精确定位网页中各个元素的位置有两种方法:使用表格或层.使用表格是目前比较通用的做法,具体方法是:先在网页中建立一个表格,注意表格的边框宽度应为0.然后再把各个元素按照你的要求放在各个表格单元之中.仔细 ...

  9. office服务器草稿位置,精确定位图片在Word文档中的位置的操作方法

    除了嵌入型图片外,图片在Word文档中的位置可以通过鼠标拖动来调整.如果需要对图片位置进行精确定位,可以使用相关的命令来进行操作,下面介绍精确定位图片在Word文档中的位置的具体操作方法. 1.在文档 ...

最新文章

  1. 近期几个电车调试视频
  2. java.util.Random 实现原理
  3. c# spire.xls 设置文字为微软雅黑_Excel工作薄常规样式设置,WorkBook.Styles
  4. 模糊控制算法详细讲解
  5. 福师计算机在线作业一2,福师《计算机》在线作业二答案.doc
  6. ABAP中的F4帮助怎么用
  7. 定时器翻转io口的好处_STM32 定时器输出比较翻转模式
  8. java socket编程—单客户端与服务器通信
  9. 大型体检系统源码 医院PEIS管理系统源码 BS架构
  10. eclipse运行代码后变为红色和绿色
  11. 微软五笔拼音输入法 86版 v7.2 bt
  12. 案例介绍 犹他州交通规划网络地图中心
  13. 全新三维成像技术:我们离科幻故事里的立体投影又近了一步
  14. 【鸿蒙开发和安卓开发】如何实现后台弹出界面和开机自启动
  15. 太湖之光超级计算机应用最高奖,“神威·太湖之光”两项应用入围“戈登·贝尔”奖...
  16. 树莓派4b 3.5inch显示屏+远程+FTP+建站
  17. 用STM32F103C8芯片做流水灯
  18. 【Python】Matplotlib绘图02_pyplot图表美化
  19. Elasticsearch - Indices stats 获取索引级别的统计信息之三 【indexing】索引操作信息
  20. 遇见狂神说HTML笔记1

热门文章

  1. JS 解决sort字母排序的问题
  2. lvds接口屏线安装图解_lvds液晶屏幕接口详细讲解
  3. 题组: 简单搜索进阶搜索
  4. mysql查询今天的数据
  5. .md是什么文件_生信中常见的数据文件格式
  6. 升职加薪申请书 经典范文
  7. HI3559V200获取IMX458摄像头数据_(2)sdk例程sample_vio
  8. Elasticsearch 6.x Mapping设置
  9. datetime用法
  10. CM+CDH构建企业大数据平台系列(一)