OpenCV / C++ - 如何在向量上使用adaptiveThreshold而不是Mat?

Posted

技术标签:

【中文标题】OpenCV / C++ - 如何在向量上使用adaptiveThreshold而不是Mat?【英文标题】:OpenCV / C++ - How to use adaptiveThreshold on vector instead of Mat? 【发布时间】:2015-04-16 17:13:37 【问题描述】:

我有一个关于在 C++ 中使用 OpenCV 中的 adaptiveThreshold 函数的问题。 (这里是documentation。)

void adaptiveThreshold(InputArray src, OutputArray dst, double maxValue, int adaptiveMethod, int thresholdType, int blockSize, double C)

在阅读this article 之后,我很清楚如何使用这个函数来为images 找到一个好的阈值(在OpenVC 中表示为Mat 对象)。

我的情况有点不同,我只想将它用于vector 而不是Mat。所以基本上我有一个vectordouble 值,我需要找到一个好的阈值,并且想知道是否有一种简单的方法来适应adaptiveThreshold 函数。我尝试了更多静态方法来生成阈值,例如使用平均平均值或中位数,但在我的情况下这些方法效果不佳。

有人对如何解决这个问题有建议吗?我猜我将不得不调整 srcdst 参数并以某种方式传递我的向量,但这样做的直接方法不起作用。

【问题讨论】:

【参考方案1】:

创建一个包装vectorcv::Mat。声明了相关的构造函数:

//! builds matrix from std::vector with or without copying the data
template<typename _Tp> explicit Mat(const vector<_Tp>& vec, bool copyData=false);

所以你应该可以做到:

std::vector<double> vec(10, 0.0); // your vector here
bool copyData = false;
cv::Mat M(vec, copyData); // default is not to copy data

生成的Mat 将是一列。

【讨论】:

以上是关于OpenCV / C++ - 如何在向量上使用adaptiveThreshold而不是Mat?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 OpenCV 将向量的结构复制到 C++ 中的另一个向量

向量下标超出范围opencv c++

c++和opencv中的向量下标超出范围错误

SVM支持向量机回归openCv c++

OpenCV,C++:如何使用 cv::Meanshift

OpenCV (C++) 中的向量比较