opencv——将2张图片合并

效果演示:

带有绿幕的图片的狮子提取出来,放到另一种风景图片里!

1. 首先我们要先口出绿色绿幕,比如:

 

这里将绿色绿色绿幕先转为HSV,通过修改颜色的明暗度,抠出狮子的轮廓。

代码 :

import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
def showImg(img):
    img1 = cv.cvtColor(img, cv.COLOR_BGR2RGB)
    plt.imshow(img1)
img = cv.imread("img/lion.jpg", cv.IMREAD_COLOR)

img_copy =  img.copy()

# 将BGR格式转为 HSV
hsv_img = cv.cvtColor(img_copy, cv.COLOR_BGR2HSV)

lowerb_val = (35,43, 46)
upperb_val = (77, 255, 255)
# 查找颜色
mask_img =  cv.inRange(hsv_img, lowerb_val, upperb_val)
showImg(mask_img)

说明:这里的颜色需要通过下面的列表,查找一下:

 

2.  通过轮廓反向获取狮子

 

代码:

img_copy[mask_img != 0] = (0,0,0)
showImg(img_copy)

说明: 这里的意思是说 获取不是黑色颜色的部分,并且其它背景为黑色。

3.  使两张图片融合

代码:

img_it = cv.imread("img/yunduo.png", cv.IMREAD_COLOR)

height,width = img_it.shape[0:2]

mask_rgb_img = cv.cvtColor(mask_img, cv.COLOR_BGR2RGB)

srt_img = np.zeros_like(img_it)

for row in range(height):
    for col in range(width):
        
        b,g,r = img_it[row,col]
        
        b1,g1,r1 = mask_rgb_img[row,col]
        
        b2,g2,r2 = img_copy[row,col]
        
        if b1 != 255 and g1 != 255 and r1 !=255:
            b = b2
            g = g2
            r = r2
        srt_img[row,col] = (b,g,r)

fig = plt.figure(figsize=(20,17))
fig.add_subplot(1,3,1)
showImg(img)
fig.add_subplot(1,3,2)
showImg(img_copy)
fig.add_subplot(1,3,3)
showImg(srt_img)

 说明:这里是分开了3原色,并且分开判断是否为255,不是255.者将这块区域替换成狮子的部分。

 

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-30 09:14:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-30 09:14:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-30 09:14:03       82 阅读
  4. Python语言-面向对象

    2024-01-30 09:14:03       91 阅读

热门阅读

  1. C#设置程序开机启动

    2024-01-30 09:14:03       56 阅读
  2. 基于 MATLAB 语言的 BP 神经网络的改进算法

    2024-01-30 09:14:03       53 阅读
  3. 力扣面试题02.07-链表相交

    2024-01-30 09:14:03       59 阅读
  4. gorm框架之常用增删改查(CRUD)

    2024-01-30 09:14:03       55 阅读
  5. 如何多个excel中的数据分发到多个excel中去

    2024-01-30 09:14:03       43 阅读
  6. 每日OJ题_算法_前缀和⑤_力扣560. 和为 K 的子数组

    2024-01-30 09:14:03       63 阅读
  7. TensorFlow2实战-系列教程8:TFRecords数据源制作2

    2024-01-30 09:14:03       71 阅读