zoukankan      html  css  js  c++  java
  • yuv420p转为emgucv的图像格式Emgu.CV.Image<Bgr, Byte>

    GCHandle handle = GCHandle.Alloc(yuvs, GCHandleType.Pinned);
    
    Emgu.CV.Image<Bgr, Byte> image = new Image<Bgr, Byte>(640, 480);
    using (Image<Bgr, Byte> yuv420p = new Image<Bgr, byte>(640, (480 >> 1) * 3, 640, handle.AddrOfPinnedObject())) 
    {
    CvInvoke.CvtColor(yuv420p, image, Emgu.CV.CvEnum.ColorConversion.Yuv420P2Bgr);
    //image now contains the same yuv image in bgr color space //
    this.imgboxVideo.Image = image;
    }

    if (handle.IsAllocated) handle.Free();

    说明:

    1、yuvs为yuv的byte[]数组,
    假设ys,vs,us为一帧图像的y,u,v对应的数组,可以这样获取
    byte[] yuvs = new byte[ys.Length + vs.Length + us.Length]; ys.CopyTo(yuvs, 0); vs.CopyTo(yuvs, ys.Length); us.CopyTo(yuvs, ys.Length + vs.Length);
     
    2. 640为yuv图像的宽,480为高,根据实际需要修改
    3.效率上创建Image比较慢
    Emgu.CV.Image<Bgr, Byte> image = new Image<Bgr, Byte>(640, 480);,
    可以作为程序的全局变量一开始创建,其他转换很快的
     
    Emgu.CV.CvEnum.ColorConversion有很多枚举值,注意根据yuv格式进行选择。比如yv12有Yuv2BgrYv12
     
     
     
     
    阅读(0)评论(0) 编辑 |删除 |推送 |置顶
  • 相关阅读:
    数据库与数据仓库的比较Hbase——Hive
    log4j 配置使用
    hadoop Datanode Uuid unassigned
    kafka相关文章引用
    kafka可靠性
    kafka基本原理
    html
    并发编程
    Python之系统交互(subprocess)
    网络编程
  • 原文地址:https://www.cnblogs.com/jhlong/p/5433892.html
Copyright © 2011-2022 走看看