Q1.6 To rotate a image by 90 degress.
2015-01-17 09:51
330 查看
Q: Given an image represented by an NxN matrix, where each pixel in theimage is 4 bytes, write a method to rotate the image by 90 degrees.Can you do this in place?
A:
思路一:第一步交换主对角线两侧的对称元素,第二步交换第i行和第n-1-i行。即先交换主对角线对称的元素,在交换关于水平N/2线对称的元素。
思路二: 逐层旋转。 上->右, 右->下, 下->左, 左->上
A:
思路一:第一步交换主对角线两侧的对称元素,第二步交换第i行和第n-1-i行。即先交换主对角线对称的元素,在交换关于水平N/2线对称的元素。
思路二: 逐层旋转。 上->右, 右->下, 下->左, 左->上
#include<iostream> #include<vector> using namespace std; void swap(int &a, int &b){ int t = a; a = b; b = t; } void rotateImage1(int matrix[][4], int n) { for (int i = 0; i < n; i++) { for (int j = 0; j < n - 1 - i; j++ ) { swap(matrix[i][j], matrix[n-j-1][n-i-1]); } } for (int i = 0; i < n/2; i++) { for (int j = 0; j < n; j++) { swap(matrix[i][j], matrix[n-1-i][j]); } } return ; } void rotateImage2(int matrix[][4], int n) { for (int layer = 0; layer < n/2; layer++) { int first = layer; int last = n - 1 - layer; for (int i = first; i < last; i++) { int offset = i - first; int top = matrix[first][i]; matrix[first][i] = matrix[last-offset][first]; matrix[last-offset][first] = matrix[last][last - offset]; matrix[last][last - offset] = matrix[i][last]; matrix[i][last] = top; } } } int main() { int a[4][4] = { {1,2,3,4}, {5,6,7,8}, {9,10,11,12}, {13,14,15,16} }; for(int i=0; i<4; ++i){ for(int j=0; j<4; ++j) cout<<a[i][j]<<" "; cout<<endl; } cout<<endl; rotateImage2(a, 4); for(int i=0; i<4; ++i){ for(int j=0; j<4; ++j) cout<<a[i][j]<<" "; cout<<endl; } return 0; }
相关文章推荐
- Ch1.6: IN-place-ly rotate a pic(NxN matrix) by 90 digree in Verilog(CPP)
- Step-by-step guide to installing the Automatic Image Slider w/ CSS & jQuery from Soh Tanaka in Zen Cart
- How to read images from drawable folder, not by R.drawable.[imageid]
- Introduction to Glide, Image Loader Library for Android, recommended by Google
- "Unable to get image data from canvas because the canvas has been tainted by cross-origin data"问题产生原因及解决办法
- 【7】Rotate matrix by 90 degrees
- how to post URL with Image on facebook by ShareKit
- 解决No “rule to make target `../Database/images/login.png', needed by `debug/qrc_image.cpp'. Stop.”
- "Unable to get image data from canvas because the canvas has been tainted by cross-origin data"问题产生原
- 论文学习——Stereo Matching by Training a Convolutional Neural Network to Compare Image Patches
- [leetcode]Rotate Image, Matrix tranposition, matrix rotation 90 degree @ Python
- [LeetCode] Rotate Image n-by-n矩阵顺时针旋转
- Rotate a UIImage by 90 degree angles
- cocos2d之CCRotateTo、CCRotateBy
- cocos2dx 一步步入门 CCMoveTo/CCMoveBy/CCRotateTo/CCRotateBy
- 【Deep Learning】Review of Stereo Matching by Training a Convolutional Neural Network to Compare Image
- Introduction to Glide, Image Loader Library for Android, recommended by Google
- How to flash image by fastboot
- pdfrotate:rotates each page in a pdf file by a given angle(now support 90,180,270)
- Using GDI+ in a Single Document MFC Project to Rotate, Zoom, and Constraint an Image