文档章节

Rgb to Yuv,Tuv to Rgb转换(C# emgucv)

Ne0o0
 Ne0o0
发布于 2016/09/02 14:32
字数 372
阅读 145
收藏 1
        private void Rgb2Yuv(Image<Bgr, Byte> img, Image<Gray, double> yImg, Image<Gray, double> uImg, Image<Gray, double> vImg)
        {
            //  Y= 0.3*R + 0.59*G + 0.11*B
            //  U= (B-Y) * 0.493
            //  V= (R-Y) * 0.877
            double Y = 0.0, U = 0.0, V = 0.0;
            for (int h = 0; h < img.Height; ++h)
            {
                for (int w = 0; w < img.Width; ++w)
                {
                    //Y = 0.11 * img.Data[h, w, 0] + 0.59 * img.Data[h, w, 1] + 0.3 * img.Data[h, w, 2];
                    //U = (img.Data[h, w, 0] - Y) * 0.493;
                    //V = (img.Data[h, w, 2] - Y) * 0.877;
                    Y = 0.257 * img.Data[h, w, 0] + 0.504 * img.Data[h, w, 1] + 0.098 * img.Data[h, w, 2] + 16;
                    U = 0.148 * img.Data[h, w, 0] - 0.291 * img.Data[h, w, 1] + 0.439 * img.Data[h, w, 2] + 128;
                    V = 0.439 * img.Data[h, w, 0] - 0.368 * img.Data[h, w, 1] - 0.071 * img.Data[h, w, 2] + 128;
                    yImg.Data[h, w, 0] = Y;
                    uImg.Data[h, w, 0] = U;
                    vImg.Data[h, w, 0] = V;
                }
            }
        }
        //Y = 0.257R + 0.504G + 0.098B + 16
        //U = 0.148R - 0.291G + 0.439B + 128
        //V = 0.439R - 0.368G - 0.071B + 128

        //B = 1.164(Y - 16) + 2.018(U - 128)
        //G = 1.164(Y - 16) - 0.813(V - 128) - 0.391(U - 128)
        //R = 1.164(Y - 16) + 1.596(V - 128)

        private void Yuv2Rgb(Image<Gray, double> yImg, Image<Gray, double> uImg, Image<Gray, double> vImg, Image<Bgr, Byte> img)
        {
            //R = Y + 1.4075 *(V-128)
            // G = Y – 0.3455 *(U –128) – 0.7169 *(V –128)
            // B = Y + 1.779 *(U – 128)


            double Y = 0.0, U = 0.0, V = 0.0;
            for (int h = 0; h < img.Height; ++h)
            {
                for (int w = 0; w < img.Width; ++w)
                {
                    Y = yImg.Data[h, w, 0];
                    U = uImg.Data[h, w, 0];
                    V = vImg.Data[h, w, 0];
                    //byte R = (byte)(Y + 1.4075 *(V-mid));
                    //byte G = (byte)(Y-0.3455 *(U-mid)-0.7169*(V-mid));
                    //byte B = (byte)(Y + 1.779 *(U-mid));

                    byte B = (byte)(1.164 * (Y - 16) + 2.018 * (U - 128));
                    byte G = (byte)(1.164 * (Y - 16) - 0.813 * (V - 128) - 0.391 * (U - 128));
                    byte R = (byte)(1.164 * (Y - 16) + 1.596 * (V - 128));

                    if (B > 255) B = 255;
                    if (B < 0) B = 0;
                    if (G > 255) G = 255;
                    if (G < 0) G = 0;
                    if (R > 255) R = 255;
                    if (R < 0) R = 0;
                    img.Data[h, w, 0] = B;
                    img.Data[h, w, 1] = G;
                    img.Data[h, w, 2] = R; ;
                }
            }
        }

© 著作权归作者所有

共有 人打赏支持
Ne0o0
粉丝 2
博文 70
码字总数 29011
作品 0
程序员
私信 提问
C# 利用 OpenCV 进行视频捕获

简介 这个项目是关于如何从网络摄像头或者视频文件(*.AVI)中捕获视频的,这个项目是用C#和OPENCV编写的。 这将有助于那些喜欢C#和OpenCV环境的人。这个程序完全基于Visual Studio 2010 ve...

oschina
2014/02/09
16.7K
1
OpenCV3.4 0xc00007b问题解决

此问题是相关的dll放置system32或SysWOW64有问题 先删除system32,SysWOW64目录下的 ucrtbased.dll,msvcp120d.dll, 直到提示缺少相关的dll文件 然后放置32版本到system32,如果还是提示0xc0000...

xfan1503
2018/09/29
0
0
[转载]转载,opencv轮廓查找,匹配以及特征提取,实例

已有 9450 次阅读 2012-3-15 20:50 |系统分类:科研笔记|关键词:opencv 轮廓 轮廓的查找、表达、绘制、特性及匹配(How to Use Contour? Find, Component, Construct, Features & Match) 作者:...

andyhe91
2014/12/19
0
0
OpenCV(EmguCV)2.1新特性介绍之图像分割GrabCut

作者:王先荣 前不久OpenCV和EmguCV相继发布了2.1版,增加了一些新的特性,本文关注的是其中的图像分割部分——GrabCut。GrabCut主要用于图像编辑中的抠图,作用跟Photoshop中的魔法棒、套索...

鉴客
2012/01/13
4.8K
0
一款高效视频播放控件的设计思路(c# WPF版)

  因工作的需要,开发了一款视频播放程序。期间也经历许多曲折,查阅了大量资料,经过了反复测试,终于圆满完成了任务。 我把开发过程中的一些思路、想法写下来,以期对后来者有所帮助。 ...

源之缘
2018/09/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Linux iptables之mangle表使用案例

mangle表的用途 mangle表的主要功能是根据规则修改数据包的一些标志位,以便其他规则或程序可以利用这种标志对数据包进行过滤或策略路由。 mangel表使用示例 示例1-策略路由1 内网的客户机通...

月下狼
35分钟前
2
0
OSChina 周日乱弹 —— 兼职我想去学学布偶戏

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @clouddyy : 《火炎 - 女王蜂》 《火炎 - 女王蜂》 手机党少年们想听歌,请使劲儿戳(这里) @小鱼丁 :还在睡觉突然接到一个小哥哥电话“x...

小小编辑
47分钟前
42
3
租房软件隐私保护如同虚设

近日,苏州市民赵先生向江苏新闻广播新闻热线025-84658888反映,他在“安居客”手机应用软件上浏览二手房信息,并且使用该软件自动生成的虚拟号码向当地一家中介公司进行咨询。可电话刚挂不久...

linux-tao
今天
3
0
分布式项目(五)iot-pgsql

书接上回,在Mapping server中,我们已经把数据都整理好了,现在利用postgresql存储历史数据。 iot-pgsql 构建iot-pgsql模块,这里我们写数据库为了性能考虑不在使用mybatis,换成spring jd...

lelinked
今天
6
0
一文分析java基础面试题中易出错考点

前言 这篇文章主要针对的是笔试题中出现的通过查看代码执行结果选择正确答案题材。 正式进入题目内容: 1、(单选题)下面代码的输出结果是什么? public class Base { private Strin...

一看就喷亏的小猿
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部