09:图像旋转翻转变换
2017-03-09 08:58
183 查看
09:图像旋转翻转变换
查看提交
统计
提问
总时间限制: 1000ms 内存限制: 65536kB描述
给定m行n列的图像各像素点灰度值,对其依次进行一系列操作后,求最终图像。
其中,可能的操作及对应字符有如下四种:
A:顺时针旋转90度;
B:逆时针旋转90度;
C:左右翻转;
D:上下翻转。
输入第一行包含两个正整数m和n,表示图像的行数和列数,中间用单个空格隔开。1 <= m <= 100, 1 <= n <= 100。
接下来m行,每行n个整数,表示图像中每个像素点的灰度值,相邻两个数之间用单个空格隔开。灰度值范围在0到255之间。
接下来一行,包含由A、B、C、D组成的字符串s,表示需要按顺序执行的操作序列。s的长度在1到100之间。输出m'行,每行包含n'个整数,为最终图像各像素点的灰度值。其中m'为最终图像的行数,n'为最终图像的列数。相邻两个整数之间用单个空格隔开。样例输入
2 3 10 0 10 100 100 10 AC
样例输出
10 100 0 100 10 10
#include<iostream> #include<cstring> #include<cstdio> #include<cmath> #include<queue> #include<vector> #include<algorithm> using namespace std; int n,m; int c[1001][1001]; int b[1001][1001]; char zx[101]; void zh(char a) { if(a=='A') { for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { b[j][n-i+1]=c[i][j]; } } }//顺时针旋转90度 if(a=='B') { for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { b[m-j+1][i]=c[i][j]; } } }//逆时针旋转90度 if(a=='C') { for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { b[i][m-j+1]=c[i][j]; } } }//左右翻转 if(a=='D') { for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { b[n-i+1][j]=c[i][j]; } } }//上下翻转 memcpy(c,b,sizeof(c)); if(a=='A'||a=='B')swap(m,n); } int main() { cin>>n>>m; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { cin>>c[i][j]; } } scanf("%s",&zx); for(int i=0;i<strlen(zx);i++) { zh(zx[i]); } for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { cout<<c[i][j]<<" "; } cout<<endl; } return 0; }
相关文章推荐
- 09:图像旋转翻转变换
- NOI题库 09:图像旋转翻转变换
- NOI 练手题 图像旋转翻转变换
- NOI题库 09:图像旋转翻转变换
- 11.12 acm培训 Problem C: 图像旋转翻转变换
- php图像处理(缩放、剪裁、缩放、翻转、旋转、透明、锐化)
- 图像旋转控件 TRotateImage Ver1.54(支持D3~D2010)
- 【VC图像处理】旋转图像
- Single Image Haze Removal(图像去雾)-CVPR’09 Best Paper
- 解决Adobe Acrobat “正在纠偏图像,正在旋转图像,正在分解页面”问题
- OpenCV文本图像的旋转矫正
- C#图像处理(各种旋转、改变大小、柔化、锐化、雾化、底片、浮雕、黑白、滤镜效果)
- 图像旋转使用CImage实现
- opencv——(动态)旋转图像
- 在J2ME/MIDP中实现图像旋转(二)
- 绕X轴Y轴旋转图像
- 图像的旋转
- Android Jni 利用OpenCV 实现图像任意角度旋转
- opencv提取旋转矩形区域的图像(将旋转矩形区域图像旋转成水平)
- 图像旋转逆时针