如何将JPEG转换为DCT 8 x 8?

时间:2012-04-18 21:42:42

标签: c++ opencv jpeg dct

如何使用OpenCv和C ++将JPEG图像转换为DCT 8x8?就像我从哪里开始一样?

2 个答案:

答案 0 :(得分:1)

libjpeg是你的朋友......

以下代码片段从JPEG图像中加载DCT系数(免责声明:它已经从我的一个四年的项目 - YMMV中删除):

struct jpeg_decompress_struct srcinfo;
struct jpeg_error_mgr jsrcerr;
jvirt_barray_ptr * src_coef_arrays;
FILE * fp;  

srcinfo.err = jpeg_std_error(&jsrcerr);
jpeg_create_decompress(&srcinfo);
fp = fopen(filename, "rb");
jpeg_stdio_src(&srcinfo, fp);
(void) jpeg_read_header(&srcinfo, TRUE);
src_coef_arrays = jpeg_read_coefficients(&srcinfo);
fclose(fp);

...
// use coefficients
...

(void) jpeg_finish_decompress(&srcinfo);
jpeg_destroy_decompress(&srcinfo);

访问系数有点毛茸茸 - 我建议您查阅与libjpeg捆绑在一起的jpegtran实用程序的源代码,并了解它是如何完成的。

答案 1 :(得分:0)

我认为你想要完成的事情没有多大意义。 JPEG图像已经充满了DCT。您需要先了解自己要做的事情,OpenCV + C ++只会让人感觉更糟糕