在OpenCV 2和更高版本中有方法Mat::resize
让我们添加任意数量的行与默认值到您的矩阵是否有任何等效的列的方法。如果不是最有效的方法是什么。 谢谢OpenCV在矩阵中添加列
回答
使用cv::hconcat
:
Mat mat;
Mat cols;
cv::hconcat(mat, cols, mat);
并且不要尝试查找此功能的文档。它是无证的。 – 2014-10-13 13:37:11
标题代码在这里:https://github.com/Itseez/opencv/blob/master/modules/core/include/opencv2/core.hpp#L968。为了完整性,可以使用'vconcat()'和'cv :: Mat :: push_back()'完成垂直连接。 – 2015-01-29 10:43:43
文档:http://docs.opencv.org/trunk/d2/de8/group__core__array.html – 2016-09-14 21:30:59
最坏的情况:rotate the image by 90 degrees和使用Mat::resize()
,使列成为行。
好吧,但那是最坏的情况,如果我的垫包含CV_64FC1和大小太大(500 * 500),我必须为此提供大量的矩阵,所以我不想在算法中包含旋转或转置两次这样的大矩阵的过程。 – AMCoded 2012-01-13 07:27:00
正如我所说,**最坏的情况**。如果我知道最好的情况,我会分享给你。 – karlphillip 2012-01-13 11:19:34
由于OpenCV,一个接一个地存储矩阵行的元素,没有直接的方法来增加列的大小,但我提出了自己两个解决方案的上述问题, 首先使用以下方法(复制元素的顺序是比其他方法要少),如果你想在矩阵的末尾插入一些行或列,而不是专门的话,你也可以使用类似的方法。
void resizeCol(Mat& m, size_t sz, const Scalar& s)
{
Mat tm(m.rows, m.cols + sz, m.type());
tm.setTo(s);
m.copyTo(tm(Rect(Point(0, 0), m.size())));
m = tm;
}
而另外一个,如果你坚持不包括甚至复制数据的顺序为您的算法,那么最好是与大的行数和列的创建你的矩阵,并开始用更小的子矩阵算法则通过Mat::adjustROI
方法增加矩阵大小。
- 1. 在C#中添加矩阵?
- 2. 在矩阵中添加行与矩阵之间的矩阵
- 3. 如何在矩阵上添加一列?
- 4. 在OpenCV中将矩阵转换为阵列/向量
- 5. OpenCV中的排序矩阵
- 6. OPENCL添加矩阵
- 7. 添加矩阵Java
- 8. OpenCV矩阵创建
- 9. OpenCV通过子矩阵改变矩阵
- 10. 在OpenCV中使用子矩阵制作一个大矩阵
- 11. 添加列到稀疏矩阵
- 12. 如何添加csr矩阵列表
- 13. 如何在python中添加矩阵
- 14. 在Eigen3中添加矩阵和DiagonalMatrix
- 15. 减去矩阵行方向在OpenCV中
- 16. 在OpenCV中从矩阵访问值
- 17. 在OpenCV中更新Mat的子矩阵
- 18. 矩阵列表中的列表矩阵
- 19. 在R中加上矩阵列表
- 20. C函数添加矩阵
- 21. CUDA添加行矩阵
- 22. R编程 - 在现有矩阵中添加额外的列
- 23. opencv:矩阵分配混淆
- 24. opencv的矩阵乘法
- 25. 使用旋转矩阵opencv
- 26. opencv计算矩阵等级
- 27. 伯努利矩阵与OpenCV
- 28. OpenCV乘标量和矩阵
- 29. OpenCV密集光流矩阵
- 30. 查找OpenCV的矩阵
我看看联机文档,似乎不必添加列的功能。 http://opencv.willowgarage.com/documentation/cpp/core_basic_structures.html?highlight=mat#Mat::resize – 2012-01-13 08:27:50