c++ opencv余弦变换
时间: 2023-10-03 11:09:04 浏览: 124
余弦变换(DCT)是一种常用的信号处理技术,可以将信号从时域转换到频域,常用于图像压缩、去噪等领域。在OpenCV中,可以使用cv::dct函数进行余弦变换。
下面是一个简单的示例代码,演示如何对一张灰度图像进行DCT变换,并显示变换后的结果:
```c++
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat img = imread("lena.jpg", IMREAD_GRAYSCALE);
if (img.empty())
{
cout << "Failed to load image" << endl;
return -1;
}
Mat dctImg;
dct(img, dctImg);
imshow("Original Image", img);
imshow("DCT Image", dctImg);
waitKey(0);
return 0;
}
```
在这个例子中,我们首先使用imread函数读取了灰度图像lena.jpg,然后使用dct函数对其进行变换,最后分别显示原始图像和DCT变换后的图像。运行代码后,可以看到如下的结果:
![lena](https://img-blog.csdn.net/20180514133225629?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N0YXRpY2ZpbGUx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/85)
可以看到,DCT变换后的图像变成了一张灰度图,其中亮度代表了对应频率的能量大小。如果需要进行图像压缩,可以只保留部分高能量的系数,从而达到压缩的效果。
阅读全文