在做人脸识别的时候,需要把Camera预览的图像保存成一张图片,在网上找到了以下的方法
static public void decodeYUV420SP(byte[] rgb, byte[] yuv420sp, int width, int height) { final int frameSize = width * height; int yp = 0; for (int j = 0; j < height; j++) { int uvp = frameSize + (j >> 1) * width, u = 0, v = 0; for (int i = 0; i < width; i++) { int y = (0xff & ((int) yuv420sp[yp])) - 16; if (y < 0) y = 0; if ((i & 1) == 0) { v = (0xff & yuv420sp[uvp++]) - 128; u = (0xff & yuv420sp[uvp++]) - 128; } int y1192 = 1192 * y; int r = (y1192 + 1634 * v); int g = (y1192 - 833 * v - 400 * u); int b = (y1192 + 2066 * u); // if (r < 0) r = 0; if (r > 262143) r = 262143; // if (g < 0) g = 0; if (g > 262143) g = 262143; // if (b < 0) b = 0; if (b > 262143) b = 262143; rgb[3*yp] = (byte) ((r >> 10) & 0xff); rgb[3*yp+1] = (byte) ((g >> 10) & 0xff); rgb[3*yp+2] = (byte) ((b >> 10) & 0xff); ++yp; } } } } // end of ProcessImageAndDrawResults class
原始的方法中是没有上面的三个注释的。为了保持图片的RGB的值在0-262143.但是使用上面的方法是发现图片特别不清晰,显示偏红,后面找原因才发现,因为对RGB值的限制,导致了很多的点都被过滤掉了。当按照上面的方法把小于0的限制去掉时,便没有这样的问题了,但可能会在强光的情况下有亮蓝色显示。这点暂时还没有解决。
相关推荐
C/C++ 源码,图像RGB格式转换为YUV420格式和图像YUV420sp格式转换为YUV422,亲测有效,已经得到验证过
关于YUV420sp即NV21格式的图像解码
YUV420与RGB24之间转换,ConvertYUV2RGB,
rgb转yuv420sp_nv12的硬件加速,opengles 的shader实现
零开始学习音视频编程技术(十五) YUV420P转RGB32 在转换的基础加上了Qt显示的界面。实现了Qt播放YUV420P文件 这是Qt的工程,建议使用Qt Creator 打开 Qt的版本是4.8.4,当然是用Qt5也是没有影响的,不过编译器...
利用opencv开源库,c++实现rgb转yuv420
rgb24转yuv420高效率 完整代码,C++实现 http://blog.csdn.net/qq214517703/article/details/52314255
FFmpeg实现YUV420P视频序列转RGB24视频序列(VC2010),参考这方面的大牛代码,基本没修改什么,只是在主要地方添加了注释,另外在包里面放了相关文件的播放器工具
用matlab代码rgb转yuv格式(包含yuv420sp,yuv420p,yuv422i等),输出二进制文件和文本文件,其中二进制.yuv文件用yuvplayer软件可以打开正确显示。
将内存中YUV数据(char* pBuf,int nLen)转成opencv的Mat格式,RGB显示
将预览的到的每一帧yuv420数据通过转码(yuv420->rgb565->bmp),保存
完整c源代码,直接编译即可测试,方便简单,编译移植,nv21网上资源比较少,需要测试rgb图片里面也已经放了两张供测试用,大家共同学习共同进步
hisi3516dv300, 用IVE将yuv420数据转换成bgr,包含源代码和测试数据。
YUV和RGB 色彩空间 什么是YCbCr ;YUV420P 和 YUV420SP 的区别;YUV和RGB的区别和互相转换
视频与图像RGB_YUV格式详解
半平面格式:NV12(也叫YUV420SP);NV21;NV16(也叫YUV422SP);NV61 支持保存为BMP、RGB文件。 介绍:http://www.latelee.org/programming-under-windows/my-yuvplayer.html 源码仓库:...
将yuv420格式图像文件的NV12排列转化成YV12的小程序。
1)该工具支持查看原始数据YUV420SP, YUV420P,RGB24,RGB32等; 2)当分辨率的宽或高小于100,需要手动输入宽高; 3)建议调试使用的原始数据打上分辨率,工具支持根据文件名自动打开。
ImageHelper图像的格式转换包括(yuv422sp,yuv422p,rgb,rgb32,bgr,bgr32和yv12,yu12,和yuv的其他各种格式的互转,以及图像的格式的过滤操作)
YUV444、YUV422、YUV420格式讲解,区分YUV420与YUV420SP的不同,简单了解之间的转换方式。介绍YUV与RGB之间的转换方式。