刚好今天又搜了一段代码,文心一言给的代码有模有样,并且简洁易懂,但我试了不行,cv::dot 这个函数没有, 其他都没有问题:
opencv c++人脸比对
在OpenCV中,可以使用Eigenfaces或Fisherfaces方法进行人脸识别和比对。以下是一个使用OpenCV的C++示例代码,演示如何加载两张人脸图片,并计算它们之间的相似度:
#include <opencv2/opencv.hpp>
#include <iostream>
int main() {
// 加载两张人脸图片
cv::Mat face1 = cv::imread("face1.jpg", cv::IMREAD_GRAYSCALE);
cv::Mat face2 = cv::imread("face2.jpg", cv::IMREAD_GRAYSCALE);
if (face1.empty() || face2.empty()) {
std::cout << "Error: Loading images" << std::endl;
return -1;
}
// 人脸比对通常使用欧氏距离或余弦相似度计算
// 计算两个人脸图像的欧氏距离
double norm = cv::norm(face1, face2);
// 计算两个人脸图像的余弦相似度
double similarity = cv::abs(cv::dot(face1, face2) / (cv::norm(face1) * cv::norm(face2)));
// 输出比对结果
std::cout << "Norm distance: " << norm << std::endl;
std::cout << "Cosine similarity: " << similarity << std::endl;
return 0;
}
在这个例子中,我们使用cv::imread加载了两张灰度化的人脸图片。然后使用cv::norm计算了两张图片之间的欧氏距离,或者使用cv::dot和cv::norm计算它们的余弦相似度。你可以根据实际需求选择合适的距离或相似度指标。
请确保在编译此代码时链接了OpenCV库。
【 在 reaphone 的大作中提到: 】
: 那个API真不存在么。
: 你再想想。
:
--
FROM 113.89.10.226