gpt4 book ai didi

java - java 中的 opencv 使用 MAT 而不是 vector 作为标签

转载 作者:太空宇宙 更新时间:2023-11-03 22:30:47 24 4
gpt4 key购买 nike

在 java jni 的 FaceRecognition 类中,我有以下训练方法:

public  void train(List<Mat> src, Mat labels)

在所有示例中,“labels”都是 vector ,而不是 Mat。在我确实发现的 c++ 文档中:

The labels of each image are stored within a std::vector<int> (you could also use a Mat of type CV_32SC1).

但我不确定如何在 java 中执行此操作。如何构建包含 int 列表的 CV_32SC1 类型的 Mat?

最佳答案

最后我弄明白了:

List<Mat> src = new ArrayList<>();

Mat image = Highgui.imread("faces/s1/1.pgm", 0);
src.add(image);

image = Highgui.imread("faces/s1/2.pgm", 0);
src.add(image);

image = Highgui.imread("faces/s1/3.pgm", 0);
src.add(image);

image = Highgui.imread("faces/s1/4.pgm", 0);
src.add(image);

image = Highgui.imread("faces/s2/1.pgm", 0);
src.add(image);

image = Highgui.imread("faces/s2/2.pgm", 0);
src.add(image);

image = Highgui.imread("faces/s2/3.pgm", 0);
src.add(image);

image = Highgui.imread("faces/s2/4.pgm", 0);
src.add(image);

Mat labels = new Mat(8, 1, CvType.CV_32SC1);
labels.put(0, 0, 1);
labels.put(1, 0, 1);
labels.put(2, 0, 1);
labels.put(3, 0, 1);
labels.put(4, 0, 2);
labels.put(5, 0, 2);
labels.put(6, 0, 2);
labels.put(7, 0, 2);

FaceRecognizer recognizer = new LBPHFaceRecognizer();
recognizer.train(src, labels);

关于java - java 中的 opencv 使用 MAT 而不是 vector 作为标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25748096/

24 4 0