opencv 怎么样JPEG解压图片?

djl24 2012-01-17 02:41:17
我要实现个算法,第一步就是要JPEG解压图片,得到图像的量化矩阵和量化DCT系数,这在opencv中该怎么实现?本人是菜鸟,希望各位高手不吝赐教!
...全文
581 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2013-11-13
  • 打赏
  • 举报
回复
Image Magick ?
u012800797 2013-11-13
  • 打赏
  • 举报
回复
请问楼主找到这个方法了吗?
yiyefangzhou24 2012-01-27
  • 打赏
  • 举报
回复
jpeg压缩算法是开源的,楼主自己找
灼眼的超哥 2012-01-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 djl24 的回复:]

那我又怎么样能得到图片的DCT系数呢?谢谢
[/Quote]
DCT系数?
自己先去了解jpeg算法相关的内容。
有些函数只是利用jpeg提供的API来解压JPEG文件,并没有记录jpeg文件更多的详细信息。
赵4老师 2012-01-19
  • 打赏
  • 举报
回复
HighGUI读取与保存图像

cvLoadImage
从文件中读取图像

/* 8 bit, color or gray - deprecated, use CV_LOAD_IMAGE_ANYCOLOR */
#define CV_LOAD_IMAGE_UNCHANGED -1
/* 8 bit, gray */
#define CV_LOAD_IMAGE_GRAYSCALE 0
/* 8 bit unless combined with CV_LOAD_IMAGE_ANYDEPTH, color */
#define CV_LOAD_IMAGE_COLOR 1
/* any depth, if specified on its own gray */
#define CV_LOAD_IMAGE_ANYDEPTH 2
/* by itself equivalent to CV_LOAD_IMAGE_UNCHANGED
but can be modified with CV_LOAD_IMAGE_ANYDEPTH */
#define CV_LOAD_IMAGE_ANYCOLOR 4
IplImage* cvLoadImage( const char* filename, int flags=CV_LOAD_IMAGE_COLOR );
filename
要被读入的文件的文件名。
flags
指定读入图像的颜色和深度:
指定的颜色可以将输入的图片转为3信道(CV_LOAD_IMAGE_COLOR), 单信道 (CV_LOAD_IMAGE_GRAYSCALE), 或者保持不变(CV_LOAD_IMAGE_ANYCOLOR)。
深度指定输入的图像是否转为每个颜色信道每象素8位,(OpenCV的早期版本一样),或者同输入的图像一样保持不变。
选中CV_LOAD_IMAGE_ANYDEPTH,则输入图像格式可以为8位无符号,16位无符号,32位有符号或者32位浮点型。
如果输入有冲突的标志,将采用较小的数字值。比如CV_LOAD_IMAGE_COLOR | CV_LOAD_IMAGE_ANYCOLOR 将载入3信道图。CV_LOAD_IMAGE_ANYCOLOR和CV_LOAD_IMAGE_UNCHANGED是等值的。但是,CV_LOAD_IMAGE_ANYCOLOR有着可以和CV_LOAD_IMAGE_ANYDEPTH同时使用的优点,所以CV_LOAD_IMAGE_UNCHANGED不再使用了。
如果想要载入最真实的图像,选择CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR。
函数cvLoadImage从指定文件读入图像,返回读入图像的指针。目前支持如下文件格式:

Windows位图文件 - BMP, DIB;
JPEG文件 - JPEG, JPG, JPE;
便携式网络图片 - PNG;
便携式图像格式 - PBM,PGM,PPM;
Sun rasters - SR,RAS;
TIFF文件 - TIFF,TIF;
OpenEXR HDR 图片 - EXR;
JPEG 2000 图片- jp2。
cvSaveImage
保存图像到文件

int cvSaveImage( const char* filename, const CvArr* image );
filename
文件名。
image
要保存的图像。
函数cvSaveImage保存图像到指定文件。图像格式的的选择依赖于filename的扩展名,请参考cvLoadImage。只有8位单通道或者3通道(通道顺序为'BGR' )可以使用这个函数保存。如果格式,深度或者通道不符合要求,请先用cvCvtScale 和cvCvtColor转换;或者使用通用的cvSave保存图像为XML或者YAML格式。

djl24 2012-01-19
  • 打赏
  • 举报
回复
究竟怎么用呢?
djl24 2012-01-19
  • 打赏
  • 举报
回复
那我又怎么样能得到图片的DCT系数呢?谢谢
赵4老师 2012-01-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 djl24 的回复:]
怎么还是不明白?究竟怎样才会jpeg解压图片呢?
[/Quote]
CvArr *im = cvLoadImage("lena.jpg", CV_LOAD_IMAGE_ANYCOLOR );//自动解压jpeg图片
djl24 2012-01-19
  • 打赏
  • 举报
回复
怎么还是不明白?究竟怎样才会jpeg解压图片呢?
qualcode 2012-01-19
  • 打赏
  • 举报
回复
刚开始学习OpenCV
灼眼的超哥 2012-01-17
  • 打赏
  • 举报
回复
谢谢楼主分享!发现了一个开源的函数库。

64,685

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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