色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32單片機(jī)上RGB數(shù)據(jù)轉(zhuǎn)為JPEG格式辦法

DS小龍哥-嵌入式技術(shù) ? 來(lái)源:DS小龍哥-嵌入式技術(shù) ? 作者:DS小龍哥-嵌入式技 ? 2023-05-17 09:23 ? 次閱讀

【1】項(xiàng)目背景

STM32單片機(jī)上調(diào)用OV系列攝像頭讀取實(shí)時(shí)視頻,然后對(duì)數(shù)據(jù)進(jìn)行分析,分析之后再通過(guò)WIFI或者4G網(wǎng)絡(luò)傳輸給服務(wù)器保存和顯示。因?yàn)樘幚頂?shù)據(jù)時(shí),采用的是RGB源數(shù)據(jù)格式,處理之后的 數(shù)據(jù)需要通過(guò)網(wǎng)絡(luò)傳輸,由于RGB源數(shù)據(jù)占用內(nèi)存很大,對(duì)接下來(lái)的網(wǎng)絡(luò)傳輸非常不力,嚴(yán)重影響傳輸速度。所以,需要先將RGB數(shù)據(jù)壓縮成JPG格式再進(jìn)行傳輸。

【2】常用的JPGE壓縮庫(kù)

(1)libjpeg庫(kù)

libjpeg是一個(gè)用于處理JPEG圖像格式的庫(kù)。它提供了一組用于壓縮和解壓縮JPEG圖像的函數(shù),可以在各種操作系統(tǒng)上使用。libjpeg是由Independent JPEG Group開發(fā)的自由軟件,其主要功能包括壓縮和解壓縮JPEG圖像、轉(zhuǎn)換JPEG圖像格式以及進(jìn)行基本顏色空間轉(zhuǎn)換等。許多圖像處理應(yīng)用程序都使用libjpeg庫(kù)來(lái)實(shí)現(xiàn)JPEG圖像的讀取、寫入和處理等功能。

(2)TinyJPEG庫(kù)

TinyJPEG是一個(gè)用于處理JPEG圖像格式的小型庫(kù)。它是在libjpeg庫(kù)的基礎(chǔ)上進(jìn)行了簡(jiǎn)化和優(yōu)化,以實(shí)現(xiàn)更高效的JPEG壓縮和解壓縮。TinyJPEG庫(kù)的主要特點(diǎn)是代碼量小、易于集成和使用,并且可以在嵌入式設(shè)備等資源受限的環(huán)境中運(yùn)行。由于其小巧、快速和可移植性等特點(diǎn),TinyJPEG庫(kù)通常用于低功耗設(shè)備、嵌入式系統(tǒng)、移動(dòng)應(yīng)用程序等領(lǐng)域,以提供高質(zhì)量的圖像處理能力。

【3】示例代碼

TinyJPEG庫(kù)是一款輕量級(jí)的JPEG壓縮庫(kù),適用于資源受限的嵌入式系統(tǒng)。下面采用STM32F103ZET6作為實(shí)驗(yàn)對(duì)象,STM32F103ZET6 是一款基于ARM Cortex-M3內(nèi)核的微控制器,具有高性能和低功耗的特點(diǎn)。

將RGB565格式的圖像壓縮成JPEG格式,需要經(jīng)過(guò)以下幾個(gè)步驟:

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

以下是一個(gè)示例代碼,使用TinyJPEG庫(kù)將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等設(shè)備
?
  // 獲取RGB565格式的圖像數(shù)據(jù)
  get_rgb_data(rgb_buf, RGB_BUF_SIZE);
?
  // 將RGB565格式的圖像數(shù)據(jù)轉(zhuǎn)換為YUV420格式數(shù)據(jù)
  uint8_t yuv_buf[WIDTH * HEIGHT * 3 / 2];
  rgb_to_yuv(rgb_buf, WIDTH, HEIGHT, yuv_buf);
?
  // 對(duì)YUV420格式數(shù)據(jù)進(jìn)行預(yù)處理
  uint8_t dct_buf[JPEG_BUF_SIZE];
  preprocess(yuv_buf, WIDTH, HEIGHT, dct_buf);
?
  // 進(jìn)行霍夫曼編碼
  int jpeg_size = encode(dct_buf, WIDTH, HEIGHT, jpeg_buf, JPEG_BUF_SIZE);
?
  // 將壓縮后的JPEG數(shù)據(jù)寫入到SD卡或其他存儲(chǔ)介質(zhì)中
  write_jpeg_to_sd_card(jpeg_buf, jpeg_size);
?
  while (1) {
    // 主循環(huán),處理其他任務(wù)
   }
}

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

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6035

    文章

    44554

    瀏覽量

    634644
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10895

    瀏覽量

    355740
  • 攝像頭
    +關(guān)注

    關(guān)注

    59

    文章

    4836

    瀏覽量

    95599
  • RGB
    RGB
    +關(guān)注

    關(guān)注

    4

    文章

    798

    瀏覽量

    58461
  • JPEG
    +關(guān)注

    關(guān)注

    0

    文章

    66

    瀏覽量

    29952
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    請(qǐng)問(wèn)怎么在單片機(jī)中把十進(jìn)制轉(zhuǎn)為十六進(jìn)制的格式

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

    什么是測(cè)試單片機(jī)控制單色屏幕的最佳辦法

    什么是測(cè)試單片機(jī)控制單色屏幕的最佳辦法?將視頻轉(zhuǎn)為圖像數(shù)據(jù)的matlab代碼該如何去編寫?
    發(fā)表于 09-24 09:13

    如何去實(shí)現(xiàn)stm32單片機(jī)上RGB565圖像簡(jiǎn)單處理呢

    如何去實(shí)現(xiàn)stm32單片機(jī)上RGB565圖像簡(jiǎn)單處理呢?有哪些步驟?
    發(fā)表于 11-19 08:07

    STM32 tjpgd軟件JPEG解碼后RGB888數(shù)據(jù)格式不對(duì)怎么解決

    STM32上面使用TJPGD解碼后,發(fā)現(xiàn)RGB888的數(shù)據(jù)格式單片機(jī)或常規(guī)的RGB格式順序有
    發(fā)表于 02-17 07:56

    請(qǐng)問(wèn)有大佬知道怎么將FPGA通過(guò)TCP傳輸?shù)?b class='flag-5'>RGB888圖像數(shù)據(jù)通過(guò)labview顯示為圖像嗎,感謝感謝

    新手小白,已經(jīng)嘗試過(guò)一些將JPEG圖像格式數(shù)據(jù)轉(zhuǎn)為圖像的例子,用RGB888格式
    發(fā)表于 10-30 21:16

    JPEG圖像數(shù)據(jù)格式簡(jiǎn)明分析

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

    STM32單片機(jī)通過(guò)SPI發(fā)送與接收FLSAH應(yīng)用案例

    使用STM32單片機(jī)通過(guò)SPI發(fā)送與接收FLSAH應(yīng)用案例,部分程序可以轉(zhuǎn)移到其他單片機(jī)上
    發(fā)表于 10-28 15:25 ?14次下載

    基于STM32單片機(jī)數(shù)據(jù)記錄裝置設(shè)計(jì)

    基于STM32單片機(jī)數(shù)據(jù)記錄裝置設(shè)計(jì)
    發(fā)表于 09-28 16:03 ?17次下載
    基于<b class='flag-5'>STM32</b><b class='flag-5'>單片機(jī)</b>的<b class='flag-5'>數(shù)據(jù)</b>記錄裝置設(shè)計(jì)

    是否要從單片機(jī)轉(zhuǎn)為嵌入式Linux?

    作者:嵌入式老鳥火哥授權(quán)轉(zhuǎn)載于公眾號(hào)嵌入式老鳥的職場(chǎng)之道(ID: ict_embedded),有增加內(nèi)容和修改。最近很多童鞋投票并咨詢?nèi)绾螐?b class='flag-5'>單片機(jī)轉(zhuǎn)為嵌入式Linux開發(fā)。看來(lái)讀者圈中做單片機(jī)
    發(fā)表于 10-20 15:51 ?5次下載
    是否要從<b class='flag-5'>單片機(jī)</b><b class='flag-5'>轉(zhuǎn)為</b>嵌入式Linux?

    是否要從單片機(jī)轉(zhuǎn)為嵌入式Linux

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

    單片機(jī)串口發(fā)送數(shù)據(jù)格式_STM32實(shí)例——USART串口通信實(shí)驗(yàn)(一)

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

    51單片機(jī)的printf等格式輸出函數(shù)

    在51單片機(jī)上使用printf函數(shù)、sprintf函數(shù)要注意以下幾點(diǎn):無(wú)符號(hào)16位數(shù)格式符用%d或者%u,千萬(wàn)不能加字母“l(fā)”,否則會(huì)出錯(cuò)32位數(shù)據(jù)格式符必須加字母“l(fā)”,否則會(huì)出錯(cuò)8位數(shù)據(jù)格
    發(fā)表于 11-20 16:36 ?12次下載
    51<b class='flag-5'>單片機(jī)</b>的printf等<b class='flag-5'>格式</b>輸出函數(shù)

    STM32 tjpgd軟件JPEG解碼后RGB888數(shù)據(jù)格式問(wèn)題

    STM32上面使用TJPGD解碼后,發(fā)現(xiàn)RGB888的數(shù)據(jù)格式單片機(jī)或常規(guī)的RGB格式順序有
    發(fā)表于 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'>數(shù)據(jù)格式</b>問(wèn)題

    AN5246_SMPS在STM32WB系列單片機(jī)上的應(yīng)用

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

    如何將FreeRTOS移植到STM32單片機(jī)上

    本文詳細(xì)介紹如何移植FreeRTOS到STM32單片機(jī)上。移植操作系統(tǒng)是嵌入式開發(fā)的入門基礎(chǔ),單片機(jī)和嵌入式在物理上其實(shí)是一摸一樣的,區(qū)別就是軟件上嵌入式跑了操作系統(tǒng)而單片機(jī)沒(méi)有。本文
    的頭像 發(fā)表于 01-20 17:36 ?3359次閱讀
    如何將FreeRTOS移植到<b class='flag-5'>STM32</b><b class='flag-5'>單片機(jī)上</b>
    主站蜘蛛池模板: JIZJIZJIZ 日本老师水多| 精品人伦一区二区三区潘金莲 | 免费可以看黄的视频s色| 亚洲精品午夜aaa级久久久久| 国产成人久久精品激情| 热久久2018亚洲欧美| 99久久免费看国产精品| 恋孩癖网站大全在线观看| 孕交videosgratis乌克兰| 精品一品国产午夜福利视频 | 久久草福利自拍视频在线观看| 麻豆一区二区三区蜜桃免费| 伊人精品影院| 国产精品一区二区四区| 涩涩电影网| 电影果冻传媒在线播放| 日韩精品a在线视频| 99re5久久热在线| 美女大鸡鸡| 真实伦 乱| 久久亚洲AV无码精品午色夜麻豆| 亚洲免费视频在线观看| 国产精品久久vr专区| 无码人妻99久久密AV| 刮伦人妇A极一片| 受被三个攻各种道具PLAY| 成人精品视频| 软糯白嫩双性受h| 纯肉高H啪短文合集| 欧美乱码伦视频免费66网| RAPPER性骚扰大开黄腔| 牛牛在线视频| 爱人 qvod| 全部老头和老太XXXXX| 成人国产三级在线播放| 欧美亚洲曰韩一本道| 超碰在线视频| 涩涩999| 国产亚洲精品97在线视频一 | 男人的天堂MV在线视频免费观看| 中文字幕在线视频观看|