opencv转换颜色空间更改图片背景

作者:落叶_小唱 时间:2023-12-20 19:01:29 

本文实例为大家分享了opencv转换颜色空间更改图片背景的具体代码,供大家参考,具体内容如下

思路:

1、将BGR转换为HSV颜色空间
2、设置掩模
3、位运算

这里以更改摩托罗拉logo背景为例,图片在必应图片搜索得知,具体代码如下:


import numpy as np
import cv2
from imageio import imread
import matplotlib.pyplot as plt

def show(img,winname = "img"):
cv2.namedWindow(winname,cv2.WINDOW_GUI_NORMAL)
cv2.imshow(winname,img)
cv2.waitKey(0)
cv2.destroyAllWindows()

imgpath = r'motorola.jpg'

img = imread(imgpath)
img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
if img.shape == 4:
img = img[:,:,:3]

show(img)
print(img.shape)

bgd = np.ones(img.shape,dtype=np.uint8)
bgd[:,:,:] = 255 #转换为白色背景
show(bgd,"white")
# 转换颜色空间
hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
# show(hsv)
# 绿色分量掩模,使用inRange函数
# lowergreen = np.array([35,43,46],dtype = np.uint8)
# uppergreen = np.array([77,255,255],dtype=np.uint8)
# maskgreen = cv2.inRange(hsv,lowergreen,uppergreen)
# show(maskgreen)

# 蓝色分量掩模,使用inRange函数
lowerblue = np.array([100,43,46],dtype = np.uint8)
upperblue = np.array([124,255,255],dtype=np.uint8)
maskblue = cv2.inRange(hsv, lowerblue, upperblue)
maskblue_inv = cv2.bitwise_not(maskblue)
show(maskblue,'maskblue')
show(maskblue_inv,'maskblue_inv')
# 腐蚀操作
kernel_erode = np.ones((3,3),dtype = np.uint8)
erode = cv2.erode(maskblue,kernel_erode)

# 膨胀操作
kernel_dilate = np.ones((5,5),np.uint8)
dilate = cv2.dilate(erode, kernel = kernel_dilate)

show(erode,'erode')

# 前景色只留下蓝色字体部分
fg = cv2.bitwise_and(img,img,mask = maskblue)
show(fg,'fg')
# 背景中除去蓝色字体部分
bg = cv2.bitwise_and(bgd,bgd,mask = maskblue_inv)
show(bg,'bg')
# 前景色和背景色相加
dst = cv2.add(bg,fg)
show(dst,'dst')

来源:https://blog.csdn.net/ouening/article/details/80317327

标签:opencv,颜色空间,图片背景
0
投稿

猜你喜欢

  • 学习CSS布局心得

    2007-05-11 16:50:00
  • php引用地址改变变量值的问题

    2023-11-14 12:41:31
  • Python读取指定日期邮件的实例

    2023-05-28 17:20:01
  • MAC下Mysql5.7.10版本修改root密码的方法

    2024-01-27 00:05:58
  • 修改 Navicat 默认备份路径

    2009-08-23 21:10:00
  • 用实例详解Python中的Django框架中prefetch_related()函数对数据库查询的优化

    2024-01-19 08:47:12
  • python中remove函数的踩坑记录

    2022-10-25 18:32:50
  • asp实现新评论自动发短信提示的代码

    2011-03-07 10:38:00
  • python2.7 安装pip的方法步骤(管用)

    2022-02-11 06:28:43
  • 使用AngularJS制作一个简单的RSS阅读器的教程

    2024-05-03 15:31:35
  • 运行tensorflow python程序,限制对GPU和CPU的占用操作

    2022-07-03 02:49:26
  • python方差检验的含义及用法

    2022-08-09 15:53:56
  • asp如何设置cookie的过期时间

    2008-02-29 13:36:00
  • vue.js选中动态绑定的radio的指定项

    2024-04-27 16:13:25
  • 如何远程连接SQL Server数据库

    2009-06-08 12:41:00
  • Vue父子组件传值的一些坑

    2024-04-28 09:30:57
  • Sql Server2012 使用IP地址登录服务器的配置图文教程

    2024-01-26 18:27:25
  • Golang底层原理解析String使用实例

    2024-02-19 17:16:26
  • 使用opencv中匹配点对的坐标提取方式

    2022-12-02 00:32:54
  • 让IE8支持eWebEditor在线编辑器

    2010-02-28 10:36:00
  • asp之家 网络编程 m.aspxhome.com