(紧急求救)linux中 如何高效使用jpeglib 将jpeg图像内容扫描到 buffer中

chenbin200818 2010-08-26 02:55:17
unsigned char* buffer[max];
/*
对buffer分配内存
*/
while (cinfo.output_scanline < jpeg_height)
{
jpeg_read_scanlines(&cinfo,& buffer[i], 1);
i++;
}
对jpeg解压过程中 将扫描到内容读取到buffer中时 发现效率很低
解压一个 宽 4400 高 3000的图片时 while循环 居然用去了10秒,, 有没有办法能高效的执行扫描


求解
...全文
227 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenbin200818 2010-08-26
  • 打赏
  • 举报
回复
Now you can read the decompressed image data by calling jpeg_read_scanlines()
one or more times. At each call, you pass in the maximum number of scanlines
to be read (ie, the height of your working buffer); jpeg_read_scanlines()
will return up to that many lines. The return value is the number of lines
actually read. The format of the returned data is discussed under "Data
formats", above. Don't forget that grayscale and color JPEGs will return
different data formats!
意思是说 可以一次读多行 可是我让它一次读多行 程序就出错
goodluckyxl 2010-08-26
  • 打赏
  • 举报
回复
.....
用pidbuf和纯c不纯c一样的啊
和jpeglib是一样的啊 都是一个库而已啊
jpeg也就是一个解码库啊
下面底层一些图形库也都依赖于这些
像 webkit里面都使用这个哦来decode
chenbin200818 2010-08-26
  • 打赏
  • 举报
回复
楼上的老大 我是用 纯c 写的程序 调用 jpeglib库的 不是gdk ,而且 gdk我从没用过
有没有 更好的方法
goodluckyxl 2010-08-26
  • 打赏
  • 举报
回复
在clutter中封装了一个cogl对象也有new_from_file会有两种
一种使用pixbuf 一种使用quartz库这个我也不是很清楚
这种对象创建在gpu buffer中如果使用图形转换效率非常高
而pixbuf 和 cairo都是内存中操作的依赖于cpu
goodluckyxl 2010-08-26
  • 打赏
  • 举报
回复
这样你先用gdk-pixbuf库的
GdkPixbuf * gdk_pixbuf_new_from_file (const char *filename,
GError **error);
guchar * gdk_pixbuf_get_pixels (const GdkPixbuf *pixbuf);
gdk_pixbuf_get_width ()
gdk_pixbuf_get_height ()
gdk_pixbuf_get_rowstride ()

cairo能直接解析png的而不能搞jpg的
goodluckyxl 2010-08-26
  • 打赏
  • 举报
回复
你等下哦 我好像说错了
我来看下
chenbin200818 2010-08-26
  • 打赏
  • 举报
回复
麻烦5楼能 仔细说吗 我在linux下纯 c 写的程序 gpeglib 了解不是很多 谢谢
goodluckyxl 2010-08-26
  • 打赏
  • 举报
回复
cairo 的surface 直接new_from_file
然后把指针get出来 应该比你那个能快一点吧
chenbin200818 2010-08-26
  • 打赏
  • 举报
回复
你们都起的真早阿 我不行
tietao 2010-08-26
  • 打赏
  • 举报
回复
用内存拷贝函数怎么样,
可以试一下memcpy。
gamemagic 2010-08-26
  • 打赏
  • 举报
回复
我记得有个方法是可以直接把RGB8数据弄出来的
jixingzhong 2010-08-26
  • 打赏
  • 举报
回复
这个效率会这么低吗?

不应该啊
chenbin200818 2010-08-26
  • 打赏
  • 举报
回复
难道真的没有方法 解决吗
chenbin200818 2010-08-26
  • 打赏
  • 举报
回复
难道 帖子又沉了???
内容概要:本文是一篇关于使用RandLANet模型对SensatUrban数据集进行点云语义分割的实战教程,系统介绍了从环境搭建、数据准备、模型训练与测试到精度评估的完整流程。文章详细说明了在Ubuntu系统下配置TensorFlow 2.2、CUDA及cuDNN等深度学习环境的方法,并指导用户下载和预处理SensatUrban数据集。随后,逐步讲解RandLANet代码的获取与运行方式,包括训练、测试命令的执行与参数含义,以及如何监控训练过程的关键指标。最后,教程涵盖测试结果分析、向官方平台提交结果、解读评估报告及可视化效果等内容,并针对常见问题提供解决方案。; 适合人群:具备一定深度学习基础,熟悉Python编程和深度学习框架,从事计算机视觉或三维点云相关研究的学生、研究人员及工程师;适合希望动手实践点云语义分割项目的初学者与进阶者。; 使用场景及目标:①掌握RandLANet网络结构及其在点云语义分割任务的应用;②学会完整部署一个点云分割项目,包括数据处理、模型训练、测试与性能评估;③为参与相关竞赛或科研项目提供技术支撑。; 阅读建议:建议读者结合提供的代码链接和密码访问完整资料,在本地或云端环境边操作边学习,重点关注数据格式要求与训练参数设置,遇到问题时参考“常见问题与解决技巧”部分及时排查。

70,035

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧