0

OpenCvとC++を使用してJPEG画像をDCT8x8に変換するにはどうすればよいですか?

4

2 に答える 2

1

libjpegはあなたの友達です..。

次のコードスニペットは、JPEG画像からDCT係数をロードします(免責事項:4年前の私のプロジェクト-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 に答える