OpenCV去除绿幕抠图源码

 更新时间:2022年05月13日 14:59:52   作者:拽拽就是我  
这篇文章主要介绍了OpenCV去除绿幕抠图,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

绿布原图

绿布原图

抠图后的图片

在这里插入图片描述

源码

#include <opencv2/opencv.hpp>
#include <iostream>
#include <vector>
#include <cstdio>
#include <cstring>
using namespace cv;
using namespace std;
int main()
{
    //1、设置需要去除的颜色
    //2、颜色比对
    //3、展示效果
    //只有png有透明度空间,jpg是没有透明度空间的
    Mat srcImg = imread("E:/img/lvbu.jpg", -1);
    cout << srcImg.channels() << endl;
   
    Vec3b color(0, 255, 0); //绿色
    //int tempr = 0;
    int tempc = 0;
    //先把图片放大,做完抠图后再缩小。
    Mat temp;
    //转换图片,增加透明区域
    cvtColor(srcImg, temp, COLOR_RGB2BGRA);
    for (int i = 0; i < srcImg.rows; ++i) {
        for (int j = 0; j < srcImg.cols; ++j) {
            Vec3b &pixel = srcImg.at<Vec3b>(i, j);
            Vec4b &pixel_temp = temp.at<Vec4b>(i, j);
            if (pixel[0] <= 30 && pixel[1] >= 210 && pixel[2] <= 30) {
                tempc = j + 1; //把符合要求的下一个点也抠掉
                pixel_temp[3] = 0;
                //pixel[0] = 255;
                //pixel[1] = 255;
                //pixel[2] = 255;
            }
            else if (tempc == j - 1) {
                pixel_temp[3] = 0;
                /*pixel[0] = 255;
                pixel[1] = 255;
                pixel[2] = 255;*/
            }
        }     
    }
    imshow("result", temp);
    imwrite("E:/img/result.png", temp);
    waitKey(0);
    return 0;
}

到此这篇关于OpenCV去除绿幕 抠图的文章就介绍到这了,更多相关OpenCV抠图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 实例讲解C++编程中lambda表达式的使用

    实例讲解C++编程中lambda表达式的使用

    这篇文章主要介绍了C++编程中lambda表达式的使用实例,lambda表达式特性的引入在C++11中可谓千呼万唤始出来,非常重要,需要的朋友可以参考下
    2016-01-01
  • C/C++合并两个升序链表的方式

    C/C++合并两个升序链表的方式

    这篇文章主要介绍了C/C++合并两个升序链表的方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • C++随机数生成实例讲解

    C++随机数生成实例讲解

    这篇文章主要为大家详细介绍了C++随机数生成实例,如何利用C++来生成0——N-1之间的随机数,感兴趣的小伙伴们可以参考一下
    2016-04-04
  • Qt开发之QString类的使用教程详解

    Qt开发之QString类的使用教程详解

    本文主要介绍了Qt中QString类的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-11-11
  • C++入门指南之贪吃蛇游戏的实现

    C++入门指南之贪吃蛇游戏的实现

    这篇文章主要给大家介绍了关于C++入门指南之贪吃蛇游戏实现的相关资料,文章通过示例代码介绍的非常详细,可以让大家能短时间内写出一个贪吃蛇,需要的朋友可以参考下
    2021-10-10
  • C语言中那些你必须知道的常用关键字

    C语言中那些你必须知道的常用关键字

    这篇文章主要介绍了C语言中我们常用的关键字静态static的详细讲解和typedef 、#define定义常量和宏,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-06-06
  • C++ lambda闭包消除类成员变量的解决思路

    C++ lambda闭包消除类成员变量的解决思路

    在面向对象编程中,类成员变量过多可能会造成干扰,可以采用函数式编程的思想,通过闭包和lambda表达式减少不必要的类成员,增强代码的可控性和减少干扰,注意要正确使用mutable修饰符和值捕获,以及合理安排lambda的初始化时机,感兴趣的朋友跟随小编一起看看吧
    2024-09-09
  • 详解C语言printf()输出格式

    详解C语言printf()输出格式

    这篇文章主要介绍了C语言printf()输出格式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • VC++的if语句应用范围分析

    VC++的if语句应用范围分析

    这篇文章主要介绍了VC++的if语句应用范围分析,对VC++初学者有很好的参考学习价值,需要的朋友可以参考下
    2014-08-08
  • EasyC++模板重载

    EasyC++模板重载

    这篇文章主要介绍了C++模板重载,重载的模板的函数特征,也就是入参的数量和类型必须有所不同,下面我们讲举例说明此内容,具有一定的参考价值,需要的小伙伴可以参考一下
    2021-12-12

最新评论