图像旋转与缩放
来源:互联网 发布:appstore付费软件 编辑:程序博客网 时间:2024/04/30 12:07
#include "cv.h"
#include "highgui.h"
#include "math.h"
int main (int argc, char **argv)
{
IplImage *src = 0;
IplImage *dst = 0;
/* the first command line parameter must be image file name */
if ((argc == 2) && (src = cvLoadImage (argv[1], -1)) != 0)
{
int delta = 1;
int angle = 0;
int opt = 0; // 1: 旋转加缩放
// 0: 仅仅旋转
double factor;
dst = cvCloneImage (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) // 旋转加缩放
factor = (cos (angle * CV_PI / 180.) + 1.0) * 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
cvZero (dst);
cvGetQuadrangleSubPix (src, dst, &M);
cvNamedWindow ("dst", 1);
cvShowImage ("dst", dst);
if (cvWaitKey (1) == 27) //ESC
break;
angle = (int) (angle + delta) % 360;
} // for-loop
}
return 0;
}[编辑]Python 版本
# -*- coding:utf-8 -*-
###########################################################
# OpenCV example
#
# 图像旋转与缩放
#
# By ChaiShushan 2008
###########################################################
import sys
import math
# 导入OpenCV模块
from opencv.cv import *
from opencv.highgui import *
if __name__ == '__main__':
if len(sys.argv) == 2:
src = cvLoadImage(sys.argv[1], -1)
if not src: sys.exit(-1)
delta = 1;
angle = 90;
opt = 0; # 1: 旋转加缩放, 0: 仅仅旋转
factor = 1;
dst = cvCloneImage (src);
cvNamedWindow ("src", 1);
cvShowImage ("src", src);
M = cvCreateMat (2, 3, CV_32F)
while True:
w = src.width;
h = src.height;
# factor大小未改变
M[0,0] = factor * math.cos (-angle * 2 * CV_PI / 180.0);
M[0,1] = factor * math.sin (-angle * 2 * CV_PI / 180.0);
M[1,0] = -M[0,1];
M[1,1] = M[0,0];
# 将旋转中心移至图像中间
M[0,2] = w * 0.5;
M[1,2] = h * 0.5;
# dst(x,y) = A * src(x,y) + b
cvZero (dst);
cvGetQuadrangleSubPix (src, dst, M);
cvNamedWindow ("dst", 1);
cvShowImage ("dst", dst);
# ESC
if cvWaitKey(10) == '\x1b':
break
angle = (angle + delta) % 360
#include "highgui.h"
#include "math.h"
int main (int argc, char **argv)
{
IplImage *src = 0;
IplImage *dst = 0;
/* the first command line parameter must be image file name */
if ((argc == 2) && (src = cvLoadImage (argv[1], -1)) != 0)
{
int delta = 1;
int angle = 0;
int opt = 0; // 1: 旋转加缩放
// 0: 仅仅旋转
double factor;
dst = cvCloneImage (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) // 旋转加缩放
factor = (cos (angle * CV_PI / 180.) + 1.0) * 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
cvZero (dst);
cvGetQuadrangleSubPix (src, dst, &M);
cvNamedWindow ("dst", 1);
cvShowImage ("dst", dst);
if (cvWaitKey (1) == 27) //ESC
break;
angle = (int) (angle + delta) % 360;
} // for-loop
}
return 0;
}[编辑]Python 版本
# -*- coding:utf-8 -*-
###########################################################
# OpenCV example
#
# 图像旋转与缩放
#
# By ChaiShushan 2008
###########################################################
import sys
import math
# 导入OpenCV模块
from opencv.cv import *
from opencv.highgui import *
if __name__ == '__main__':
if len(sys.argv) == 2:
src = cvLoadImage(sys.argv[1], -1)
if not src: sys.exit(-1)
delta = 1;
angle = 90;
opt = 0; # 1: 旋转加缩放, 0: 仅仅旋转
factor = 1;
dst = cvCloneImage (src);
cvNamedWindow ("src", 1);
cvShowImage ("src", src);
M = cvCreateMat (2, 3, CV_32F)
while True:
w = src.width;
h = src.height;
# factor大小未改变
M[0,0] = factor * math.cos (-angle * 2 * CV_PI / 180.0);
M[0,1] = factor * math.sin (-angle * 2 * CV_PI / 180.0);
M[1,0] = -M[0,1];
M[1,1] = M[0,0];
# 将旋转中心移至图像中间
M[0,2] = w * 0.5;
M[1,2] = h * 0.5;
# dst(x,y) = A * src(x,y) + b
cvZero (dst);
cvGetQuadrangleSubPix (src, dst, M);
cvNamedWindow ("dst", 1);
cvShowImage ("dst", dst);
# ESC
if cvWaitKey(10) == '\x1b':
break
angle = (angle + delta) % 360
0 0
- 图像旋转与缩放
- 图像旋转与缩放
- 图像的缩放与旋转
- OpenCV_图像旋转与缩放
- 图像的旋转与缩放
- OpenCV图像旋转与缩放
- 图像旋转与缩放实现
- OpenCV_图像旋转与缩放
- 【python图像处理】图像的缩放、旋转与翻转
- 图像旋转及缩放
- cvGetQuadrangleSubPix 图像旋转缩放
- 初识 PS CS6(三)___旋转与缩放图像
- python 图像的形变, 旋转与缩放 (transform) (1)
- python中Image类处理图像 缩放、旋转与翻转
- OpenCV学习之图像的旋转与缩放
- imageView 图像的旋转缩放
- OpenCV 图像旋转和缩放
- 图像平移缩放旋转匹配
- Windows中安装Laravel 5.1.x
- 关于委托。
- 《剑指offer》-二叉树中和为某一值的路径
- httpclient get和post,中文乱码已解决
- hdoj 2049 不容易系列之(4)——考新郎 【排列组合+全排列】
- 图像旋转与缩放
- Spark 内存架构
- UIWebView的一个简单实现
- iOS quartzCore第九章—— CoreAnimation
- 以C程序为例内存分布详解
- Yii2教程学习 - 博客地址迁移
- matlab2014a软件使用技巧 在命令行输入多行代码
- 在Java中如何高效判断数组中是否包含某个元素
- cmd小技巧