OPENCV 行列投影

#include "stdafx.h"
#include <cv.h>
#include <highgui.h>
int _tmain(int argc, _TCHAR* argv[]){
 IplImage * pImg=cvLoadImage("c://test.jpg",0); 
 cvNamedWindow("ShowImage",1); 
 cvNamedWindow("result",1); 
 cvNamedWindow("result_h",1); 
 CvScalar s,t; 
 cvSmooth( pImg, pImg, CV_BLUR, 3, 3, 0, 0 ); 
 cvThreshold( pImg, pImg ,50, 255, CV_THRESH_BINARY_INV ); //取阀值为50把图像转为二值图像 
 int* v=new int[pImg->width]; 
 int* h=new int[pImg->height]; 
 for(int i=0;i<pImg->width;i++)  
	 v[i]=0; 
 for(int i=0;i<pImg->height;i++)  h[i]=0;
 for(int x=0;x<pImg->width;x++)
 {  for(int y=0;y<pImg->height;y++)
 {   s=cvGet2D(pImg,y,x);    
 ///t=cvGet2D(paint,y,x);      
 if(s.val[0]==0)    
	 v[x]++;     
 //cvSet2D(paint,y,x,t);        
 }    
 }
 for(int y=0;y<pImg->height;y++)
 {  for(int x=0;x<pImg->width;x++)
 {   s=cvGet2D(pImg,y,x);    
 ///t=cvGet2D(paint,y,x);      
 if(s.val[0]==0)    
	 h[y]++;        
 }   
 } 
 IplImage* paint=cvCreateImage( cvGetSize(pImg),IPL_DEPTH_8U, 1 );
 IplImage* painty=cvCreateImage( cvGetSize(pImg),IPL_DEPTH_8U, 1 ); 
 cvZero(paint); 
 cvZero(painty);
 for(int x=0;x<pImg->width;x++)
 {  for(int y=0;y<v[x];y++)
 {   t=cvGet2D(paint,y,x);  
 //s=cvGet2D(paint,y,x);    
 ///t=cvGet2D(paint,y,x);      
 t.val[0]=255;   
 cvSet2D(paint,y,x,t);       
 }    
 } 
 //----------h------------
    for(int y=0;y<pImg->height;y++)
	{  
		for(int x=0;x<h[y];x++)
		{   
			t=cvGet2D(painty,y,x);  
			//s=cvGet2D(paint,y,x); 
			///t=cvGet2D(paint,y,x);    
			t.val[0]=255;   
			cvSet2D(painty,y,x,t);        
		}   
	} 
	cvShowImage("result",paint);
	cvSaveImage("c://tou.jpg",paint); 
	cvShowImage("result_h",painty); 
	cvShowImage("ShowImage",pImg); 
	cvWaitKey(0); 
	cvDestroyWindow("ShowImage");  
 return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值