YV12转opencv IplImage


<pre name="code" class="cpp">    int bet(int min, int max, int val)
    {
        if (val > max)
            return max;
        else if (val < min)
            return min;
        else
            return val;
    }

    void Yv12ToImg(uchar *pin, IplImage* img)
    {
        uchar y, cb, cr;

        int ySize = img->width * img->height;
        int uSize = ySize / 4;

        uchar *pY = pin;
        uchar *pU = pY + ySize;
        uchar *pV = pU + uSize;

        uchar r, g, b;

        int iheight = img->height;
        int iwidth = img->width;

        int hwidth = iwidth / 2;

        uchar* p = (uchar*)(img->imageData);
        for (int h = 0; h < iheight; h++)
        {
            for (int w = 0; w < iwidth; w++)
            {
                y = pY[h*iwidth + w];

                int offuv = h/2 * hwidth + w/2;
                cb = pU[offuv];
                cr = pV[offuv];

                b = uchar(bet(0, 255,(y + 1.772*(cb - 128))));
                g = uchar(bet(0, 255, (y - 0.344*(cb - 128) - 0.714*(cr - 128))));
                r = uchar(bet(0, 255, (y + 1.402*(cr - 128))));

                int offw = w * 3;
                p[offw] = b;
                p[offw + 1] = g;
                p[offw + 2] = r;
            }
            p += img->widthStep;
        }

    }

时间: 2024-08-03 23:28:56

YV12转opencv IplImage的相关文章

FlyCapture2 fc2Image OpenCV IplImage Conversion 两种图像格式之间的转换

fc2Image是FlyCapture SDK的C语言库中的图片格式,由于在Windows上的MinGW无法编译FlyCapture2的C++库,只能使用C语言库,所以当我们在同时使用OpenCV的图像格式IplImage时,有时候就需要两种格式相互转换.如果需要FlyCapture2 Image和OpenCV IplImage之间的转换,可以参见我之前的博客OpenCV IplImage FlyCapture2 Image Conversion 两种图像类的相互转化.我们先来分别看看两种图像格

opencv Iplimage结构简介

IplImage 结构解读: typedef struct _IplImage{int nSize;                    /* IplImage大小 */int ID;                         /* 版本 (=0)*/int nChannels;           /* 大多数OPENCV函数支持1,2,3 或 4 个通道 */int alphaChannel; /* 被OpenCV忽略 */int depth; /* 像素的位深度: IPL_DEPT

[OpenCV] IplImage and Functions

In this chapter, APIs will make U crazy. Good luck! "modules/core/include/opencv2/core/types_c.h" typedef struct _IplImage { int nSize; /* sizeof(IplImage) */ int ID; /* version (=0)*/ int nChannels; /* Most of OpenCV functions support 1,2,3 or

OpenCV——IplImage

IplImage结构: 1 typedef struct _IplImage 2 { 3 int nSize; /* IplImage大小 */ 4 int ID; /* 版本 (=0)*/ 5 int nChannels; /* 大多数OPENCV函数支持1,2,3 或 4 个通道 */ 6 int alphaChannel; /* 被OpenCV忽略 */ 7 int depth; /* 像素的位深度,主要有以下支持格式: IPL_DEPTH_8U, IPL_DEPTH_8S, IPL_DE

opencv——IplImage结构

一.作业要求: 采用MATLAB或opencv+C编程实现.每一题写明题目,给出试验程序代码,实验结果图片命名区分并作出效果比对,最后实验总结说明每一题蕴含的图像处理方法的效果以及应用场合等. 采用MATLAB编程比采用opencv+C编程得分低:如果MATLAB或opencv+C只在读入图片时采用自带函数(算法核心部分自己独立编程)的,得分高. 二.实验题目: 1. 把一幅灰度图像的垂直分辨率和水平分辨率都变为原来的一半,生成一副新的图像. IplImage 由于OpenCV主要针对的是计算机

OpenNI1.5获取华硕XtionProLive深度图和彩色图并用OpenCV显示

华硕XtionPro类似Kinect,都是体感摄像机,可捕捉深度图和彩色图, 详细参数见:http://www.asus.com.cn/Multimedia/Xtion_PRO_LIVE/specifications/ 实验设定的深度图和彩色图大小都是640*480,如下: 彩色图 未配准时的深度图 配准到彩色图后的深度图 深度图配准到彩色图后的1:1融合图 彩色图配准到深度图后的1:1融合图 代码: #include <stdlib.h> #include <iostream>

【OpenCv】OpenCv原始版本与新版本(2.4.10)的一个简单对比

老版本中使用IplImage指针数据类型,需要手工的分配与释放,比较麻烦. 新版本中直接使用Mat数据结构,避免了这种缺点. 没什么技术含量,废话不多说,直接看代码中的注释. #include <stdio.h> /* 原始版本头文件 #include <opencv\cv.h> #include <opencv\cxcore.h> #include <opencv\highgui.h> */ //新版本(2.4.10)头文件 #include <op

总结一些机器视觉库

通用库/General Library OpenCV   无需多言. RAVL  Recognition And Vision Library. 线程安全.强大的IO机制.包含AAM. CImg  很酷的一个图像处理包.整个库只有一个头文件.包含一个基于PDE的光流算法. 图像,视频IO/Image, Video IO FreeImage DevIL ImageMagick FFMPEG VideoInput portVideo AR相关/Augmented Reality ARToolKit 

Canny边缘检测算法原理及C语言实现详解(原创码字)

Canny算子是John Canny在1986年提出的,那年老大爷才28岁,该文章发表在PAMI顶级期刊上的(1986. A computational approach to edge detection. IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 8, 1986, pp. 679-698).老大爷目前在加州伯克利做machine learning,80-90年代视觉都是图像处理,现在做视觉都是机器