yuv数据解析

该代码段读取YUV格式的视频文件,逐帧解析并转化为OpenCV的Mat对象,然后使用cv::cvtColor将I420格式的YUV图像转换为BGR色彩空间,最后保存为JPEG图片。每10帧编号会自动补零以保持文件名格式一致。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

yuv数据解析

int main() {
	int frame = 1362;
	int img_data_len = (640 * 512 * 3 / 2) * frame;
	unsigned char* img_data = new unsigned char[img_data_len];
	fstream f("E:\\data\\1.yuv", ios::in | ios::binary);
	f.read(reinterpret_cast<char*>(img_data), img_data_len);
	Mat read_img(512 * 3 / 2, 640, CV_8UC1);
	for (int i = 0; i < frame; i++) {
		memcpy(read_img.data, img_data, 640 * 512 * 3 / 2);
		img_data += 640 * 512 * 3 / 2;
		Mat save_img;
		cvtColor(read_img, save_img, cv::COLOR_YUV2BGR_I420);
		string ss;
		int a = (i) / 10;
		if (a == 0)
			ss = "000";
		else if (a < 10)
			ss = "00";
		else if (a >= 10 && a < 100)
			ss = "0";
		else
			ss = "";
		imwrite("E:\\rgb\\" + ss + to_string(i) + ".jpg", save_img);
		//cv::imshow("test", save_img);
		waitKey(0);
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值