日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

libjpeg实现YUV转jpeg

發布時間:2023/12/16 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 libjpeg实现YUV转jpeg 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

YUV格式理解

  • Y代表亮度信號,UV代表色度信號。
  • YUV444色度信號分辨率最高。每一個像素都有對應的色度與亮度。
  • 對于YUV411 YUV420 YUV 422這些都是消減了色度。
  • YUV422:4個點亮度,就有2個點U和2點V。
  • YUY2/YUYV:每個像素都保留了Y分量。四個字節表示2個像素點。如1920x1080圖片的文件大小為1920x1080x2=4M

圖片數據流存儲理解

YUV2數據流順序:?Y0?U0?Y1?V0????Y2?U2?Y3?V2
UYVY數據流順序: U0?Y0?V0?Y1????U2?Y2?V2?Y3

libjpeg庫函數理解

uint32_t yuv420sp_to_jpg(int width, int height, unsigned char *inputYuv,unsigned char *outJpeg) {struct jpeg_compress_struct cinfo;struct jpeg_error_mgr jerr;JSAMPROW row_pointer[1];int i = 0, j = 0;unsigned char *pY, *pU, *pV;unsigned char yuvbuf[width * 3];unsigned long outSize;cinfo.err = jpeg_std_error(&jerr);//用于錯誤信息jpeg_create_compress(&cinfo); //初始化壓縮對象jpeg_mem_dest(&cinfo, &outJpeg, &outSize);cinfo.image_width = width;//設置輸入圖片寬度cinfo.image_height = height;//設置圖片高度cinfo.input_components = 3;cinfo.in_color_space = JCS_YCbCr;//設置輸入圖片的格式,支持RGB/YUV/YCC等等cinfo.dct_method = JDCT_FLOAT;jpeg_set_defaults(&cinfo);//其它參數設置為默認的!jpeg_set_quality(&cinfo, 40, TRUE);//設置轉化圖片質量,范圍0-100jpeg_start_compress(&cinfo, TRUE);pY = inputYuv ;pU = inputYuv +1 ;pV = inputYuv + 3;j = 1;while (cinfo.next_scanline < cinfo.image_height) {int index = 0;for (i = 0; i < width; i += 2){//輸入的YUV圖片格式為標準的YUV444格式,所以需要把YUV420轉化成YUV444.yuvbuf[index++] = *pY;yuvbuf[index++] = *pU;yuvbuf[index++] = *pV;pY += 2;yuvbuf[index++] = *pY;yuvbuf[index++] = *pU;yuvbuf[index++] = *pV;pY += 2;pU += 4;pV += 4;}row_pointer[0] = yuvbuf;(void)jpeg_write_scanlines(&cinfo, row_pointer, 1);//單行圖片轉換壓縮j++;}jpeg_finish_compress(&cinfo);jpeg_destroy_compress(&cinfo);return (uint32_t)outSize; }

運行示例

下載示例鏈接(運行環境VS2013):https://download.csdn.net/download/fengweibo112/10971728
運行過后,在工程目錄下可以看到輸出的jpeg圖片。

總結

以上是生活随笔為你收集整理的libjpeg实现YUV转jpeg的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。