如何使用 OpenCv 和 C++ 将 JPEG 图像转换为 DCT 8x8?就像我从哪里开始一样?
问问题
2210 次
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 回答