首页 > 网站 > 帮助中心 > 正文

YUV转为jpg图像的实现

2024-07-09 22:42:28
字体:
来源:转载
供稿:网友

调用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图像的实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持武林网之家。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表