gpt4 book ai didi

c++ - opencv中 'imquantize'函数的实现

转载 作者:太空宇宙 更新时间:2023-11-04 13:29:23 24 4
gpt4 key购买 nike

我正在尝试使用 opencv 实现 Matlab 函数 imquantize。我应该使用哪个 opencv 阈值函数来实现 Matlab 函数 multithresh?完成阈值处理后,如何根据阈值标记像素?这是实现 imquantize 的正确方法吗?我应该在代码中包含任何其他功能吗?

最佳答案

有基于OpenCV的实现here ,您应该从哪里得到这个想法:

cv::Mat
imquantize(const cv::Mat& in, const arma::fvec& thresholds) {
BOOST_ASSERT_MSG(cv::DataType<float>::type == in.type(), "input is not of type float");

cv::Mat index(in.size(), in.type(), cv::Scalar::all(1));
for (int i = 0; i < thresholds.size() ; i++) {
cv::Mat temp = (in > thresholds(i)) / 255;
temp.convertTo(temp, cv::DataType<float>::type);
index += temp;
}

return index;
}

已更新:thresholds 是浮点阈值的 vector (均匀分布到您要量化的# of levels[0, 1]) 内。 检查 the code snippet使用方法:

const float step = 1./levels[i];
arma::fvec thresh = arma::linspace<arma::fvec>(step, 1.-step, levels[i]-1);
channels[i] = imquantize(channels[i], thresh);

关于c++ - opencv中 'imquantize'函数的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32110267/

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