Opencv 임의의 비율 로 그림 회전

본문http://blog.sina.com.cn/s/blog_400b87c20100cdr4.html
가장 관건 적 인 설정 은 cvMat 2 행 3 열 행렬 의 값 입 니 다. 이것 이 바로 컴퓨터 그래 픽 에서 의 변환 행렬 입 니 다.도움말 매 뉴 얼 참조 cvGetQuadrangle SubPix
<span style="font-size:18px;">void CCannyDoc::OnConvert() 
{
 //  IplImage  
 IplImage * src = NULL;
 IplImage * dst = NULL;
 
 src = cvLoadImage(i,-1);
 int delta = 1;
 int angle = 0;
 int opt = 1;  // 1:     ,0:      
 double factor;
 dst = cvCloneImage (src);  //         dst   ,  “dst=src”       
 cvNamedWindow ("src", 1);
 cvShowImage ("src", src);
 
 for (;;)
 {
  float m[6];
  // Matrix m looks like:
  //
  // [ m0  m1  m2 ] ===>  [ A11  A12   b1 ]
  // [ m3  m4  m5 ]       [ A21  A22   b2 ]
  //
  CvMat M = cvMat (2, 3, CV_32F, m);   //
  int w = src->width;
  int h = src->height;
  if (opt)  //      ,   cos       
   factor = (cos (angle * CV_PI / 180.) + 1.0) * 2; 
  else   //      ,      angle 
   factor = 1;
  m[0] = (float) (factor * cos (-angle * 2 * CV_PI / 180.));
  m[1] = (float) (factor * sin (-angle * 2 * CV_PI / 180.));
  m[3] = -m[1];
  m[4] = m[0];
  //            
  m[2] = w * 0.5f;
  m[5] = h * 0.5f;
  //  dst(x,y) = A * src(x,y) + b
  cvZero (dst);                                  // dst        
  cvGetQuadrangleSubPix (src, dst, &M);
  cvNamedWindow ("dst", 1);
  cvShowImage ("dst", dst);
  
  if (cvWaitKey (1) == 27) //ESC
   break;
  angle = (int) (angle + delta) % 360;
 }   
}</span>

다른 연결 도 상세 합 니 다:http://www.cnblogs.com/HappyXie/archive/2011/03/02/1969434.html

좋은 웹페이지 즐겨찾기