搜索
bottom↓
回复: 260

STM32实现图像JPEG压缩编码,源码,全球首发

  [复制链接]

出0入0汤圆

发表于 2010-1-30 02:19:54 | 显示全部楼层 |阅读模式
实现将原始位图数据编码成为JPEG文件,发送到串口。
现在程序还是热呼呼的,因为刚才才从VC程序移植到STM32成功,实现正常压缩。

稍作修改,可以接摄像头,做成jpeg串口摄像头。



硬件只需要:stm32f103ZET6,串口usart1。


图像数据从usart1输出,波特率115200.可以用串口软件接收数据,保存为.jpg后缀名,即可在电脑上打开该图片文件。

我用的串口软件是AccessPort。

编码生成的图片大小为320x240.

原始图片以RGB数组的形式放在程序里面了,大小为240x16.因为320x240的bmp图片会到200多K,所以只截取了一部分。


原始图像:


(原文件名:正.PNG)

压缩后生成的图像:

压缩后生成的图像 (原文件名:119.jpg)



相关注释及说明:

unsigned char JPG_enc_buf[30000];//jpeg 输出缓冲
unsigned int pt_buf = 0;//缓冲区指针

volatile unsigned char inbuf_buf[11520];
//输入区缓冲,这个是为宽度240的图片大小设置的,如果要更大的图片,就需要更大的缓冲11520 = 240x16x3

JSAMPLE *image;//图像源数据指针

buf_BMP[]//源图像数组

width = 240;//图像的宽度
height = 320;//图像的高度

jpeg_write_scanline(cinfo, &image[(cinfo->next_line*cinfo->image_width*3)%11520]);
//因为输入区ram很小,所以用了%11520做了循环重复,正常的程序自己做处理

移植前的程序都是用malloc分配内存,全部改成了静态的数组,

输出函数:
void jutl_write_byte(UINT8 c, char *f)  
{
  assert(f);
  //fwrite(&c, sizeof(UINT8), 1, f);
   
  f[pt_buf] = c;
  if(pt_buf < 30000)pt_buf++;
}

ourdev_530701.rar

点击此处下载 ourdev_530727.rar(文件大小:851K) (原文件名:stm32_Demo_ili9325simio_our2.rar)

【41楼】 wangguanfu 反映说工程文件有问题,并帮助整理了下,I-A-R-5-.-2-0和谐版本编译
点击此处下载 ourdev_530829.rar(文件大小:851K) (原文件名:stm32_Demo_jpeg.rar.rar)

建议:
1.下载后rebuild all
2.程序输出的文件大小为 22900字节大小,如果串口收到的字节数目不对 的话,可能串口线不好,也可降低波特率试下,修改user_uart.c里的UART1_Configuration里的USART_InitStructure.USART_BaudRate

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

 楼主| 发表于 2010-1-30 02:30:41 | 显示全部楼层
忽然发现,是超频到128M运行的,忘记改回来了

把RCC_PLLMul_16 ,改成   RCC_PLLMul_9  即可

出0入0汤圆

发表于 2010-1-30 02:33:02 | 显示全部楼层
大半夜睡不着觉抽风支持楼主

出0入0汤圆

发表于 2010-1-30 02:33:53 | 显示全部楼层
这个要Mark

出0入0汤圆

发表于 2010-1-30 04:06:12 | 显示全部楼层
搬个凳子,顶!!!!

出20入0汤圆

发表于 2010-1-30 08:34:10 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-1-30 08:35:09 | 显示全部楼层
可以拍照不?

出0入0汤圆

发表于 2010-1-30 08:36:45 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-1-30 08:59:46 | 显示全部楼层
这个要支持

出0入0汤圆

发表于 2010-1-30 09:00:03 | 显示全部楼层
good

出0入0汤圆

发表于 2010-1-30 09:07:16 | 显示全部楼层
支持一下楼主那热呼呼的程序!!!

出0入0汤圆

发表于 2010-1-30 09:10:04 | 显示全部楼层
顶,顶

出0入0汤圆

发表于 2010-1-30 09:10:19 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-1-30 09:19:06 | 显示全部楼层
一定要顶啊

出0入0汤圆

 楼主| 发表于 2010-1-30 09:30:44 | 显示全部楼层
相关注释及说明:

unsigned char JPG_enc_buf[30000];//jpeg 输出缓冲
unsigned int pt_buf = 0;//缓冲区指针

volatile unsigned char inbuf_buf[11520];
//输入区缓冲,这个是为宽度240的图片大小设置的,如果要更大的图片,就需要更大的缓冲11520 = 240x16x3

JSAMPLE *image;//图像源数据指针

buf_BMP[]//源图像数组

width = 240;//图像的宽度
height = 320;//图像的高度

jpeg_write_scanline(cinfo, &image[(cinfo->next_line*cinfo->image_width*3)%11520]);
//因为输入区ram很小,所以用了%11520做了循环重复,正常的程序自己做处理

移植前的程序都是用malloc分配内存,全部改成了静态的数组,

输出函数:
void jutl_write_byte(UINT8 c, char *f)
{
  assert(f);
  //fwrite(&c, sizeof(UINT8), 1, f);
  
  f[pt_buf] = c;
  if(pt_buf < 30000)pt_buf++;
}

出0入0汤圆

发表于 2010-1-30 09:37:22 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-1-30 09:37:49 | 显示全部楼层
顶你.

出0入0汤圆

发表于 2010-1-30 09:39:12 | 显示全部楼层
这个要顶 谢谢分享啦

出0入0汤圆

 楼主| 发表于 2010-1-30 09:40:38 | 显示全部楼层
回复【6楼】yemingxp
可以拍照不?
-----------------------------------------------------------------------

论坛上面有好多stm32直接驱动摄像头的代码,组合起来就可以摄像头拍照了

本程序中的图像源格式是R,G,B,格式的最原始数据,可以很方便操作

出0入0汤圆

发表于 2010-1-30 09:43:19 | 显示全部楼层
为楼主奉献叫好

出0入0汤圆

发表于 2010-1-30 09:49:51 | 显示全部楼层
顶一个

出0入4汤圆

发表于 2010-1-30 09:50:41 | 显示全部楼层
顶个

出0入0汤圆

发表于 2010-1-30 09:54:01 | 显示全部楼层
楼主,我刚才下了你的程序,在IAR ARM5.2中编译,有好10几个警告。

出0入0汤圆

 楼主| 发表于 2010-1-30 10:02:21 | 显示全部楼层
回复【22楼】cyxavr 又一天
楼主,我刚才下了你的程序,在IAR ARM5.2中编译,有好10几个警告。

-----------------------------------------------------------------------

有些是浮点转整型警告

有些是变量声明了没有使用警告

出0入0汤圆

发表于 2010-1-30 10:03:17 | 显示全部楼层
全球首发!

出0入0汤圆

发表于 2010-1-30 10:05:37 | 显示全部楼层
好东西,感谢楼主~有空试验下.

出0入0汤圆

发表于 2010-1-30 10:28:45 | 显示全部楼层
这个可实实在在的是个好东西哈:)

出0入0汤圆

发表于 2010-1-30 10:43:58 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-1-30 10:44:37 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-1-30 11:02:25 | 显示全部楼层
..东西不错。不知道效率怎么样

出0入0汤圆

发表于 2010-1-30 11:45:07 | 显示全部楼层
顶!!!!

出0入0汤圆

发表于 2010-1-30 12:09:13 | 显示全部楼层
打个梯子顶一下!

出0入0汤圆

发表于 2010-1-30 12:39:24 | 显示全部楼层
超级好

出0入0汤圆

发表于 2010-1-30 12:42:36 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-1-30 12:56:39 | 显示全部楼层
不错 不错

出0入0汤圆

发表于 2010-1-30 12:56:53 | 显示全部楼层
超级....超级好

出0入0汤圆

发表于 2010-1-30 13:12:39 | 显示全部楼层
LZ的工程似乎有问题

出0入0汤圆

发表于 2010-1-30 13:17:51 | 显示全部楼层
感谢楼主

出0入0汤圆

发表于 2010-1-30 13:37:32 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-1-30 13:40:31 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-1-30 15:38:34 | 显示全部楼层
有空试一下

出0入0汤圆

发表于 2010-1-30 17:54:53 | 显示全部楼层
LZ的IAR工程文件有异常,新整理了下,I-A-R-5-.-2-0和谐版本编译
点击此处下载 ourdev_530829.rar(文件大小:532K) (原文件名:stm32_Demo_jpeg.rar)

出0入0汤圆

发表于 2010-1-30 22:45:59 | 显示全部楼层
太牛了 , ^_^!

下周就可以试试看. 真是好东西啊.

顶楼上.

出0入0汤圆

发表于 2010-1-31 01:04:19 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2010-1-31 01:05:40 | 显示全部楼层
回复【41楼】wangguanfu
LZ的IAR工程文件有异常,新整理了下,I-A-R-5-.-2-0和谐版本编译
-----------------------------------------------------------------------

谢谢wangguanfu 大哥啊

我是用5.40版的估计是32k限制版编译的。

还不知道工程文件有什么问题,先把你的文件整理到楼主位。

另:这个项目里面有用到你的代码,所以,你的标志也留在里面了:)  没想到后面的工程项目里面被你删掉了哎

另:有测试一下没,成功了没?

出0入0汤圆

 楼主| 发表于 2010-1-31 01:21:58 | 显示全部楼层
回复【29楼】AVRman
..东西不错。不知道效率怎么样
-----------------------------------------------------------------------

效率很普通,一个实现的范例而已

出0入0汤圆

发表于 2010-1-31 10:25:54 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2010-2-1 16:52:11 | 显示全部楼层
这样的神器居然被要被埋没了……   呜呜

出0入0汤圆

发表于 2010-2-1 16:58:28 | 显示全部楼层
mark~

出0入0汤圆

发表于 2010-2-1 17:15:37 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-2-1 17:46:01 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-2-11 15:30:05 | 显示全部楼层
mark

出0入4汤圆

发表于 2010-2-11 15:38:41 | 显示全部楼层
这个真是非常不错,马克

出0入0汤圆

发表于 2010-2-11 16:11:25 | 显示全部楼层
这个必须要顶的,呵呵

出0入0汤圆

发表于 2010-2-11 17:57:05 | 显示全部楼层
网上jpeg库一大把,请问楼主的这个有什么特色?

出0入0汤圆

发表于 2010-3-14 14:18:12 | 显示全部楼层
我顶 ,就等着这个
0V7760+JPEG压缩  ---》无线     ----     无线《---解压--TFT液晶显示
基本的模块都找到了,就等组合了

出0入0汤圆

 楼主| 发表于 2010-3-14 15:55:31 | 显示全部楼层
回复【55楼】sfh887
-----------------------------------------------------------------------

知音啊

出0入0汤圆

发表于 2010-3-14 17:52:30 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-14 21:54:23 | 显示全部楼层
这个真有用!

出0入0汤圆

发表于 2010-3-14 22:18:45 | 显示全部楼层
暂时还用不到,现在只要显示JPG就可以了。
支持

出0入0汤圆

发表于 2010-3-14 22:19:43 | 显示全部楼层
确实不错~

出0入0汤圆

发表于 2010-3-14 23:33:53 | 显示全部楼层
非常好,谢谢!

出0入0汤圆

发表于 2010-3-17 16:07:53 | 显示全部楼层
支持!!

出0入0汤圆

发表于 2010-3-17 16:15:52 | 显示全部楼层
MAKR

出0入0汤圆

发表于 2010-3-17 16:27:53 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-19 11:55:14 | 显示全部楼层
mark

出0入4汤圆

发表于 2010-3-19 12:12:05 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-30 11:46:16 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-9 14:36:08 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-9 14:51:35 | 显示全部楼层
猛料啊

出0入134汤圆

发表于 2010-4-9 16:56:59 | 显示全部楼层

出0入0汤圆

发表于 2010-4-23 12:01:48 | 显示全部楼层
回复【楼主位】VERY VERY 低调
-----------------------------------------------------------------------

真是高手。学习!

出0入0汤圆

发表于 2010-4-23 12:27:51 | 显示全部楼层
mark保存。。以后用的到。谢谢搂主

出0入0汤圆

发表于 2010-5-8 16:52:03 | 显示全部楼层
标记下

出0入0汤圆

发表于 2010-5-8 18:36:07 | 显示全部楼层
有没有那位高人,贴张好点的图片出来秀秀呵呵,顶一个

出0入0汤圆

发表于 2010-5-9 07:01:12 | 显示全部楼层
MARK 以后有用

出0入0汤圆

发表于 2010-5-9 09:44:08 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-9 17:11:52 | 显示全部楼层
能在F103RBT6上用不 ??

出0入0汤圆

发表于 2010-5-9 17:34:15 | 显示全部楼层
我在F103RBT6上使用 发现串口接收不到数据

出0入0汤圆

发表于 2010-5-13 18:04:30 | 显示全部楼层
我也留个记号!!哈哈

出0入0汤圆

发表于 2010-5-14 20:13:42 | 显示全部楼层
请问楼主能不能把工程发给我,小弟是刚刚开始学stm32,想学学楼主的编程思想。
我的邮箱是1050730933@qq.com

出0入0汤圆

发表于 2010-5-15 09:06:44 | 显示全部楼层
支持 感谢

出0入0汤圆

发表于 2010-5-18 09:05:14 | 显示全部楼层
回复【楼主位】VERY VERY 低调
-----------------------------------------------------------------------

请教您一个问题 如何利用STM32获得USB摄像头的图片并命名呢 我做一个毕业设计关于工程机械远程监控的 软件部分很头疼 我知道了jpeg图片的帧头帧尾 如何获取呢 您有相关的程序或是资料吗 谢谢 我的邮箱是ahlbzy@126.com 万分感谢

出0入0汤圆

发表于 2010-5-18 12:29:16 | 显示全部楼层
mark   很必要学习一下

出0入0汤圆

发表于 2010-5-21 08:13:57 | 显示全部楼层
mark
头像被屏蔽

出0入0汤圆

发表于 2010-5-21 22:58:59 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2010-8-13 09:29:19 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-8-13 11:04:23 | 显示全部楼层
mark
头像被屏蔽

出0入0汤圆

发表于 2010-8-14 10:57:09 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2010-8-14 11:11:09 | 显示全部楼层
谢谢楼上的给顶了上来,正好用到,支持一下楼主那热呼呼的程序!!!

出0入0汤圆

发表于 2010-8-14 11:14:36 | 显示全部楼层
楼主是个好人

出0入0汤圆

发表于 2010-8-14 12:40:28 | 显示全部楼层
mark STM32 图像压缩编码

出0入0汤圆

发表于 2010-8-14 12:42:39 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-8-14 20:40:57 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-8-14 22:11:04 | 显示全部楼层
谢谢!

出0入0汤圆

发表于 2010-8-14 23:43:11 | 显示全部楼层
一定要顶。

出0入46汤圆

发表于 2010-8-14 23:50:36 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-8-15 00:58:31 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-8-15 11:04:22 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-8-18 03:26:00 | 显示全部楼层
請問樓主
我去實際跑code
結果送出來的資料都是0
而且一直傳送沒有停止
想問是否有什麼地方要做修改嗎
我是用stm3210e-lk這版子實驗的
有沒有人可以回答阿
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-8 20:52

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表