c++ - 是否可以使用手动输入制作 OpenCV 矩阵?

标签 c++ opencv matrix multidimensional-array

我正在尝试存储四个特定点的位置,然后将其放入 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);
注意:这样,retdata 的包装器.如果您想复制数据,请使用 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/

相关文章:

matlab - 每行中最大值元素的索引(最后一个索引)

python - 坐标列表中的半径搜索

C++ 编译。翻译阶段#1。通用字符名称

c++ - 带有红黑树的免费列表分配器

python - Shape Context Error 通过计算两个不同形状的距离

python - 与常数的矩阵乘法

c++ - 输入字符串的大小

c++ - 在结构 C++ 中使用列表

android - 我正在努力寻找有用、清晰的 OpenCV 资源

opencv - 查找 64 * 64 图像的离散傅里叶变换