09:图像旋转翻转变换
时间:2022-05-07
本文章向大家介绍09:图像旋转翻转变换,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
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
1 #include<iostream>
2 #include<cstring>
3 #include<cstdio>
4 #include<cmath>
5 #include<queue>
6 #include<vector>
7 #include<algorithm>
8 using namespace std;
9 int n,m;
10 int c[1001][1001];
11 int b[1001][1001];
12 char zx[101];
13 void zh(char a)
14 {
15 if(a=='A')
16 {
17 for(int i=1;i<=n;i++)
18 {
19 for(int j=1;j<=m;j++)
20 {
21 b[j][n-i+1]=c[i][j];
22 }
23 }
24 }//顺时针旋转90度
25 if(a=='B')
26 {
27 for(int i=1;i<=n;i++)
28 {
29 for(int j=1;j<=m;j++)
30 {
31 b[m-j+1][i]=c[i][j];
32 }
33 }
34 }//逆时针旋转90度
35 if(a=='C')
36 {
37 for(int i=1;i<=n;i++)
38 {
39 for(int j=1;j<=m;j++)
40 {
41 b[i][m-j+1]=c[i][j];
42 }
43 }
44 }//左右翻转
45 if(a=='D')
46 {
47 for(int i=1;i<=n;i++)
48 {
49 for(int j=1;j<=m;j++)
50 {
51 b[n-i+1][j]=c[i][j];
52 }
53 }
54 }//上下翻转
55 memcpy(c,b,sizeof(c));
56 if(a=='A'||a=='B')swap(m,n);
57 }
58 int main()
59 {
60 cin>>n>>m;
61 for(int i=1;i<=n;i++)
62 {
63 for(int j=1;j<=m;j++)
64 {
65 cin>>c[i][j];
66 }
67 }
68 scanf("%s",&zx);
69 for(int i=0;i<strlen(zx);i++)
70 {
71 zh(zx[i]);
72 }
73 for(int i=1;i<=n;i++)
74 {
75 for(int j=1;j<=m;j++)
76 {
77 cout<<c[i][j]<<" ";
78 }
79 cout<<endl;
80 }
81 return 0;
82 }
- 腾讯移动安全实验室发布《2013年手机安全报告》
- 自定义Unity 容器的扩展 --- Unity Application Block Event Broker
- LINQ to SQL集成到应用程序中需考虑的一些问题
- WCF的追踪分析工具——SvcPerf
- 解决七牛云存储缓存加速Gravatar 头像图片路径url 参数失效的问题
- 命令行解析的规则以及Command Line Parser Library
- 简单代码让WordPress 支持电子邮箱(Email)作为登录名
- .NET Migration工具
- 如何有效监控.NET 应用程序
- 写入Ring Buffer
- Enterprise Library 4 缓存快速入门
- Enterprise Library 4 缓存应用程序块的设计
- 让WordPress 在RSS 中Feed 输出支持“More”标签
- WordPress文章版权保护:复制文字自动添加版权信息
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- WebSocket 初识篇
- (一)MessageQueue之消息入队
- 宇智波程序笔记2-kafka 生产发送消息失败无响应,
- 高并发系统三大利器之缓存
- Nuxt.js框架(SSR)学习笔记
- 也谈状态模式
- BFE.dev前端刷题1 - 实现curry()
- BFE.dev前端刷题2 - 实现curry() 并支持placeholder
- TKE集群日志解决方案之日志采集
- Newbe.Claptrap 框架入门,第三步 —— 定义 Claptrap,管理商品库存
- 以 B 站为例,聊聊站内消息系统的设计
- 微信小程序开发实战(22):上传文件和下载文件
- 语法糖--JAVA成长之路
- 使用 GitHub Action来托管AutoML软件
- Python爬虫实现自动登录、签到功能 附代码