gpt4 book ai didi

performance - 在 opencv 中执行 alpha 掩码的最有效方法是什么?

转载 作者:太空宇宙 更新时间:2023-11-03 20:46:09 26 4
gpt4 key购买 nike

我知道 OpenCV 只支持二进制掩码。
但是我需要做一个覆盖,我有一个指定覆盖透明度的灰度蒙版。

例如。如果掩码中的像素有 50% 是白色,则它应该意味着对该像素进行 cv::addWeighted 操作,alpha=beta=0.5,gamma = 0.0。

现在,如果没有 opencv 库函数,您会建议哪种算法最有效?

最佳答案

我做了类似这样的修复。

typedef double Mask_value_t;
typedef Mat_<Mask_value_t> Mask;
void cv::addMasked(const Mat& src1, const Mat& src2, const Mask& mask, Mat& dst)
{
MatConstIterator_<Vec3b> it1 = src1.begin<Vec3b>(), it1_end = src1.end<Vec3b>();
MatConstIterator_<Vec3b> it2 = src2.begin<Vec3b>();
MatConstIterator_<Mask_value_t> mask_it = mask.begin();
MatIterator_<Vec3b> dst_it = dst.begin<Vec3b>();

for(; it1 != it1_end; ++it1, ++it2, ++mask_it, ++dst_it)
*dst_it = (*it1) * (1.0-*mask_it) + (*it2) * (*mask_it);
}

我还没有优化也没有用断言使这段代码安全。
工作假设:所有 Mat 和 Mask 的大小相同,并且 Mat 是正常的三 channel 彩色图像。

关于performance - 在 opencv 中执行 alpha 掩码的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13128696/

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