• 大小: 2.48MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-10-13
  • 语言: 其他
  • 标签: yuv420处理  

资源简介

本算法可实现yuv420读取;yuv420显示;yuv420文件指定帧中指定指定区域显示并保存

资源截图

代码片段和文件信息

#include
#include
#include
#include 
#define WIDTH 3840 //YUV文件宽度
#define HEIGHT 1920  //yuv文件高度
using namespace std;
/*可能提示fopen不可用,在解决方案-项目 =》属性 =》c/c++  =》预处理器=》点击预处理器定义,编辑,加入_CRT_SECURE_NO_WARNINGS,即可。*/
int main()
{
int cut_frame = 0;        //需要截取的第n帧
int shift = WIDTH*HEIGHT * 3 / 2;//WIDTH*HEIGHT * 3 / 2

int len_X = 160;           //截取区域x方向长度
int len_Y = 120;           //截取区域Y方向长度

int len_X_half = len_X / 2;
int len_Y_half = len_Y / 2;
int sum_read = len_X*len_Y;
int sum_gray = WIDTH*HEIGHT;
int cut_topleft_coordX = 1340;//设置截取区域左上角x坐标
int cut_topleft_coordY = 720; //左上角y坐标


int j = 0;
int k = 0;
int w = 0;
FILE *pfile;
FILE *savefile;
pfile = fopen(“E:\\about_ROI\\C_glacierQp22_frame8.yuv“ “r“);
savefile = fopen(“E:\\about_ROI\\Cut_C_glacierQp22_frame8.yuv“ “wb+“);
if (pfile == NULL)
{
printf(“error input!!“);
}
unsigned char* buffer = new unsigned char[WIDTH*HEIGHT * 3 / 2]();
unsigned char* buffer_Y = new unsigned char[len_X*len_Y]();
unsigned char* buffer_U = new unsigned char[len_X*len_Y / 4]();
unsigned char* buffer_V = new unsigned char[len_X*len_Y / 4]();
unsigned char* target_YUV = new unsigned char[len_X*len_Y * 3 / 2]();

fseek(pfile shift * cut_frame SEEK_SET); //将文件指针移动到第4帧开头处
fread(buffer 1 shift pfile); //将整个第4帧存储在内存中

for (int i = cut_topleft_coordY; i < len_Y + cut_topleft_coordY; i++) //拷贝Y分量信息
{
memcpy(buffer_Y + j*len_X buffer + cut_topleft_coordX + i*WIDTH len_X);
j++;
}
for (int i = cut_topleft_coordY / 2; i < (len_Y + cut_topleft_coordY) / 2; i++)//拷贝U分量信息
{
memcpy(buffer_U + k*len_X / 2 buffer + WIDTH*HEIGHT + cut_topleft_coordX / 2 + i*WIDTH / 2 len_X / 2);
k++;
}

for (int i = cut_topleft_coordY / 2; i < (len_Y + cut_topleft_coordY) / 2; i++)

{
memcpy(buffer_V + w*len_X / 2 buffer + WIDTH*HEIGHT + WIDTH*HEIGHT / 4 + cut_topleft_coordX / 2 + i*WIDTH / 2 len_X / 2);
w++;

}
memcpy(target_YUV buffer_Y len_X*len_Y);
memcpy(target_YUV + len_X*len_Y buffer_U len_X*len_Y / 4);
memcpy(target_YUV + len_X*len_Y + len_X*len_Y / 4 buffer_V len_X*len_Y / 4);
free(buffer_Y);
free(buffer_V);
free(buffer_U);

fwrite(target_YUV 1 len_X*len_Y * 3 / 2 savefile);
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-12-04 12:23  YUV_ROI\
     目录           0  2017-12-04 12:17  YUV_ROI\Debug\
     文件       62976  2017-12-04 12:17  YUV_ROI\Debug\YUV_ORI.exe
     文件      320012  2017-12-04 12:17  YUV_ROI\Debug\YUV_ORI.ilk
     文件      774144  2017-12-04 12:17  YUV_ROI\Debug\YUV_ORI.pdb
     文件          56  2017-12-04 12:24  YUV_ROI\README.txt
     目录           0  2017-12-04 12:21  YUV_ROI\YUV_ORI\
     文件     7274496  2017-12-04 12:21  YUV_ROI\YUV_ORI.sdf
     文件         967  2017-12-04 12:04  YUV_ROI\YUV_ORI.sln
     文件       17920  2017-12-04 12:21  YUV_ROI\YUV_ORI.v12.suo
     目录           0  2017-12-04 12:17  YUV_ROI\YUV_ORI\Debug\
     文件      240640  2017-12-04 12:17  YUV_ROI\YUV_ORI\Debug\vc120.idb
     文件      323584  2017-12-04 12:17  YUV_ROI\YUV_ORI\Debug\vc120.pdb
     文件        1282  2017-12-04 12:17  YUV_ROI\YUV_ORI\Debug\YUV_ORI.log
     目录           0  2017-12-04 12:17  YUV_ROI\YUV_ORI\Debug\YUV_ORI.tlog\
     文件         670  2017-12-04 12:17  YUV_ROI\YUV_ORI\Debug\YUV_ORI.tlog\cl.command.1.tlog
     文件        5438  2017-12-04 12:17  YUV_ROI\YUV_ORI\Debug\YUV_ORI.tlog\CL.read.1.tlog
     文件         400  2017-12-04 12:17  YUV_ROI\YUV_ORI\Debug\YUV_ORI.tlog\CL.write.1.tlog
     文件        1070  2017-12-04 12:17  YUV_ROI\YUV_ORI\Debug\YUV_ORI.tlog\link.command.1.tlog
     文件        2358  2017-12-04 12:17  YUV_ROI\YUV_ORI\Debug\YUV_ORI.tlog\link.read.1.tlog
     文件         372  2017-12-04 12:17  YUV_ROI\YUV_ORI\Debug\YUV_ORI.tlog\link.write.1.tlog
     文件         158  2017-12-04 12:17  YUV_ROI\YUV_ORI\Debug\YUV_ORI.tlog\YUV_ORI.lastbuildstate
     文件      111177  2017-12-04 12:17  YUV_ROI\YUV_ORI\Debug\yuv_ROI.obj
     文件        4270  2017-12-04 12:17  YUV_ROI\YUV_ORI\YUV_ORI.vcxproj
     文件         948  2017-12-04 12:13  YUV_ROI\YUV_ORI\YUV_ORI.vcxproj.filters
     文件        2431  2017-12-04 12:21  YUV_ROI\YUV_ORI\yuv_ROI.cpp

评论

共有 条评论

相关资源