OpenCV / C++ - 如何在矢量上使用自适应阈值而不是垫子

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

本文关键字:阈值 自适应 C++ OpenCV      更新时间:2023-10-16

我有一个关于在C++中使用OpenCVadaptiveThreshold函数的问题。(这是它的文档。

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

阅读本文后,我非常清楚如何使用此函数为图像(在 OpenVC 中表示为Mat对象)找到一个好的阈值。

我的情况有点不同,因为我只想将其用于vector而不是Mat。所以基本上我有一个double值的vector,我需要找到一个好的阈值,并且想知道是否有一种简单的方法来调整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将是单个列。