第一个CV程序,对图片做径向梯度变换。 纪念下~

 1// HelloOpencv.cpp : 定义控制台应用程序的入口点。
 2
 3#include "stdafx.h"
 4#include"cxcore.h"
 5#include "highgui.h"
 6#include<math.h>
 7using namespace cv;
 8using namespace std;
 9
10int _tmain(int argc, _TCHAR* argv[])
11{
12    CvPoint center;
13    double scale = -3;
14    IplImage* image = (argc == 2 )? cvLoadImage(argv[1]) : 0;
15    if! image ) return -1;
16    center = cvPoint( image->width/2 , image->height/2 );
17    forint i = 0; i<image->height; i++ )
18        forint j = 0; j<image->width; j++ ){

19            double dx = ( double )( j-center.x )/center.x;
20            double dy = ( double )( i-center.y )/center.y;
21            double wight = exp( (dx*dx+dy*dy)*scale );
22            uchar* ptr = &CV_IMAGE_ELEM( image, uchar, i, j*3 );
23            ptr[0= cvRound(ptr[0]*wight);
24            ptr[1= cvRound(ptr[1]*wight);
25            ptr[2= cvRound(ptr[2]*wight);
26        }

27    cvSaveImage("new.png",image);
28    cvNamedWindow("_飞寒の TEST",1);
29    cvShowImage("_飞寒の TEST",image);
30    cvWaitKey();
31    return 0;
32}

33
34

   效果如下: