cvGetQuadrangleSubPix 图像旋转缩放
2013-08-22 14:15
246 查看
#include "cv.h"
#include "highgui.h"
#include "math.h"
int main( int argc, char** argv )
{
IplImage* src;
/* the first command line parameter must be image file name */
if( argc==2 || (src = cvLoadImage("C:\\Users\\liang.guo\\Downloads\\opencvtest\\tesseract测试\\tesseract-build\\tesseract-ocr\\vs2010\\测试\\ceshi\\word\\a.jpg", -1))!=0)
{
IplImage* dst = cvCloneImage( src );
int delta = 1;
int angle = 0;
int opt = 0; // 1: 旋转加缩放
// 0: 仅仅旋转
double factor;
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) // 旋转加缩放
factor = (cos(angle*CV_PI/180.) + 1.05)*2;
else // 仅仅旋转
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
cvGetQuadrangleSubPix( src, dst, &M);
for (int j=0;j<6;j++)
{
for(int jj=0;jj<6;jj++)
{
CvScalar guo =cvGet2D(src,j,jj);
CvScalar guo2 =cvGet2D(dst,j,jj);
}
}
cvNamedWindow( "dst", 1 );
cvShowImage( "dst", dst );
for( ;; )
{
if(cvWaitKey() == 27)
break;
}
angle =(int) (angle + delta) % 360;
} // for-loop
}
return 0;
}
#include "highgui.h"
#include "math.h"
int main( int argc, char** argv )
{
IplImage* src;
/* the first command line parameter must be image file name */
if( argc==2 || (src = cvLoadImage("C:\\Users\\liang.guo\\Downloads\\opencvtest\\tesseract测试\\tesseract-build\\tesseract-ocr\\vs2010\\测试\\ceshi\\word\\a.jpg", -1))!=0)
{
IplImage* dst = cvCloneImage( src );
int delta = 1;
int angle = 0;
int opt = 0; // 1: 旋转加缩放
// 0: 仅仅旋转
double factor;
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) // 旋转加缩放
factor = (cos(angle*CV_PI/180.) + 1.05)*2;
else // 仅仅旋转
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
cvGetQuadrangleSubPix( src, dst, &M);
for (int j=0;j<6;j++)
{
for(int jj=0;jj<6;jj++)
{
CvScalar guo =cvGet2D(src,j,jj);
CvScalar guo2 =cvGet2D(dst,j,jj);
}
}
cvNamedWindow( "dst", 1 );
cvShowImage( "dst", dst );
for( ;; )
{
if(cvWaitKey() == 27)
break;
}
angle =(int) (angle + delta) % 360;
} // for-loop
}
return 0;
}
相关文章推荐
- Matlab 图像平移、旋转、缩放、镜像
- php图像处理函数大全(缩放、剪裁、缩放、翻转、旋转、透明、锐化的实例总结)
- Matlab 实现图像的平移,旋转,缩放
- 图像几何变换(缩放、旋转)中的常用的插值算法
- android.graphics.Camera实现图像的旋转、缩放
- 对图像的缩放与旋转
- 【OpenCV】图像几何变换:旋转,缩放,斜切
- Java图片缩略图裁剪水印缩放旋转压缩转格式-Thumbnailator图像处理
- 图像旋转与缩放
- Java图片缩略图裁剪水印缩放旋转压缩转格式-Thumbnailator图像处理
- OpenCV2:图像的几何变换,平移、镜像、缩放、旋转(2)
- matlab实现图像的平移、旋转、缩放
- Android游戏4-27 实现图像特效-旋转 缩放 平移
- OpenCV2:图像的几何变换,平移、镜像、缩放、旋转(1)
- iOS 使用手势UIGestureRecognizer对图像进行缩放、移动、旋转操作
- 图像的缩放(图像缩小和图像放大 旋转 倾斜)
- Qt可显示基本的图像类型,利用QImage、QPxmap类可以实现图像的显示,并且利用类中的方法可以实现图像的基本操作(缩放、旋转)。
- matlab 图像几何变换 平移、旋转、缩放
- Android学习笔记11-图像的平移、旋转及缩放
- OPENCV 中的图像旋转与缩放