// 顺时针 90 度
// src 图像数据
// srcW 图像宽度
// srcH 图像高度
// channel 图像通道,如果是RGB,BGR,=3, RGBA = 4,GRAY=1
注意旋转90 后,图像数据的宽高会对调,显示时候自己注意
int RotationRight90(unsigned char * src, int srcW, int srcH, int channel)
{unsigned char * tempSrc = NULL;int mSize = srcW * srcH * sizeof(char) * channel;int i = 0;int j = 0;int k = 0;int desW = 0;int desH = 0;desW = srcH;desH = srcW;tempSrc = (unsigned char *)malloc(sizeof(char) * srcW * srcH * channel);memcpy(tempSrc, src, mSize);for(i = 0; i < desH; i ++){for(j = 0; j < desW; j ++){for(k = 0; k < channel; k ++){src[(i * desW + j) * channel + k] = tempSrc[((srcH - 1 - j) * srcW + i) * channel + k];}}}free(tempSrc);return 0;
}// 逆时针90度
int RotationLeft90(unsigned char * src, int srcW, int srcH, int channel)
{unsigned char * tempSrc = NULL;int mSize = srcW * srcH * sizeof(char) * channel;int i = 0;int j = 0;int k = 0;int desW = 0;int desH = 0;desW = srcH;desH = srcW;tempSrc = (unsigned char *)malloc(sizeof(char) * srcW * srcH * channel);memcpy(tempSrc, src, mSize);for(i = 0; i < desH; i ++){for(j = 0; j < desW; j ++){for(k = 0; k < channel; k ++){src[(i * desW + j) * channel + k] = tempSrc[(j * srcW + i) * channel + k];}}}free(tempSrc);return 0;
}// 旋转180度
int RotationDown(unsigned char * src, int srcW, int srcH, int channel)
{unsigned char * tempSrc = NULL;int mSize = srcW * srcH * sizeof(char) * channel;int i = 0;int j = 0;int k = 0;int desW = 0;int desH = 0;desW = srcW;desH = srcH;tempSrc = (unsigned char *)malloc(sizeof(char) * srcW * srcH * channel);memcpy(tempSrc, src, mSize);for(i = 0; i < desH; i ++){for(j = 0; j < desW; j ++){for(k = 0; k < channel; k ++){src[(i * desW + j) * channel + k] = tempSrc[((srcH - 1 - i) * srcW + srcW - 1 - j) * channel + k];}}}free(tempSrc);return 0;
}

图像旋转c代码实现(90度, -90度, 180度)相关推荐

  1. 【Android RTMP】NV21 图像旋转处理 ( 图像旋转算法 | 后置摄像头顺时针旋转 90 度 | 前置摄像头顺时针旋转 90 度 )

    文章目录 安卓直播推流专栏博客总结 一. 后置摄像头顺时针旋转 90 度 二. 前置摄像头顺时针旋转 90 度 三. NV21 格式图像旋转代码 安卓直播推流专栏博客总结 Android RTMP 直 ...

  2. OpenCV:OpenCV图像旋转的代码

    OpenCV图像旋转的代码 cv::transpose( bfM, bfM ) 前提:使用两个矩阵Mat型进行下标操作是不行的,耗费的时间太长了.直接使用两个指针对拷贝才是王道.不知道和OpenCV比 ...

  3. 360度舵机和180度舵机控制方法小结

    首先先明确一点,360度舵机无法像180度舵机一样控制角度,它只能控制方向和速度. arduino的<servo.h>库提供两个函数控制舵机.write()和writeMicrosecon ...

  4. 45度做人,90度做事,180度为人,360度处世

    导读: 有句话这么说,做人做事必有度,失度必失误. 做人.做事.为人.处世,这是一个不断的递进的过程,是人生不断积累的过程.我们要先学会做人,培养自己的品格,再去认真的做事,在此基础上我们才能体会到为 ...

  5. 45度做人,90度做事,180度为人,360度处事

    俗话说,三思而后行,这句话是在警戒我们遇事不要忙着做决定,要先细细思量,这思量中就包含着做事的度,所谓 做人做事要有度,失度必失 45度做人 人生在世,做人要谦卑.只有谦卑的人才能走更远的路,俯下身子 ...

  6. stm32控制360度舵机和180度舵机

    数字舵机 vs 模拟舵机 "数字舵机区别于传统的模拟舵机,模拟舵机需要给它不停的发送PWM信号,才能让它保持在规定的位置或者让它按照某个速度转动,数字舵机则只需要发送一次PWM信号就能保持在 ...

  7. NV21 图像旋转处理 ( 后置摄像头顺时针旋转 90 度 | 前置摄像头顺时针旋转 90 度 )

    1 . NV21 格式图像数据的排列 : 16 1616 个 Y 灰度数据在前 , 然后 4 44 组 ( 8 88 个 ) VU 色彩值 , 饱和度 , 数据交替存放 ; 2 . NV21 格式的图 ...

  8. css盒子翻转180度,css 调转180度:transform: rotate(180deg);

    ListView控件--2016年12月9日 ListView属性 ListView   名称 说明 AccessKey 重写 WebControl.AccessKey 属性. 不支持将此属性设置 L ...

  9. 【Android RTMP】NV21 图像旋转处理 ( 问题描述 | 图像顺时针旋转 90 度方案 | YUV 图像旋转细节 | 手机屏幕旋转方向 )

    文章目录 安卓直播推流专栏博客总结 一. NV21 图像格式与 Camera图像传感器方向问题 二. NV21 图像格式视频旋转 1. 图像旋转问题及解决方案 ( 顺时针旋转 90 度 ) 2. NV ...

最新文章

  1. ibatis自动生成插件
  2. 【SeeMusic】购买付费版本 ( 进入购买页面 | 购买流程 )
  3. 写了一个操作XML文件的类
  4. 聚类方法:DBSCAN算法研究
  5. 跨域问题解决(我只是搬运工)
  6. 【elasticsearch】 Elasticsearch集群规模和容量规划的底层逻辑
  7. 添加库文件_PLC|教你把 Micro/WIN 的库文件导入到 Micro/WIN SMART 中
  8. idea tomcat debug不能启动的问题
  9. 《Effective Python 2nd》——类与接口
  10. 重写description方法
  11. 三菱plc pwm指令_三菱PLC高速处理指令编程(新手教学)
  12. [bzoj1406][数论]密码箱
  13. Hulu2022校招 | 笔试真题及解法揭秘
  14. c++字符串中元音字母转置
  15. IntelliJ idea2017 安装破解
  16. 获取中国 省市区 js
  17. H3C SecPath F100 系列防火墙基本配置
  18. 谋杀案和杨辉三角改进版
  19. CC00062.LinuxNetwork——|LinuxLNMP部署脚本.V02-|
  20. 什么是快速连接器?如何选择合适的快速密封接头?

热门文章

  1. 向量的外积、内积、正交、平行判断
  2. 从AVB到TSN - 时效性网络来了
  3. 用Flash、HTML5和Unity开发网页游戏的现实
  4. PHY6252 GPIO控制
  5. 什么是特征工程?如何进行特征工程?
  6. JavaWeb中绝对路径和相对路径
  7. 【Linux】Shell编程判断回文数
  8. Nginx 教程(详细)
  9. h5 默认为移动端页面_html5 移动端H5页面设计尺寸规范
  10. Tomcat 闪退解决方法