YUV转为jpg图像的实现
更新时间:2019年12月09日 15:31:25 作者:叶晚zd
今天小编就为大家分享一篇YUV转为jpg图像的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
调用opencv库,将yuv图像转为jpg图像。
代码如下:
# define _CRT_SECURE_NO_WARNINGS
#include <string>
#include <iostream>
#include <fstream>
#include <cv.h>
#include <highgui.h>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;
using namespace std;
int main()
{
int iWidth;
int iHeight;
int iFrameNum;
int iImageSize;
iWidth = 640;
iHeight = 480;
char *inputFileName = "640x480_YUV400.yuv";
FILE *fpIn;
if (fopen_s(&fpIn, inputFileName, "rb"))
{
cout << "File Open Failed!\n";
system("pause");
exit(1);
}
iImageSize = iWidth * iHeight;
unsigned char *InData = (unsigned char*)malloc(iImageSize * sizeof(unsigned char));
unsigned char *uvData = (unsigned char*)malloc(iImageSize / 2 * sizeof(unsigned char));//uv
memset(uvData, 128, iImageSize / 2);
Mat frameYUV(iHeight * 3 / 2, iWidth, CV_8UC1);
Mat frameBGR;
Mat frameRGB;
Mat frameYUV420;
char outName[128];
iFrameNum = 0;
while (1)
{
size_t size = fread(InData, sizeof(unsigned char), iImageSize, fpIn);
if (size == 0)
{
cout << "Read Frame Fail!\n";
system("pause");
break;
}
memcpy(frameYUV.data, InData, iImageSize);
memcpy(frameYUV.data + iImageSize, uvData, iImageSize / 2);
cvtColor(frameYUV, frameBGR, CV_YUV2BGR_I420);
cvtColor(frameBGR, frameRGB, CV_BGR2RGB);
imshow("video", frameRGB);
waitKey(1);
cout << iFrameNum++ << " Frame Processed\n";
sprintf(outName, "outFile/%d.jpg", iFrameNum);
imwrite(outName, frameRGB);
}
free(InData);
free(uvData);
fclose(fpIn);
return 0;
}
以上这篇YUV转为jpg图像的实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
基于Numpy.convolve使用Python实现滑动平均滤波的思路详解
这篇文章主要介绍了Python极简实现滑动平均滤波(基于Numpy.convolve)的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下2019-05-05
利用Python实现Windows下的鼠标键盘模拟的实例代码
本篇文章主要介绍了利用Python实现Windows下的鼠标键盘模拟的实例代码,具有一定的参考价值,有兴趣的可以了解一下2017-07-07
Python利用xlrd 与 xlwt 模块操作 Excel
这篇文章主要介绍了Python利用xlrd 与 xlwt 模块操作 Excel,文章围绕主题展开详细的内容,具有一定的参考价值,需要的小伙伴可以参考一下2022-05-05


最新评论