代码如下
#include<opencv.hpp>
int main()
{
cv::Mat image;
cv::Mat dctimage;
image = cv::imread("F:\\ebook\\opencv\\LearningOpenCV3\\test\\timg.jpg", 0);
cv::namedWindow("My window");
cv::imshow("My window", image);
cv::waitKey(0);
image.convertTo(image, CV_32F, 1.0 / 255);
cv::dct(image, dctimage); //离散余弦变换
cv::imshow("My window", dctimage);
cv::waitKey(0);
int h=dctimage.size[0];
int w = dctimage.size[1];
cv::Size s = {w,h};
cv::Mat idctimage=cv::Mat::zeros(h,w,CV_32F);
int left_h = 0;
int left_w = 0;
int right_h = 192;
int right_w = 288;
for (int i = left_h; i < right_h;i++)
for (int j = left_w; j < right_w; j++)
{
idctimage.at<float>(i, j) = dctimage.at<float>(i, j);
}
cv::imshow("My window", idctimage);
cv::waitKey(0);
cv::idct(idctimage, idctimage); //离散余弦逆变换
cv::imshow("My window",