#include<opencv/cv.h>
#include<opencv/highgui.h>
#include<iostream>
using namespace std;
int main ()
{
CvPoint2D32f srcQuad[4],dstQuad[4];
CvMat*warp_matrix=cvCreateMat(3,3,CV_32FC1);//此段程序没有成功,可能原因是
IplImage*src1,*dst;
src1=cvLoadImage("E:/6.jpg",1);
IplImage*src=cvCreateImage(cvGetSize(src1),IPL_DEPTH_32F,3);
cvResize(src1,src,CV_INTER_NN);
//cout<<src->depth;
dst=cvCloneImage(src);
dst->origin=src->origin;
cvZero(dst);
srcQuad[0].x=0;
srcQuad[0].y=0;
srcQuad[1].x=src->width-1;
srcQuad[1].y=0;
srcQuad[2].x=0;
srcQuad[2].y=src->height-1;
srcQuad[3].x=src->width-1;
srcQuad[3].y=src->height-1;
dstQuad[0].x=src->width*0.05;
dstQuad[0].y=src->height*0.33;
dstQuad[1].x=src->width*0.9;
dstQuad[1].y=src->height*0.25;
dstQuad[2].x=src->width*0.2;
dstQuad[2].y=src->height*0.7;
dstQuad[3].x=src->width*0.8;
dstQuad[3].y=src->height*0.9;
cvGetPerspectiveTransform(srcQuad,dstQuad,warp_matrix);//
cvWarpPerspective(src,dst,warp_matrix);//此处参数的类型应该是浮点型的3通道IPLImage*
cvNamedWindow("E",1);
cvShowImage("E",dst);
cvWaitKey(0);
//cvReleaseImage(&dst);
//cvReleaseImage(&src);
//cvReleaseMat(&warp_matrix);
cvDestroyWindow("E");
return 0;
}
/*#include<opencv/cv.h>
#include<opencv/highgui.h>
int main()
{
IplImage*src=cvLoadImage("D:/6.jpg",0);
IplImage*dst=cvCreateImage(cvGetSize(src),8,1);
IplImage*src2=cvCreateImage(cvGetSize(src),8,1);
cvEqualizeHist(src,dst);
double m=50.0;
//cvLogPolar(src,dst,cvPoint2D32f(src->width/4,src->height/2),m,CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS);
//cvLogPolar(dst,src2,cvPoint2D32f(src->width/4,src->height/2),m,CV_INTER_LINEAR|CV_WARP_INVERSE_MAP);
cvNamedWindow("logpolar",1);
cvShowImage("logpolar",dst);
cvNamedWindow("inverse logpolar",1);
cvShowImage("inverse logpolar",src2);
cvNamedWindow("E");
cvShowImage("E",src);
cvWaitKey();
return 0;
#include<opencv/cv.h>
#include<opencv/highgui.h>
int main()
{
IplImage*src=cvLoadImage("D:/6.jpg",1);
IplImage*hsv=cvCreateImage(cvGetSize(src),8,3);
cvCvtColor(src,hsv,CV_BGR2HSV);
IplImage*h_plane=cvCreateImage(cvGetSize(src),8,1);
IplImage*s_plane=cvCreateImage(cvGetSize(src),8,1);
IplImage*v_plane=cvCreateImage(cvGetSize(src),8,1);
IplImage*planes[]={h_plane,s_plane};
cvCvtPixToPlane(hsv,h_plane,s_plane,v_plane,0);
int h_bins=30,s_bins=32;
CvHistogram*hist;
{
int hist_size[]={h_bins,s_bins};
float h_ranges[]={0,180};
float s_ranges[]={0,255};
float*ranges[]={h_ranges,s_ranges};
hist=cvCreateHist(2,hist_size,CV_HIST_ARRAY,ranges,1);
}
cvCalcHist(planes,hist,0,0);
cvNormalizeHist(hist,1.0);
int scale=10;
IplImage*hist_img=cvCreateImage(cvSize(h_bins*scale,s_bins*scale),8,3);
cvZero(hist_img);
float max_value=0;
cvGetMinMaxHistValue(hist,0,&max_value,0,0);
for(int h=0;h<h_bins;h++)
{
for(int s=0;s<s_bins;s++)
{
float bin_val=cvQueryHistValue_2D(hist,h,s);
cvRectangle(hist_img,cvPoint(h*scale,s*scale),cvPoint((h+1)*scale-1,(s+1)*scale-1),CV_RGB(0,0,0),CV_FILLED);
}
}
cvNamedWindow("S",1);
cvShowImage("S",src);
cvNamedWindow("D",1);
cvShowImage("D",hist_img);
cvWaitKey(0);
}