openCV中Point2f的结构是什么?

时间:2014-02-06 20:22:54

标签: opencv

我对Point2f返回的内容感到困惑。我有vector<Point2f> corner;那么,行和列的坐标是什么?它会跟随:

int row_coordinate = corner[i].x;
int col_coordinate = corner[i].y;

但如果我采用上述惯例,我会遇到分段错误。如果我这样做

int row_coordinate = corner[i].y;
int col_coordinate = corner[i].x;

然后我得到了结果,但它似乎与OpenCV文档相反。请告诉我哪一个是正确的。如果你提供一些文档链接(我已经尝试过很多搜索)会非常好。

1 个答案:

答案 0 :(得分:9)

如果我说得对,我认为你对OpenCV的坐标系很困惑。

由于我总是使用x作为宽度,y作为高度,在我的程序中,我使用OpenCV:

// make an image with height 100 and width 200   
cv::Mat img = cv::Mat::zeros(100, 200, CV_8UC1);

int width = img.cols;
int height = img.rows;

cv::Point2f pt(10, 20);

// How do I get a pixel at x = 10 and y = 20 ?
int px = img.at<uchar>(pt.y, pt.x); // yep, it's inverted

这是什么意思? OpenCV corrdinate系统基于行然后是列。如果你想在(x,y)获得像素,使用(y,x)

来访问它