gpt4 book ai didi

opencv - 使用OpenCV的PCACompute函数

转载 作者:行者123 更新时间:2023-12-02 17:55:02 24 4
gpt4 key购买 nike

我正在尝试使用Android的OpenCV来实现特征脸的面部识别。

我有一组训练图像,它们都是100x100像素的灰度图像。我当前正在使用Highgui.imread读取这些图像,因此每个图像都是宽度和高度为100的Mat。我正在尝试使用Core.PCACompute函数查找该组图像的主要成分。

public static void PCACompute(Mat data, Mat mean, Mat eigenvectors, int maxComponents)

所以我的问题是:第一个参数(mat数据)需要具有什么维度?即使数据只是一个Mat,也可以传递一组多张图像吗?

还是我做错了,这不是用于特征脸的正确函数?我看到的一个教程使用了一个名为cvCalcEigenObjects的C++函数,但是我找不到等效的Java方法...

最佳答案

函数需要一个Mat Mat 作为输入。但是您可以传递数据like this:

1711        public void testPCAComputeMatMatMat() {
1712 Mat data = new Mat(3, 4, CvType.CV_32F) {
1713 {
1714 put(0, 0, 1, 2, 2, 4);
1715 put(1, 0, 2, 4, 4, 8);
1716 put(2, 0, 3, 6, 6, 12);
1717 }
1718 };
1719 Mat mean = new Mat();
1720 Mat vectors = new Mat();
1721
1722 Core.PCACompute(data, mean, vectors);
1723
1724 Mat mean_truth = new Mat(1, 4, CvType.CV_32F) {
1725 {
1726 put(0, 0, 2, 4, 4, 8);
1727 }
1728 };
1729 Mat vectors_truth = new Mat(3, 4, CvType.CV_32F, new Scalar(0)) {
1730 {
1731 put(0, 0, 0.2, 0.4, 0.4, 0.8);
1732 }
1733 };
1734 assertMatEqual(mean_truth, mean, EPS);
1735 assertMatEqual(vectors_truth, vectors, EPS);
1736 }

要开始使用面部识别,我建议使用 doc,因为它解释了 what PCA does

this link提供了一些信息和源代码,可以使用图像进行训练来进行简单的人脸识别。

关于opencv - 使用OpenCV的PCACompute函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8520139/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com