如何将 JPEG 转换为 DCT 8 x 8

How convert JPEG to DCT 8 x 8?

本文关键字:DCT 转换 JPEG      更新时间:2023-10-16

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

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

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