yuv图片怎么转换成jpg图片求解答一下yuv怎么转换成jpg图片求编程好的指令能转很多张的呢种。今天的问题求解答一下,在下方评论
4条回答 默认 最新
阿里嘎多学长 2025-02-15 16:06关注阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程
YUV转换成JPG图片
YUV是一种视频编码格式,用于存储视频数据。要将YUV转换成JPG图片,可以使用以下方法:
Python
import cv2 def yuv_to_jpg(yuv_data, width, height): # 将YUV数据转换成OpenCV支持的BGR格式 yuv_bgr = cv2.cvtColor(yuv_data, cv2.COLOR_YUV2BGR) # 保存为JPG图片 cv2.imwrite('output.jpg', yuv_bgr) # 读取YUV数据 yuv_data = open('input.yuv', 'rb').read() # 获取图片宽高 width, height = 640, 480 # 转换并保存 yuv_to_jpg(yuv_data, width, height)C语言
#include <stdio.h> #include <stdlib.h> #include <png.h> void yuv_to_jpg(unsigned char *yuv_data, int width, int height) { // 将YUV数据转换成BGR格式 unsigned char *bgr_data = malloc(width * height * 3); for (int i = 0; i < height; i++) { for (int j = 0; j < width; j++) { int y = yuv_data[i * width + j]; int u = yuv_data[i * width * 1.5 + j / 2] + (i % 2) * 128; int v = yuv_data[i * width * 1.5 + j / 2 + width / 2] + (i % 2) * 128; bgr_data[i * width * 3 + j * 3 + 0] = y + (u - 128) * 0.493; bgr_data[i * width * 3 + j * 3 + 1] = y - (u - 128) * 0.493 - (v - 128) * 0.877; bgr_data[i * width * 3 + j * 3 + 2] = y + (v - 128) * 0.877; } } // 保存为JPG图片 FILE *fp = fopen("output.jpg", "wb"); png_structp png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); png_infop info_ptr = png_create_info_struct(png_ptr); png_set_IHDR(png_ptr, info_ptr, width, height, 8, PNG_COLOR_TYPE_RGB, PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT); png_write_info(png_ptr, info_ptr); png_write_image(png_ptr, bgr_data); png_write_end(png_ptr, info_ptr); fclose(fp); free(bgr_data); } int main() { // 读取YUV数据 unsigned char *yuv_data = open("input.yuv", "rb").read(); // 获取图片宽高 int width, height; // 转换并保存 yuv_to_jpg(yuv_data, width, height); return 0; }C++
#include <iostream> #include <fstream> #include <opencv2/opencv.hpp> void yuv_to_jpg(unsigned char *yuv_data, int width, int height) { // 将YUV数据转换成OpenCV支持的BGR格式 cv::Mat yuv_mat(height, width, CV_8UC1, yuv_data); cv::Mat bgr_mat; cv::cvtColor(yuv_mat, bgr_mat, cv::COLOR_YUV2BGR); // 保存为JPG图片 cv::imwrite("output.jpg", bgr_mat); } int main() { // 读取YUV数据 unsigned char *yuv_data = open("input.yuv", "rb").read(); // 获取图片宽高 int width, height; // 转换并保存 yuv_to_jpg(yuv_data, width, height); return 0; }这些代码都可以将YUV数据转换成JPG图片,但是需要注意的是,YUV数据的格式和编码方式可能会影响转换结果。
解决 无用评论 打赏 举报