0

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

4

2 回答 2

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 实用程序的源代码,看看它是如何完成的。

于 2012-04-19T12:38:06.227 回答
0

我认为您要完成的工作没有多大意义。JPEG 图像已经充满了 DCT。您需要先了解您要做什么,OpenCV+C++ 只会让事情变得更混乱

于 2012-04-19T02:59:25.223 回答