OpenCV计算图像的水平和垂直积分投影

作者:长相忆兮长相忆 时间:2021-10-09 08:40:45 

本文实例为大家分享了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;
}

结果:

OpenCV计算图像的水平和垂直积分投影

OpenCV计算图像的水平和垂直积分投影

OpenCV计算图像的水平和垂直积分投影

来源:https://blog.csdn.net/hero_myself/article/details/49667613

标签:OpenCV,图像,投影
0
投稿

猜你喜欢

  • Java实现按行读取大文件

    2022-11-05 13:56:57
  • 浅谈Spring6中的反射机制

    2022-06-04 13:23:33
  • JavaBean和Map转换封装类的方法

    2023-04-18 06:50:52
  • SpringBoot整合mybatis的方法详解

    2023-09-02 06:23:57
  • java简单工厂模式实例及讲解

    2021-09-19 14:08:39
  • C#编程获取客户端计算机硬件及系统信息功能示例

    2023-08-09 01:57:15
  • Java轻量级权限认证框架Sa-Token的使用

    2023-03-13 16:34:59
  • 详解Spring整合Ehcache管理缓存

    2022-02-10 00:50:17
  • Maven 生成打包可执行jar包的方法步骤

    2023-01-02 14:53:15
  • java 装饰模式(Decorator Pattern)详解及实例代码

    2023-09-07 03:13:08
  • C#使用udp如何实现消息的接收和发送

    2022-05-26 20:56:01
  • C#实现将窗体固定在显示器的左上角且不能移动的方法

    2022-03-04 18:34:17
  • Android 下的 QuickJS Binding 库特性使用详解

    2022-08-08 00:24:24
  • java实现给图片加铺满的网格式文字水印

    2023-07-30 05:22:12
  • 关于@RequestBody和@RequestParam注解的使用详解

    2023-01-20 09:08:20
  • C#实现的算24点游戏算法实例分析

    2021-12-01 04:13:21
  • rsa加密算法使用示例分享

    2021-08-03 20:47:29
  • 简单实现安卓里百度地图持续定位

    2023-07-29 07:59:22
  • 解析Java继承中方法的覆盖和重载

    2021-09-02 02:02:32
  • C#执行SQL事务用法实例

    2021-11-23 23:32:27
  • asp之家 软件编程 m.aspxhome.com