gpt4 book ai didi

c - openCV 中的矩阵运算

转载 作者:太空宇宙 更新时间:2023-11-03 22:32:38 31 4
gpt4 key购买 nike

出于性能原因,我在最新项目中使用 C 语言的 OpenCV 作为图像处理工具。在使用 Open CV 时,我发现 Open CV 对矩阵运算的库支持较少。例如,如果想向矩阵中的每一列添加一个列 vector ,我将不得不编写一个自定义函数来执行此操作。还有更多在 Matlab 中看似微不足道的操作,在 Open CV 中缺失 - 比如每列的范数,列明智的最小/最大等。简而言之,在 Open CV 中似乎缺少矩阵上的所有列明智的操作(我会感到惊讶如果我没有找到更多的话)。对库的矩阵操作支持非常少。这是图书馆的设计决定还是有某种扩展可以帮助我解决这个问题。我相信肯定还有其他人观察到并针对缺乏支持采取了一些措施。有什么指示吗?

最佳答案

OpenCV 可能不能完全替代 MatLab,但它的矩阵支持还是相当不错的。您可能会发现您正在寻找的一些功能在那里,但只是名称不同。

For example if wanted to add a column vector to every column in a matrix , I will have to write a custom function to do this.

您可以通过几种方式做到这一点;可能最简单的是范围。请参阅下面的一种解决方案。

like norm of each column

使用矩阵范围选择循环中的每一列:

cv::Mat m;

// ...

for (unsigned c = 0; c < m.cols(); c++)
{
cv::Mat col(m, cv::Range::all(), cv::Range(c, c+1));
double n = cv::norm(col, NORM_L2);
}

column wise min/max etc

cv::reduce 函数提供了所有这些类型的功能:

cv::reduce(InputArray src, OutputArray dst, int dim, int rtype);
// where rtype = CV_REDUCE_MIN, CV_REDUCE_MAX, etc

In short all Column wise operations on a matrix seems to be missing in Open CV (I would be surprised if I didn't find more).

cv::reduce() 也执行求和和平均。您可以选择按列或按行执行。如果这些操作不能满足您的需求,您实际上可能必须编写自己的函数。

在线文档很不错:

本教程包含有关内存管理和矩阵的更多信息,特别是解释范围以及如何共享内存:

关于c - openCV 中的矩阵运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19194409/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com