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

OpenCV / C++ - How to use adaptiveThreshold on vector instead of Mat?

我有一个关于在 C++ 中使用来自 OpenCVadaptiveThreshold 函数的问题。 (这是documentation。)

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

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

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

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

创建一个包裹 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 将是单列。