gpt4 book ai didi

opencv - OpenCV 中的 CvMLData::get_responses()?

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

我正在尝试使用 CvMLData::get_responses但它没有给我回复。

我得到的行数与文档中所说的一样多,但我得到的不是响应,而是前 n 个值,其中 n 等于行数或样本数。

这是我的示例(第一列是响应):

1,0,9
1,5,4
2,7,7
1,5,5
2,9,9

这是我的代码

#include <cstdlib>
#include "opencv/cv.h"
#include "opencv/ml.h"

using namespace std;
using namespace cv;

int main(int argc, char** argv) {
CvMLData cvml;
cvml.read_csv("examples.csv");
// Indicate the column that has the response
cvml.set_response_idx(0);
const CvMat* rs = cvml.get_responses();
cout << "Rows: " << rs->rows << " Cols: " << rs->cols << endl;
for(int i = 0; i < rs->rows; i++ ) {
cout << rs->data.fl[i] << "\n";
}
return EXIT_SUCCESS;
}

这是我得到的输出。

Rows: 5 Cols: 1
1
0
9
1
5

如您所见,我只获得了最初的 5 个值。我正在使用 OpenCV 2.3,这是我试图解决的一个更大问题的一部分。

这可能更像是一个错误而不是一个问题,但我仍然可能做错了什么或误解了什么。谢谢。

最佳答案

我建立了自己的答案。它更像是一种解决方法,但无论如何。这是工作。我正在使用 CVMLData::get_values() 方法并计算下一个第一列。

代码如下:

int main(int argc, char** argv) {
CvMLData cvml;
cvml.read_csv("examples.csv");
cvml.set_response_idx(0);
const CvMat* vs = cvml.get_values();
cout << "Rows: " << vs->rows << " Cols: " << vs->cols << endl;
for(int i = 0; i < vs->rows; i++ )
{
cout << vs->data.fl[i*vs->cols] << "\n";
}
return EXIT_SUCCESS;
}

结果:

请注意,我将 i * 与->cols 相乘,所以我只得到第一列。

Rows: 5 Cols: 3
1
1
2
1
2

只有响应位于第一列时,此代码才有效。如果不加列号,像这样

cout << vs->data.fl[i*vs->cols + YOUR_COLUMN_RESPONSE] << "\n"; 

关于opencv - OpenCV 中的 CvMLData::get_responses()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8674381/

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