在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

STM32單片機上RGB數據轉為JPEG格式辦法

DS小龍哥-嵌入式技術 ? 來源:DS小龍哥-嵌入式技術 ? 作者:DS小龍哥-嵌入式技 ? 2023-05-17 09:23 ? 次閱讀

【1】項目背景

STM32單片機上調用OV系列攝像頭讀取實時視頻,然后對數據進行分析,分析之后再通過WIFI或者4G網絡傳輸給服務器保存和顯示。因為處理數據時,采用的是RGB源數據格式,處理之后的 數據需要通過網絡傳輸,由于RGB源數據占用內存很大,對接下來的網絡傳輸非常不力,嚴重影響傳輸速度。所以,需要先將RGB數據壓縮成JPG格式再進行傳輸。

【2】常用的JPGE壓縮庫

(1)libjpeg庫

libjpeg是一個用于處理JPEG圖像格式的庫。它提供了一組用于壓縮和解壓縮JPEG圖像的函數,可以在各種操作系統上使用。libjpeg是由Independent JPEG Group開發的自由軟件,其主要功能包括壓縮和解壓縮JPEG圖像、轉換JPEG圖像格式以及進行基本顏色空間轉換等。許多圖像處理應用程序都使用libjpeg庫來實現JPEG圖像的讀取、寫入和處理等功能。

(2)TinyJPEG庫

TinyJPEG是一個用于處理JPEG圖像格式的小型庫。它是在libjpeg庫的基礎上進行了簡化和優化,以實現更高效的JPEG壓縮和解壓縮。TinyJPEG庫的主要特點是代碼量小、易于集成和使用,并且可以在嵌入式設備等資源受限的環境中運行。由于其小巧、快速和可移植性等特點,TinyJPEG庫通常用于低功耗設備、嵌入式系統、移動應用程序等領域,以提供高質量的圖像處理能力。

【3】示例代碼

TinyJPEG庫是一款輕量級的JPEG壓縮庫,適用于資源受限的嵌入式系統。下面采用STM32F103ZET6作為實驗對象,STM32F103ZET6 是一款基于ARM Cortex-M3內核的微控制器,具有高性能和低功耗的特點。

將RGB565格式的圖像壓縮成JPEG格式,需要經過以下幾個步驟:

  1. 將RGB565數據轉換為YUV420格式數據。由于JPEG壓縮算法基于YUV顏色空間,因此需要先將RGB565數據轉換為YUV420格式數據,以便后續處理。
  2. 對YUV420數據進行預處理。在進行JPEG壓縮前,需要對YUV420數據進行預處理,包括分塊、離散余弦變換(DCT)、量化等操作。
  3. 進行霍夫曼編碼。將預處理后的數據進行霍夫曼編碼,以便能夠更好地壓縮數據。
  4. 生成JPEG文件。將編碼后的數據寫入到JPEG文件中,即可生成JPEG格式的圖像數據。

以下是一個示例代碼,使用TinyJPEG庫將RGB565格式的圖像壓縮成JPEG格式:

#include "tiny_jpeg.h"
?
#define WIDTH  320
#define HEIGHT  240
#define RGB_BUF_SIZE   (WIDTH * HEIGHT * 2)
#define JPEG_BUF_SIZE  (WIDTH * HEIGHT)
?
uint8_t rgb_buf[RGB_BUF_SIZE];
uint8_t jpeg_buf[JPEG_BUF_SIZE];
?
int main(void)
{
  // 初始化攝像頭和LCD等設備
?
  // 獲取RGB565格式的圖像數據
  get_rgb_data(rgb_buf, RGB_BUF_SIZE);
?
  // 將RGB565格式的圖像數據轉換為YUV420格式數據
  uint8_t yuv_buf[WIDTH * HEIGHT * 3 / 2];
  rgb_to_yuv(rgb_buf, WIDTH, HEIGHT, yuv_buf);
?
  // 對YUV420格式數據進行預處理
  uint8_t dct_buf[JPEG_BUF_SIZE];
  preprocess(yuv_buf, WIDTH, HEIGHT, dct_buf);
?
  // 進行霍夫曼編碼
  int jpeg_size = encode(dct_buf, WIDTH, HEIGHT, jpeg_buf, JPEG_BUF_SIZE);
?
  // 將壓縮后的JPEG數據寫入到SD卡或其他存儲介質中
  write_jpeg_to_sd_card(jpeg_buf, jpeg_size);
?
  while (1) {
    // 主循環,處理其他任務
   }
}

TinyJPEG庫是一款通用的JPEG壓縮庫,使用時需要根據具體情況進行修改和適配。在具體實現時,還需要考慮圖像大小、壓縮比率、編碼質量等因素,以便更好地滿足實際需求。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6043

    文章

    44621

    瀏覽量

    638572
  • STM32
    +關注

    關注

    2272

    文章

    10924

    瀏覽量

    357583
  • 攝像頭
    +關注

    關注

    60

    文章

    4862

    瀏覽量

    96311
  • RGB
    RGB
    +關注

    關注

    4

    文章

    801

    瀏覽量

    58716
  • JPEG
    +關注

    關注

    0

    文章

    66

    瀏覽量

    29999
收藏 人收藏

    評論

    相關推薦

    請問怎么在單片機中把十進制轉為十六進制的格式

    大家好,幫幫忙,在單片機中想把十進制X = 123456轉為十六進制 X = 0x123456的格式,有什么方法嗎,或者有代碼例子嗎?謝謝!
    發表于 09-29 10:20

    什么是測試單片機控制單色屏幕的最佳辦法

    什么是測試單片機控制單色屏幕的最佳辦法?將視頻轉為圖像數據的matlab代碼該如何去編寫?
    發表于 09-24 09:13

    如何去實現stm32單片機上RGB565圖像簡單處理呢

    如何去實現stm32單片機上RGB565圖像簡單處理呢?有哪些步驟?
    發表于 11-19 08:07

    STM32 tjpgd軟件JPEG解碼后RGB888數據格式不對怎么解決

    STM32上面使用TJPGD解碼后,發現RGB888的數據格式單片機或常規的RGB格式順序有
    發表于 02-17 07:56

    請問有大佬知道怎么將FPGA通過TCP傳輸的RGB888圖像數據通過labview顯示為圖像嗎,感謝感謝

    新手小白,已經嘗試過一些將JPEG圖像格式數據轉為圖像的例子,用RGB888格式
    發表于 10-30 21:16

    JPEG圖像數據格式簡明分析

    本文針對最常見的JPEG 圖像格式的壓縮數據進行分析,描述了每一字節的數據所表示的含義,同時也介紹了JPEG 圖像
    發表于 09-18 11:05 ?16次下載

    STM32單片機通過SPI發送與接收FLSAH應用案例

    使用STM32單片機通過SPI發送與接收FLSAH應用案例,部分程序可以轉移到其他單片機上
    發表于 10-28 15:25 ?14次下載

    基于STM32單片機數據記錄裝置設計

    基于STM32單片機數據記錄裝置設計
    發表于 09-28 16:03 ?17次下載
    基于<b class='flag-5'>STM32</b><b class='flag-5'>單片機</b>的<b class='flag-5'>數據</b>記錄裝置設計

    是否要從單片機轉為嵌入式Linux?

    作者:嵌入式老鳥火哥授權轉載于公眾號嵌入式老鳥的職場之道(ID: ict_embedded),有增加內容和修改。最近很多童鞋投票并咨詢如何從單片機轉為嵌入式Linux開發。看來讀者圈中做單片機
    發表于 10-20 15:51 ?5次下載
    是否要從<b class='flag-5'>單片機</b><b class='flag-5'>轉為</b>嵌入式Linux?

    是否要從單片機轉為嵌入式Linux

    最近很多童鞋投票并咨詢如何從單片機轉為嵌入式Linux開發。看來讀者圈中做單片機,RTOS的不少。盡管小編目前從事Linux/Android方面的嵌入式開發工作,但是讀書的時候也有5年左右單片
    發表于 11-13 20:51 ?11次下載
    是否要從<b class='flag-5'>單片機</b><b class='flag-5'>轉為</b>嵌入式Linux

    單片機串口發送數據格式_STM32實例——USART串口通信實驗(一)

    Labview發送指令給STM32單片機,控制單片機上LED燈亮滅。通信的基本概念我們知道 STM32F1 芯片內含有非常多的通信接口,學習這些通信接口前,我們很有必要了解下通信的基.
    發表于 11-18 18:36 ?19次下載
    <b class='flag-5'>單片機</b>串口發送<b class='flag-5'>數據格式</b>_<b class='flag-5'>STM32</b>實例——USART串口通信實驗(一)

    51單片機的printf等格式輸出函數

    在51單片機上使用printf函數、sprintf函數要注意以下幾點:無符號16位數格式符用%d或者%u,千萬不能加字母“l”,否則會出錯32位數據格式符必須加字母“l”,否則會出錯8位數據格
    發表于 11-20 16:36 ?12次下載
    51<b class='flag-5'>單片機</b>的printf等<b class='flag-5'>格式</b>輸出函數

    STM32 tjpgd軟件JPEG解碼后RGB888數據格式問題

    STM32上面使用TJPGD解碼后,發現RGB888的數據格式單片機或常規的RGB格式順序有
    發表于 12-20 19:37 ?13次下載
    <b class='flag-5'>STM32</b> tjpgd軟件<b class='flag-5'>JPEG</b>解碼后<b class='flag-5'>RGB</b>888<b class='flag-5'>數據格式</b>問題

    AN5246_SMPS在STM32WB系列單片機上的應用

    AN5246_SMPS在STM32WB系列單片機上的應用
    發表于 11-21 08:11 ?0次下載
    AN5246_SMPS在<b class='flag-5'>STM32</b>WB系列<b class='flag-5'>單片機上</b>的應用

    如何將FreeRTOS移植到STM32單片機上

    本文詳細介紹如何移植FreeRTOS到STM32單片機上。移植操作系統是嵌入式開發的入門基礎,單片機和嵌入式在物理上其實是一摸一樣的,區別就是軟件上嵌入式跑了操作系統而單片機沒有。本文
    的頭像 發表于 01-20 17:36 ?3517次閱讀
    如何將FreeRTOS移植到<b class='flag-5'>STM32</b><b class='flag-5'>單片機上</b>
    主站蜘蛛池模板: 国产va在线 | 激情福利视频 | 经典三级一区在线播放 | 午夜在线观看免费视频 | 一区二区三区四区在线不卡高清 | 久久久久国产精品免费免费 | 在线视频 一区二区 | 国内外精品免费视频 | 日本www色视频 | 狠狠色婷婷丁香六月 | 69女poren16| 美女视频大全美女视频黄 | 深夜视频在线播放视频在线观看免费观看 | 57pao成人永久免费视频 | 天天澡天天干 | 在线观看黄色网 | 日韩一级片视频 | 免费看国产一级片 | 色女人在线视频 | 综合亚洲一区二区三区 | 狠狠色96视频 | 色狠狠成人综合网 | 久优草 | 色琪琪一本到影院 | 天堂网在线www资源网 | 亚洲婷婷综合中文字幕第一页 | 国产理论 | 午夜影视啪啪免费体验区入口 | 三级视频网 | 色视网站 | 四虎音影 | 亚洲三级在线看 | 国产午夜精品片一区二区三区 | 五月天婷婷导航 | 操碰人人 | 小雪被撑暴黑人黑人与亚洲女人 | 欧美日日日 | 福利在线观看 | 天天干天天爱天天射 | 三级毛片网 | 日本一级高清不卡视频在线 |