博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【OpenCV】图像转成YUV420 I420格式
阅读量:7080 次
发布时间:2019-06-28

本文共 1626 字,大约阅读时间需要 5 分钟。

一、YUV420 I420介绍

一种颜色编码方法,在YUV色彩空间中,Y表示亮度信号,U、V表示色度信号;

其YUV排列如下,4个Y分量(2x2)对应一个U和V, Y存放完,接着存放U,U存放完,最后是V分量

二、代码实现(opencv2.4.8)

#include 
#include
#include
using namespace cv;int main(int argv, char **argc){ IplImage *pstImage = NULL; IplImage *pstYUVImage = NULL; FILE *fp = NULL; pstImage = cvLoadImage("D:\\test.jpg", CV_LOAD_IMAGE_COLOR); fp = fopen("D://out.yuv", "wb"); pstYUVImage = cvCreateImage(cvSize(pstImage->width, pstImage->height), IPL_DEPTH_8U, 3); cvCvtColor(pstImage, pstYUVImage, CV_BGR2YUV); for(int i = 0; i < pstImage->width * pstImage->height; i++) { //提取Y分量 fwrite(&pstYUVImage->imageData[i*3], 1 , 1, fp); //提取U分量 //fwrite(&pstYUVImage->imageData[i*3+2], 1 , 1, fp); //提取V分量 //fwrite(&pstYUVImage->imageData[i*3+1], 1 , 1, fp); } for(int i = 0; i < pstImage->height; i = i+2) { for(int j = 0; j < pstImage->width; j= j+2) { //提取U分量 fwrite(&pstYUVImage->imageData[3*(i*pstImage->width + j)+2], 1 , 1, fp); } } for(int i = 0; i < pstImage->height; i = i+2) { for(int j = 0; j < pstImage->width; j = j+2) { //提取V分量 fwrite(&pstYUVImage->imageData[3*(i*pstImage->width + j)+1], 1 , 1, fp); } } cvShowImage("Win", pstImage); cvWaitKey(0); cvReleaseImage(&pstImage); cvReleaseImage(&pstYUVImage); fclose(fp); return 0;}

三、查看YUV图像

去本地查看,用7yuv工具查看,格式选择YUV420 I420格式,如下图:

本文转自风一样的码农博客园博客,原文链接:http://www.cnblogs.com/chenpi/p/5128233.html,如需转载请自行联系原作者

你可能感兴趣的文章
架构师都知道的分布式对象存储解决方案
查看>>
[译] 提高编程能力的秘诀
查看>>
Java&Spring系列笔记
查看>>
一次全栈实践心得
查看>>
如今,收入最高编程语言资料汇总!看到就是赚到哦!
查看>>
参数使用小技巧
查看>>
2019年成为优秀的Java开发人员的10个技巧
查看>>
MWeb集成七牛云图床服务、上传图片
查看>>
创业新机:朋友圈广告位大改,“解刨”小程序的真正价值
查看>>
小猿圈web前端之JavaScript放大镜效果
查看>>
奇点大学人工智能专家:人造智能大脑已接近现实
查看>>
Python学习笔记 - 环境搭建
查看>>
大数据算法:kNN算法
查看>>
静态路由实验题
查看>>
简单理解Ajax原理
查看>>
Delphi XE2 之 FireMonkey 入门(18) - TLang(多语言切换的实现)
查看>>
学用 ASP.Net 之 System.DateTime 结构
查看>>
我的友情链接
查看>>
互联网枭雄点评之周鸿祎 - 不甘老去的互联网老兵
查看>>
PKI_IOS证书加密L2L ×××
查看>>