www.pudn.com > unwarped.rar > unwarped.cpp


 
#include  
#include  
#include  
#define pi 3.1415926 
 
IplImage *img,*img0; 
 
int main(int argc,char **argv) 
{ 
	char *filename=argc>=2?argv[1]:(char *)"bmp1.bmp"; 
	img=cvLoadImage(filename); 
	if(img==0) 
		return 0; 
	cvNamedWindow("src",1); 
	cvShowImage("src",img);	 
	 
	int width=img->width; 
	int height=img->height; 
	 
	double Xc=319; 
	double Yc=239; 
	 
	int Rmax=210; 
	int Rmin=90; 
	 
	int width1=ceil(2*pi*Rmax); 
	int height1=ceil(Rmax-Rmin); 
	 
	CvSize size=cvSize(width1,height1); 
	img0=cvCreateImage(size,IPL_DEPTH_8U,1); 
	img0->origin=0; 
	cvZero(img0); 
	 
	for(int i=0;i=0 && value_w_minus>=0 && value_h_plusimageData + img->widthStep*value_h_plus))[value_w_minus*3]*(value_w_plus-U)+ 
					((uchar *)(img->imageData+img->widthStep*value_h_plus))[value_w_plus*3]*(U-value_w_minus); 
				float horiz2=((uchar *)(img->imageData+img->widthStep*value_h_minus))[value_w_minus*3]*(value_w_plus-U)+ 
					((uchar *)(img->imageData+img->widthStep*value_h_minus))[value_w_plus*3]*(U-value_w_minus); 
				float vertical=horiz1*(V-value_h_minus)+horiz2*(value_h_plus-V); 
				uchar vertical1=vertical; 
				*(img0->imageData+img0->widthStep*(height1-j-1)+i)=vertical1; 
			} 
			else 
			{ 
				*(img0->imageData+img0->widthStep*(height1-j-1)+i)=0; 
			} 
		} 
	} 
	cvNamedWindow("处理结果",1); 
	cvShowImage("处理结果",img0); 
	cvWaitKey(); 
	cvDestroyWindow("处理结果"); 
	cvDestroyWindow("src"); 
 
}