我正在尝试存储四个特定点的位置,然后将其放入 cv::fillPoly
功能。目前我的位置存储在一个多维数组中,有没有办法将其转换或直接转换为它接受的格式?
int PointLocationArray[4][2] = {{point1_x, point1_y}, {point2_x, point2_y}, {point3_x, point3_y}, {point4_x, point4_y}};
我正试图让它进入:cv::fillPoly(newRegion, PointLocationArray, 255);
最佳答案
一个非常简单的方法是从一个平面数组开始,然后 reshape 矩阵:
static const std::vector<double> data = { 1.0, 2.0, 1.0, 2.0 }; // two points
Mat ret = Mat(data).reshape(2, 2);
注意:这样,ret
是 data
的包装器.如果您想复制数据,请使用 Mat(data, true)
.另一种方法是使用
<<
的组合。运算符和 ,
用于初始化的运算符再次以平面方式提供值:Mat ret = (Mat_<double>(2, 2) << 1.0, 2.0, 1.0, 2.0);
关于c++ - 是否可以使用手动输入制作 OpenCV 矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63723508/