OpenCV计算图像的水平和垂直积分投影
作者:长相忆兮长相忆 发布时间:2021-10-09 08:40:45
标签:OpenCV,图像,投影
本文实例为大家分享了OpenCV计算图像的水平和垂直积分投影的具体代码,供大家参考,具体内容如下
#include <cv.h>
#include <highgui.h>
#pragma comment( lib, "cv.lib" )
#pragma comment( lib, "cxcore.lib" )
#pragma comment( lib, "highgui.lib" )
int main()
{
IplImage * src=cvLoadImage("lena.jpg",0);
//cvSmooth(src,src,CV_BLUR,3,3,0,0);
cvThreshold(src,src,50,255,CV_THRESH_BINARY_INV);
IplImage* paintx=cvCreateImage( cvGetSize(src),IPL_DEPTH_8U, 1 );
IplImage* painty=cvCreateImage( cvGetSize(src),IPL_DEPTH_8U, 1 );
cvZero(paintx);
cvZero(painty);
int* v=new int[src->width];
int* h=new int[src->height];
memset(v,0,src->width*4);
memset(h,0,src->height*4);
int x,y;
CvScalar s,t;
for(x=0;x<src->width;x++)
{
for(y=0;y<src->height;y++)
{
s=cvGet2D(src,y,x);
if(s.val[0]==0)
v[x]++;
}
}
for(x=0;x<src->width;x++)
{
for(y=0;y<v[x];y++)
{
t.val[0]=255;
cvSet2D(paintx,y,x,t);
}
}
for(y=0;y<src->height;y++)
{
for(x=0;x<src->width;x++)
{
s=cvGet2D(src,y,x);
if(s.val[0]==0)
h[y]++;
}
}
for(y=0;y<src->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("二值图像",src);
cvShowImage("垂直积分投影",paintx);
cvShowImage("水平积分投影",painty);
cvWaitKey(0);
cvDestroyAllWindows();
cvReleaseImage(&src);
cvReleaseImage(&paintx);
cvReleaseImage(&painty);
return 0;
}
结果:
来源:https://blog.csdn.net/hero_myself/article/details/49667613


猜你喜欢
- 记一下学习单例模式的笔记:单例就是要保证该类仅有一个实例。实现完全封闭的单例(外部不能new)其实就要两点要求:全局访问:需要一个该类型的全
- JVM运行原理首先从“.java”代码文件,编译成“.class”字节码文件,然后类加载器将“.class”字节码文件中的类给加载带JVM中
- 前言这几天在做一个小工具app,结果在fragment里面动态申请权限提示原有的申请方法已经弃用,还画了很明显的删除线。。。这叫一个强迫症的
- C# 中 PadLeft ,PadRight的用法简单来说就是给字符串实现补位。如:String.PadLeft(5,'0'
- 视图绑定通过视图绑定功能,您可以更轻松地编写可与视图交互的代码。在模块中启用视图绑定之后,系统会为该模块中的每个 XML 布局文件生成一个绑
- 本文实例讲述了Android开发中4个常用的工具类。分享给大家供大家参考,具体如下:1、土司工具类(Toast管理)/** * Toast统
- 本文实例为大家分享了使用ContentProvider实现查看系统短信功能的具体代码,供大家参考,具体内容如下activity_main.x
- 本文实例为大家分享了C#使用Socket实现本地多人聊天室的具体代码,供大家参考,具体内容如下【脚本一:Server端】使用本机地址:127
- 本文为大家分享了CountDownTimer模拟短信验证倒计时的具体代码,供大家参考,具体内容如下内容:介绍倒计时CountDownTime
- public void refresh() throws BeansException, IllegalStateException { &
- 冒泡排序冒泡排序的思想: 每次让当前的元素和它的下一个元素比较大小、如果前一个的元素大于后一个元素的话,交换两个元素。这样的话经历一次扫描之
- 本文实例讲述了Java设计模式之工厂模式。分享给大家供大家参考,具体如下:一、 简单工厂先来思考一个问题。我们平时写程序时,会有这种情况,A
- 本实例是为了实现在管理后台实现微信菜单的添加删除管理。1、首先我们需要新建一个数据库表用于存放menu菜单项可包含的字段有id、父类id、n
- 无论是用Eclipse还是用Android Studio做android开发,都会接触到jar包,全称应该是:Java Archive,即j
- HTTP请求,在日常开发中,还是比较常见的,今天给大家分享HttpUtils如何使用。阅读本文,你将收获:简单总结HTTP请求常用配置;Ja
- java 遍历listpackage com.tiandy.core.rest;import java.util.ArrayList;imp
- 本文实例讲述了C#检测上传文件真正类型的方法。分享给大家供大家参考。具体分析如下:对于用户上传的文件如果只是根据扩展名判断,很容易上传上来可
- 众所周知,一般情况下我们使用android中的monkeyrunner进行自动化测试时,使用的是python语言来写测试脚本。不过,最近发现
- 前言在看一本关于高性能编程的时候发现 Java8 中关于接口的新特性的介绍,这个特性是真的棒,解决了一个接口中有多个方法,但并不想实现该接口
- C#调用MFC 窗口 DLLMFC DLL创建一个窗口类,加public和AFX_EXT_CLASSMFC DLL属性注意MFC的使用:在共