【OpenCV】图像转成YUV420 I420格式
2024-10-11 11:20:40
一、YUV420 I420介绍
一种颜色编码方法,在YUV色彩空间中,Y表示亮度信号,U、V表示色度信号;
其YUV排列如下,4个Y分量(2x2)对应一个U和V, Y存放完,接着存放U,U存放完,最后是V分量
二、代码实现(opencv2.4.8)
#include <opencv/highgui.h>
#include <opencv/cv.h>
#include <opencv2/imgproc/imgproc_c.h> 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, ); cvCvtColor(pstImage, pstYUVImage, CV_BGR2YUV); for(int i = ; i < pstImage->width * pstImage->height; i++)
{
//提取Y分量
fwrite(&pstYUVImage->imageData[i*], , , fp);
//提取U分量
//fwrite(&pstYUVImage->imageData[i*3+2], 1 , 1, fp);
//提取V分量
//fwrite(&pstYUVImage->imageData[i*3+1], 1 , 1, fp);
} for(int i = ; i < pstImage->height; i = i+)
{
for(int j = ; j < pstImage->width; j= j+)
{
//提取U分量
fwrite(&pstYUVImage->imageData[*(i*pstImage->width + j)+], , , fp);
}
} for(int i = ; i < pstImage->height; i = i+)
{
for(int j = ; j < pstImage->width; j = j+)
{
//提取V分量
fwrite(&pstYUVImage->imageData[*(i*pstImage->width + j)+], , , fp);
}
} cvShowImage("Win", pstImage); cvWaitKey();
cvReleaseImage(&pstImage);
cvReleaseImage(&pstYUVImage);
fclose(fp);
return ;
}
三、查看YUV图像
去本地查看,用7yuv工具查看,格式选择YUV420 I420格式,如下图:
最新文章
- spring batch部分
- PHP: 手把手编写自己的 MVC 框架实例教程
- 高级Javascript调试——console.table()
- 怎么写jq插件?
- 【Python】 sorted函数
- C函数tolower,与toupper
- 云服务器 ECS Linux 修改编码格式
- 正则表达式删除指定的HTML 标签
- myeclipse自动生成注释
- Tomcat服务器无法启动socket监听端口
- JavaScript数据可视化编程学习(二)Flotr2,雷达图
- Cesium基础使用介绍
- Java 读书笔记 (十一) Number &; Math 类
- SD第九届省赛B题 Bullet
- 走进Java中的持有对象(容器类)之一 容器分类
- jquery.qrcode.js 生成二维码并支持中文的方法
- C语言:内存的分配与管理
- 编写一个Filter,除继承HttpServlet类外还需要( )。
- Mock&;Spring集成
- 请写出5种常见到的runtime exception。