`
daojin
  • 浏览: 700542 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

NV21 转YUY2

 
阅读更多
void NV21_2_YUY2(char *src, char *dst, int width, int height) {
    int size = width*height;
    char* pSrcUV = src + size;
    for(int i = 0; i < size; ++ i){
        dst[i*2] = src[i];
    }
    int p1 = 0;
    int vPos = 0;
    for(int y = 0; y < height; ++ y){
        //int vPos = y/2*width;
        if(y%2 != 0){
            vPos -= width;
        }
        for (int x = 0; x < width/2; ++x) {
            int uPos = vPos + 1;
            int p2 = p1 + 2;//yv point
            dst[p1 + 1] = pSrcUV[uPos];
            dst[p2 + 1] = pSrcUV[vPos];
            vPos += 2;
            p1 += 4;
        }
    }
}

void  YUY2_2_NV21(char *src, char *dst, int width, int height) {
    char* pDstY  = dst;
    char* pDstUV = dst + width*height;
    int halfH = height/2;
    int halfW = width/2;
    int stride = width*2;
    int p1, p2, p3, p4;
    int index = 0;
    for(int y = 0; y< halfH; ++ y){
        for(int x = 0; x < halfW; ++ x){
            //int px = 2*x;
            //int py = 2*y;
            //int index = py*stride + px*2;
            p1 = (index);
            p2 = (index) + 2;
            p3 = (index) + stride;
            p4 = (index) + stride + 2;
            pDstUV[y*width + x*2] = (src[p2+1] + src[p4+1])/2;
            pDstUV[y*width + x*2 + 1] = (src[p1+1] + src[p3+1])/2;
            pDstY[p1>>1] = src[p1];
            pDstY[p2>>1] = src[p2];
            pDstY[p3>>1] = src[p3];
            pDstY[p4>>1] = src[p4];
            index += 4;
        }
        index += stride;
    }
}

 

分享到:
评论

相关推荐

    摄像头格式YUYV转NV21格式代码实现

    摄像头格式YUYV转成NV21格式代码的java代码实现。直接可以使用

    YUV颜色空间转换(YV12、NV12、NV21、I420、RGB等)

    本程序实现了简单的YUV数据之间的转换和YUV与RGB的转换。 注:1、本程序只是简单YUV之间的颜色... 5)NV21_2_YV12; 6)YV12_2_NV21; 7)I420_2_rgb32; 8)rgb32_2_I420; 9)I420_2_rgb24; 10)rgb24_2_I420。

    YUY420(YV12)转YUY2(YUV420),读取yuv文件转成YUY2文件

    YUY420(也称为YV12)和YUY2(也称为YUV422)是两种不同的YUV格式,它们在存储和处理视频帧时具有不同的布局和效率。这篇文章将深入探讨这两种格式以及如何在它们之间进行转换。 YUY420(YV12)格式是YUV色彩空间的...

    UYVY 装NV21.java

    UYVY转NV21的java版本,网上常见的是C的,Java的几乎没有,我这个是实际用过的.

    YV16ToI420 YV16ToNV16 YUY2ToNV12 YUV视频格式转换c代码

    YV16转I420 YV16转NV16 YUY2转NV12 的YUV视频格式转换c代码

    YUV420P、YV12、NV12、YV12格式转NV12保存图片

    是一个相互转换的工具,在android Camera parameters.setPreviewFormat(ImageFormat.YV12); 如果要保存图片,或着保存视频时使用的一个工具类 YUV420P、I420、NV12、YV12...如果你输出格式是nv21 或者 yuy2 转图片

    UYVY 转NV12和YV12

    公司用TI 的3630方案,camera输出是uyvy,但是qq HD视频需要的却是420的NV12(非标准,V在U前面),网上没找到合适的算法,自己学了一个。

    UYVY,YUY2,YVYU 转 YV12

    UYVY,YUY2,YVYU 转 YV12 已经通过验证转换正常,简单易用,直接运行;

    java YV12 转化代码

    byte[] nv21 = new byte[frameSize + width * height / 2]; System.arraycopy(yv12, 0, nv21, 0, frameSize); // copy Y int uvp = frameSize; int uvRowStride = width / 2; int uvPixelStride = 1; for ...

    yuyv(yuv422)和nv12(yuv420)转RGB代码

    为了实现摄像头视频采集后的视频格式转化,yuyv(yuv422)和nv12(yuv420)转RGB代码。

    基于D3D的YV12视频渲染

    基于D3D的YUV视频显示源代码,可以同时支持YV12、I420、NV12、YUY2、UYVY、RGB24、RGB32、RGB555、RGB565格式。支持半透明文本叠加。Windows XP SP2 DXSDK9.0c 9800GT测试通过。

    测试图片.zip

    描述中提到了YUV420_NV12、YUV420_NV21以及YUV422_YUYV和YUV422_YUY2这四种不同的YUV格式,它们在像素布局和数据组织上有各自的特点。 1. **YUV420_NV12**:这种格式是4:2:0采样率的一个例子,意味着每个像素的Y...

    jpg转yuv,jpg解码纯c实现,无任何第三方库

    jpg转yuv420/yuv444 ,包括jpg头解析、Huffman解码 、IDCT等。纯C语言实现无任何第三方库。使用方法:代码编译后运行 ./main ./3.jpg ./4.yuv 444 第一个参数是输入jpg路径,第二个参数是输出yuv路径,第三个参数是...

    基于v4l2的摄像头抓图程序,简单的从yuv到bmp转化-v4l2,video to bmp.zip

    1. **解析YUV数据**:YUV数据通常是交错的,程序需要按照YUV的存储格式(例如YUY2、NV12等)正确地解码每个像素。 2. **色彩空间转换**:将YUV数据转换为RGB,因为BMP格式是基于RGB色彩模型的。这涉及到一系列数学...

    YUV格式(高效)视频转换C#

    常见的YUV格式有YUV420P、NV12、I420等,它们在像素布局和色度采样上有所不同。 接下来,我们讨论如何在C#中处理YUV格式的视频。C#作为高级编程语言,通常不直接处理底层硬件或内存,但在需要高性能和低级别操作时...

    DirectShow过滤器-H264编码器

    本过滤器将IYUV,NV12,YUY2,YV12视频流,编码为H264视频流。 参见介绍文章:...

    基于Qt和opencv实现的用于开发人员查看预览各种原始图像格式的小工具源码,支持windows/linux/macos系统

    YV12、YU12/I420、NV21、NV12、YUY2/YUYV、YVYU、UYVY、YUV444、RGB565_L、RGB565_B、BGR565_L、BGR565_B、RGB888、BayerBG、BayerGB、BayerRG、BayerGR、BayerBG_RAW12、BayerGB_RAW12、BayerRG_RAW12、BayerGR_RAW...

    ColorSpace demo

    本文将通过介绍名为"ColorSpace demo"的演示程序,深入探讨RGB、YUY2和NV12这三种常见的色彩空间,并解析它们之间的转换过程。该程序基于.Net 4.0框架开发,为开发者提供了一种直观理解并实践色彩空间转换的工具。 ...

    cpp-rgb2yuv:一个轻量级的转换工具, 用于把RGB像素块转换为YUV

    rgb2yuv 一个轻量级的转换工具, 用于把RGB像素块转换为YUV. 使用时仅需include rgb2yuv.hpp, 库本身不需要编译...YUYV - YUV 4:2:2, Packed, Same as YUY2 YVYU - YUV 4:2:2, Packed UYVY - YUV 4:2:2, Packed VYUY - Y

    qt opengl 渲染 yv12

    qt opengl 渲染 显示 yv12 qt opengl 渲染 显示 yv12 qt opengl 渲染 显示 yv12 qt opengl 渲染 显示 yv12 qt opengl 渲染 显示 yv12

Global site tag (gtag.js) - Google Analytics