在 OSX 上的 opencv2.4.10 中垫子显示不同
Mat show different in opencv2.4.10 on OSX
在opencv的工程中,程序如下:
Mat A = Mat(9, 2, CV_16S );
int x0,y0;
ifstream fr("points.txt",ios::in);
for (int j=0; j<9; j++) {
frs >> x0;
frs >> y0;
A.at<float>(j, 0) = x0;
A.at<float>(j, 1) = y0;
}
cout << A << endl;
但我得到了输出:
[0, -16080;
0, 0;
0, 16640;
0, -16160;
0, -16384;
0, 16656;
0, -16128;
0, 16448;
0, 16640]
据推测,文件frs
中的数据是:
-11 -8
0 -6
8 -6
-7 -11
-2 -10
9 -10
-8 -14
3 -16
8 -18
我是不是做错了什么?
首先,输入文件流的名称是fr,但你试图从frs读取点。
[更新]
您使用了错误的垫子类型 CV_16S 而不是 CV_32F。在这里您可以找到更多信息。参见 Mat::depth。
http://docs.opencv.org/2.4/modules/core/doc/basic_structures.html
此代码应该有效。
Mat A = Mat(9, 2, CV_32F);
float x, y;
std::ifstream fr("points.txt", std::ios::in);
for (int j = 0; j < 9; j++) {
fr >> x >> y;
A.at<float>(j, 0) = x;
A.at<float>(j, 1) = y;
}
std::cout << A << std::endl;
在opencv的工程中,程序如下:
Mat A = Mat(9, 2, CV_16S );
int x0,y0;
ifstream fr("points.txt",ios::in);
for (int j=0; j<9; j++) {
frs >> x0;
frs >> y0;
A.at<float>(j, 0) = x0;
A.at<float>(j, 1) = y0;
}
cout << A << endl;
但我得到了输出:
[0, -16080;
0, 0;
0, 16640;
0, -16160;
0, -16384;
0, 16656;
0, -16128;
0, 16448;
0, 16640]
据推测,文件frs
中的数据是:
-11 -8
0 -6
8 -6
-7 -11
-2 -10
9 -10
-8 -14
3 -16
8 -18
我是不是做错了什么?
首先,输入文件流的名称是fr,但你试图从frs读取点。
[更新]
您使用了错误的垫子类型 CV_16S 而不是 CV_32F。在这里您可以找到更多信息。参见 Mat::depth。 http://docs.opencv.org/2.4/modules/core/doc/basic_structures.html
此代码应该有效。
Mat A = Mat(9, 2, CV_32F);
float x, y;
std::ifstream fr("points.txt", std::ios::in);
for (int j = 0; j < 9; j++) {
fr >> x >> y;
A.at<float>(j, 0) = x;
A.at<float>(j, 1) = y;
}
std::cout << A << std::endl;