opencv4.10.0 小波处理C++例子
时间: 2024-09-29 12:15:51 浏览: 58
在OpenCV 4.10.0中,小波分析是一种强大的图像处理工具,用于分析信号在不同尺度和频率下的特性。下面是一个简单的C++示例,展示了如何使用OpenCV库进行Haar小波变换:
```cpp
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
int main(int argc, char** argv)
{
// 读取图像
cv::Mat img = cv::imread("test.jpg", cv::IMREAD_GRAYSCALE);
if (img.empty())
{
std::cout << "Could not open or find the image" << std::endl;
return -1;
}
// 创建一个空的图像矩阵来存放小波系数
cv::Mat coeffs(img.size(), CV_64F);
// 进行Haar小波变换
cv::waveletTransform(img, coeffs, cv::WAVELET_HAAR, 0); // 第四个参数表示层数,这里设置为0,即一阶分解
// 分析结果
for (int i = 0; i < coeffs.rows; ++i)
{
for (int j = 0; j < coeffs.cols; ++j)
{
std::cout << "Coefficients at (" << i << ", " << j << ") : " << coeffs.at<double>(i, j) << std::endl;
}
}
return 0;
}
```
在这个例子中,我们首先加载一张灰度图像,然后使用`cv::waveletTransform`函数对图像进行Haar小波变换,并将结果存储到`coeffs`矩阵中。然后遍历并打印出每个像素的小波系数。
阅读全文