opencv 绿幕抠图 python版 c++版

python版绿幕抠图

import cv2
 
image = cv2.imread("images/green_screen.jpg")
cv2.imshow("input",image)
    
# 将图片BGR转化为HSV进行处理
hsv = cv2.cvtColor(image,cv2.COLOR_BGR2HSV)
 
# 计算图像绿值的范围,则除了图像人物以外,其他均为白色255,图像人物为黑色0
mask = cv2.inRange(hsv,(35,43,46),(77,255,255))
 
# 将图像进行取反操作,则图像人物为白色255,其他为黑色0
cv2.bitwise_not(mask,mask)
 
# 将原图和取反后的图在mask区域内进行与操作,则保留人物,其他为黑色,因此将人物抠出来了!
result = cv2.bitwise_and(image,image,mask=mask)
 
cv2.imshow("mask",mask)
cv2.imshow("result",result)
 
cv2.waitKey(0)
cv2.destroyAllWindows()

————————————————
版权声明:本文为CSDN博主「Q小鑫」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_42108414/article/details/119943104

c++版绿幕抠图

#include 
#include 
#include 
#include 
#include 

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(i, j);
            Vec4b &pixel_temp = temp.at(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;
}

————————————————
版权声明:本文为CSDN博主「拽拽就是我」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_32355021/article/details/124733893

你可能感兴趣的:(opencv基础,c++,开发语言)