C++ opencv ncc归一化互相关代码
时间: 2023-09-12 07:10:32 浏览: 176
C++相关代码
以下是使用 OpenCV C++ 实现 NCC(Normalized Cross Correlation)归一化互相关的示例代码:
```cpp
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
Mat img1 = imread("image1.jpg", IMREAD_GRAYSCALE);
Mat img2 = imread("image2.jpg", IMREAD_GRAYSCALE);
// 计算模板和图像的平均值
Scalar mean1 = mean(img1);
Scalar mean2 = mean(img2);
// 计算模板和图像的标准差
Mat stddev1, stddev2;
meanStdDev(img1, Mat(), stddev1);
meanStdDev(img2, Mat(), stddev2);
// 归一化模板和图像
Mat nccImg1, nccImg2;
normalize(img1 - mean1, nccImg1, 0, 1, NORM_MINMAX);
normalize(img2 - mean2, nccImg2, 0, 1, NORM_MINMAX);
// 计算归一化互相关
Mat result;
matchTemplate(nccImg1, nccImg2, result, TM_CCORR_NORMED);
// 显示结果
imshow("Result", result);
waitKey(0);
return 0;
}
```
其中,`normalize` 函数用于将图像归一化到 [0, 1] 范围内;`matchTemplate` 函数用于计算归一化互相关,其中 `TM_CCORR_NORMED` 表示使用 NCC 方法计算归一化互相关。
阅读全文