通过OpenCV实现纯色实时抠图的逻辑记录

本文介绍了一种基于OpenCV的实时抠图算法,通过HSV色彩空间转换与阈值处理实现背景分离,结合形态学操作去除噪点,最终通过自定义函数replace_and_blend完成前景与新背景的无缝融合,提升了抠图效果。

1、抠图算法来源于网络

cv::Mat replace_and_blend(cv::Mat &frame, cv::Mat &bg, cv::Mat &mask)
{
    cv::Mat result = cv::Mat::zeros(frame.size(), frame.type());
    int h = frame.rows;
    int w = frame.cols;
    int dims = frame.channels();

    // replace and blend
    int m = 0;
    double wt = 0;

    int r = 0, g = 0, b = 0;
    int r1 = 0, g1 = 0, b1 = 0;
    int r2 = 0, g2 = 0, b2 = 0;

    double time = GetTickCount();
    for (int row = 0; row < h; row++)
    {
        uchar* current = frame.ptr<uchar>(row);
        uchar* bgrow = bg.ptr<uchar>(row);
        uchar* maskrow = m

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值