NV21数据 镜像 旋转
也可以看看这个;
https://www.jianshu.com/p/a6ea929b587c
镜像:
https://blog.csdn.net/quantum7/article/details/79747796
//NV21: YYYY VUVU
byte[] NV21_mirror(byte[] nv21_data, int width, int height)
{int i;int left, right;byte temp;int startPos = 0;// mirror Yfor (i = 0; i < height; i++){left = startPos;right = startPos + width - 1;while (left < right){temp = nv21_data[left];nv21_data[left] = nv21_data[right];nv21_data[right] = temp;left ++;right--;}startPos += width;}// mirror U and Vint offset = width * height;startPos = 0;for (i = 0; i < height / 2; i++){left = offset + startPos;right = offset + startPos + width - 2;while (left < right){temp = nv21_data[left ];nv21_data[left ] = nv21_data[right];nv21_data[right] = temp;left ++;right--;temp = nv21_data[left ];nv21_data[left ] = nv21_data[right];nv21_data[right] = temp;left ++;right--;}startPos += width;}return nv21_data;
}
https://blog.csdn.net/emily2015/article/details/79592920
通过摄像头采集的yuv数据经过旋转处理后,再进行镜像处理。
旋转public class YUV420spRotateUtils {//后置旋转90度;public static byte[] rotateYUVDegree90(byte[] data, int imageWidth, int imageHeight) {byte[] yuv = new byte[imageWidth * imageHeight * 3 / 2];// Rotate the Y lumaint i = 0;for (int x = 0; x < imageWidth; x++) {for (int y = imageHeight - 1; y >= 0; y--) {yuv[i] = data[y * imageWidth + x];i++;}}// Rotate the U and V color componentsi = imageWidth * imageHeight * 3 / 2 - 1;for (int x = imageWidth - 1; x > 0; x = x - 2) {for (int y = 0; y < imageHeight / 2; y++) {yuv[i] = data[(imageWidth * imageHeight) + (y * imageWidth) + x];i--;yuv[i] = data[(imageWidth * imageHeight) + (y * imageWidth) + (x - 1)];i--;}}return yuv;}//前置旋转270度;public static byte[] rotateYUVDegree270(byte[] data, int imageWidth, int imageHeight) {byte[] yuv = new byte[imageWidth * imageHeight * 3 / 2];// Rotate the Y lumaint i = 0;for (int x = imageWidth - 1; x >= 0; x--) {for (int y = 0; y < imageHeight; y++) {yuv[i] = data[y * imageWidth + x];i++;}}// Rotate the U and V color componentsi = imageWidth * imageHeight;for (int x = imageWidth - 1; x > 0; x = x - 2) {for (int y = 0; y < imageHeight / 2; y++) {yuv[i] = data[(imageWidth * imageHeight) + (y * imageWidth) + (x - 1)];i++;yuv[i] = data[(imageWidth * imageHeight) + (y * imageWidth) + x];i++;}}return yuv;}
}
镜像//镜像;public byte[] frameMirror(byte[] data, int width, int height) {byte tempData;for (int i = 0; i < height * 3 / 2; i++) {for (int j = 0; j < width / 2; j++) {tempData = data[i * width + j];data[i * width + j] = data[(i + 1) * width - 1 - j];data[(i + 1) * width - 1 - j] = tempData;}}return data;}
NV21数据 镜像 旋转相关推荐
- CameraX API 的 YUV_420_888 图像转换为NV21数据和Bitmap
CameraX打开相机预览的功能这里不赘述,大家可以在Android官网找到 CameraX 概览 | Android 开发者 | Android Developershttps://deve ...
- NV21格式图像旋转 c++,平移、缩放实现代码
文章目录 NV21格式图像旋转 基础知识 逆时针旋转90° NV21格式图像旋转 刚刚接触Android开发,开始学习一些图像像素格式,需要完成 NV21 的图像进行旋转,这里我们将从原理开始分析,分 ...
- linux drbd同步,DRBD数据镜像主备节点同步数据
一.DRBD的安装 2.编译安装 [root@web1 drbd-8.4.6]# yum install kernel kernel-devel kernel-headers flex [root@w ...
- linux数据软件,Linux数据安全工具:数据镜像软件DRBD的管理与维护
原标题:Linux数据安全工具:数据镜像软件DRBD的管理与维护 1.启动DRDB (1)在两个节点执行 在启动DRBD之前,需要分别在两台的hdb1分区上创建供DRBD记录信息的数据块.具体是分别在 ...
- 图片文件转Bitmap-Bitmap转NV21-ARGB数据转化为NV21数据
在Android中有时候需要将本地文件转换为Bitmap 这里提供3种方法 Bitmap bitmap= BitmapFactory.decodeFile("文件路径"); Fil ...
- 08 Confluent_Kafka权威指南 第八章:跨集群数据镜像
文章目录 CHAPTER 8 Cross-Cluster Data Mirror 跨集群数据镜像 Use Cases of Cross-Cluster Mirroring 跨集群镜像用例 Multic ...
- kafka传递文件_Kafka权威指南(二)数据传递/数据管道/数据镜像
可靠的数据传递 可靠性保证 - kafka可以保证分区消息的顺序 - 只有当消息被写入分区的所有同步副本时,才被认为是已提交的 - 只要还有一个副本是活跃的,那么已经提交的消息就不会丢失 - 消费者只 ...
- FFmpeg之视频/图片镜像旋转(十三)
一.视频左右/上下镜像和任意旋转 //mp4向左旋转90度 # ffmpeg -i input.mp4 -metadata:s:v rotate="90" -codec copy ...
- drbd配置文件_Linux数据安全工具:数据镜像软件DRBD的安装与配置
本文授权转载自微信公众号:计算机与网络安全,转载请联系授权. 微信公众号:计算机与网络安全 ID:Computer-network 1.安装环境说明 操作系统统一采用CentOS5.5-x86-64, ...
最新文章
- linux只提取前两个目录名,Linux技巧:介绍从目录路径获取文件名和目录前缀的方法...
- BZOJ5415:[NOI2018]归程(可持久化并查集,最短路)
- 报错 findMergedAnnotation activemq
- 花开的声音 - 张靓颖
- bash: jps: command not found
- MYSQL中的SELECT查询时进行运算
- weblogic 解决线程阻塞
- java try 性能损耗_Java 中的 try catch 影响性能吗?
- matlab GUI 设计
- “鱼渔合作”在IT运维中的启示
- linux权限不够【操作方案】
- 谷歌浏览器:快速切换搜索引擎
- LeNet论文阅读笔记
- 开启win10隐藏语音库
- 【毕业设计】基于单片机的火灾报警系统 -stm32 单片机物联网
- php js广告,JavaScript_用JS调用谷歌 AdSense广告的方法, 具体的google广告的js文件做 - phpStudy...
- iOS真机不能运行,模拟器可以
- BabaSSL:支持半同态加密算法 EC-ElGamal
- EOS智能合约开发系列(二)
- php邮箱必填,ZBlogPHP-1.5 以上版本修改实现用户评论时必填邮箱的功能
热门文章
- MFC中定义全局变量和全局函数的方法
- string.h 的实现
- handler.post(r)同一个线程的疑惑
- 九、Swift对象存储服务(双节点搭建)
- android 设置单边框,详解Android用Shape制作单边框图的两种思路和坑
- 专题 14 IPC之共享内存
- python函数的参数类型,Python函数的主要参数类型
- mysql多数据源切换_Springboot项目实现Mysql多数据源切换的完整实例
- mllib逻辑回归 spark_Spark架构详解——分布式流计算内存批处理迭代运算框架
- linux安装redis教程yum,linux下yum安装redis以及使用