sniper167
驱动中牛
驱动中牛
  • 注册日期2006-07-12
  • 最后登录2016-01-09
  • 粉丝1
  • 关注0
  • 积分13分
  • 威望411点
  • 贡献值0点
  • 好评度321点
  • 原创分0分
  • 专家分0分
阅读:6801回复:16

YCbCr转换成JPEG

楼主#
更多 发布于:2007-05-28 20:27
最近在做摄像头驱动,捕获的数据是YCbCr420格式的,需要这些数据保存成为jpg格式的图片

请问wince下有没有现成的函数可以完成这个功能呢?

如果没有,需要自己完成哪几步呢?   感谢
[url]http://sniper167.bokee.com[/url]
lostinfog
驱动牛犊
驱动牛犊
  • 注册日期2006-07-11
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分410分
  • 威望42点
  • 贡献值0点
  • 好评度41点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-06-11 22:44
WinCE应该没有现成的函数,可以调用IJG的libjpeg库来实现
zzjlovece
驱动牛犊
驱动牛犊
  • 注册日期2006-06-01
  • 最后登录2012-01-06
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望117点
  • 贡献值0点
  • 好评度84点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-06-12 11:04
请问2楼的大侠哪边可以找到这个静态库文件下载呢?
microsun
论坛版主
论坛版主
  • 注册日期2002-11-11
  • 最后登录2014-07-18
  • 粉丝0
  • 关注0
  • 积分1052分
  • 威望1159点
  • 贡献值0点
  • 好评度848点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-06-12 19:59
这两种东西之间有转换公式的,你在网上查一下便知
学海无涯
hzhq1
驱动老牛
驱动老牛
  • 注册日期2002-12-13
  • 最后登录2012-03-29
  • 粉丝0
  • 关注0
  • 积分32分
  • 威望1054点
  • 贡献值0点
  • 好评度606点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-06-19 12:45
jpeglib是纯C写的,RGB/YUV与JPG相互转换,要消耗N多的CPU资源,假如图象幅面较大及CPU频率不是特别高,跑得很慢。
这是一个,一个风雨交加的,漆黑的夜晚......恩,情节越来越复杂了。
sniper167
驱动中牛
驱动中牛
  • 注册日期2006-07-12
  • 最后登录2016-01-09
  • 粉丝1
  • 关注0
  • 积分13分
  • 威望411点
  • 贡献值0点
  • 好评度321点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-06-19 17:14
楼上的老牛,请教下
我的cpu是s3c2440  跑的400M  速度会不会特别慢?
[url]http://sniper167.bokee.com[/url]
zzjlovece
驱动牛犊
驱动牛犊
  • 注册日期2006-06-01
  • 最后登录2012-01-06
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望117点
  • 贡献值0点
  • 好评度84点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-06-21 10:39
菜鸟我在PC机上试过了,320*240的YCbCr写成JPG,非常快的。但是ARM机子上面还没有试过。。。。
sniper167
驱动中牛
驱动中牛
  • 注册日期2006-07-12
  • 最后登录2016-01-09
  • 粉丝1
  • 关注0
  • 积分13分
  • 威望411点
  • 贡献值0点
  • 好评度321点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2007-06-22 10:08
zzjlovece   你把YCbCr写成JPG是通过libjpeg转的吗?

我还以为libjpeg只能把rgb转成jpg的  我都先把YCbCr转成RGB的 再转jpg
不过现在还有问题
    while (cinfo.next_scanline < cinfo.image_height)
    {
    /* jpeg_write_scanlines expects an array of pointers to scanlines.
     * Here the array is only one element long, but you could pass
     * more than one scanline at a time if that's more convenient.
     */
        row_pointer[0] = & image_buffer[cinfo.next_scanline * row_stride];

        (void) jpeg_write_scanlines(&cinfo, row_pointer, 1);  // 第一次循环到这里就挂了  目前还没找到原因
    }
[url]http://sniper167.bokee.com[/url]
zzjlovece
驱动牛犊
驱动牛犊
  • 注册日期2006-06-01
  • 最后登录2012-01-06
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望117点
  • 贡献值0点
  • 好评度84点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2007-06-22 13:21
我也是先YUV转换成RGB,然后再写成JPG的。
sniper167
驱动中牛
驱动中牛
  • 注册日期2006-07-12
  • 最后登录2016-01-09
  • 粉丝1
  • 关注0
  • 积分13分
  • 威望411点
  • 贡献值0点
  • 好评度321点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2007-06-25 11:26
我的现在转出来 图象偏左  还是黑白的了  哈哈
找原因中

zzjlovece    你是用的RGB565转的jpg  还是RGB888转的jpg

你有没有注意到
typedef enum {
    JCS_UNKNOWN,        /* error/unspecified */
    JCS_GRAYSCALE,        /* monochrome */
    JCS_RGB,        /* red/green/blue */
    JCS_YCbCr,        /* Y/Cb/Cr (also known as YUV) */
    JCS_CMYK,        /* C/M/Y/K */
    JCS_YCCK        /* Y/Cb/Cr/K */
} J_COLOR_SPACE;

cinfo.in_color_space = JCS_RGB;     /* colorspace of input image */

难道这个jpeglib支持从YCbCr直接转到JPG 而不通过RGB中转?
[url]http://sniper167.bokee.com[/url]
zzjlovece
驱动牛犊
驱动牛犊
  • 注册日期2006-06-01
  • 最后登录2012-01-06
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望117点
  • 贡献值0点
  • 好评度84点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2007-06-25 12:18
是RGB888,这个他那个readme里面说了要RGB888的。
那个枚举我也看到了,但是如果要用YCbCr的话,是应该用哪种YUV格式呢?YUV444,422,还是420?是YUV packed 还是plannar呢?还有YUV的sequeue的顺序怎么排列呢?
我觉得YUV可能没有RGB方便,如果要用YUV的话就需要仔细研究一下那些代码了,看看到底用的是哪种YUV格式。
 
sniper167
驱动中牛
驱动中牛
  • 注册日期2006-07-12
  • 最后登录2016-01-09
  • 粉丝1
  • 关注0
  • 积分13分
  • 威望411点
  • 贡献值0点
  • 好评度321点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2007-06-28 10:05
感谢楼上
我用YCbCr422 转成 RGB888 再转成JPEG
成功了
哈哈
谢谢提醒
[url]http://sniper167.bokee.com[/url]
hzhq1
驱动老牛
驱动老牛
  • 注册日期2002-12-13
  • 最后登录2012-03-29
  • 粉丝0
  • 关注0
  • 积分32分
  • 威望1054点
  • 贡献值0点
  • 好评度606点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2007-07-18 09:11
引用第11楼sniper167于2007-06-28 10:05发表的  :
感谢楼上
我用YCbCr422 转成 RGB888 再转成JPEG
成功了
哈哈
谢谢提醒


转一个大于1600*1200的图片,要多长时间啊?
这是一个,一个风雨交加的,漆黑的夜晚......恩,情节越来越复杂了。
sniper167
驱动中牛
驱动中牛
  • 注册日期2006-07-12
  • 最后登录2016-01-09
  • 粉丝1
  • 关注0
  • 积分13分
  • 威望411点
  • 贡献值0点
  • 好评度321点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2007-07-18 10:18
引用第12楼hzhq1于2007-07-18 09:11发表的  :


转一个大于1600*1200的图片,要多长时间啊?


1600*1200的没有试过
最大试过1024*768的
应该在1秒内能完成
[url]http://sniper167.bokee.com[/url]
sniper167
驱动中牛
驱动中牛
  • 注册日期2006-07-12
  • 最后登录2016-01-09
  • 粉丝1
  • 关注0
  • 积分13分
  • 威望411点
  • 贡献值0点
  • 好评度321点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2007-07-18 10:19
再说一句

hzhq1 老牛的签名很有个性  呵呵
[url]http://sniper167.bokee.com[/url]
46537053
驱动牛犊
驱动牛犊
  • 注册日期2007-08-06
  • 最后登录2007-09-14
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望9点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2007-08-06 10:42
请教我从摄像头取的YUV420怎么编码成JPG文件,谢谢??
jin.bai
驱动牛犊
驱动牛犊
  • 注册日期2005-12-13
  • 最后登录2008-10-09
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望23点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2007-08-19 00:31
我们有这样的JPEG编码器,YUV420输入,对于QVGA(320x240)编码性能在s3c2440上可以跑到15fps以上。有兴趣请访问我们的网站 www.cyansoft.com.cn
jin...
游客

返回顶部