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

 更新时间:2019年08月20日 09:41:41   作者:落叶_小唱  
这篇文章主要为大家详细介绍了opencv转换颜色空间更改图片背景,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了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')

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Pandas多列值合并成一列的实现

    Pandas多列值合并成一列的实现

    本文主要介绍了Pandas多列值合并成一列的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • 解决python 3 urllib 没有 urlencode 属性的问题

    解决python 3 urllib 没有 urlencode 属性的问题

    今天小编就为大家分享一篇解决python 3 urllib 没有 urlencode 属性的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Pycharm直接使用远程服务器代码并调试的解决方法

    Pycharm直接使用远程服务器代码并调试的解决方法

    这篇文章主要介绍了Pycharm直接使用远程服务器代码并调试的解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-02-02
  • python3+PyQt5实现柱状图

    python3+PyQt5实现柱状图

    这篇文章主要为大家详细介绍了python3+PyQt5实现柱状图的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • python使用os.listdir和os.walk获得文件的路径的方法

    python使用os.listdir和os.walk获得文件的路径的方法

    本篇文章主要介绍了python使用os.listdir和os.walk获得文件的路径的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • 利用Python实现问卷星自动填写的超详细教程

    利用Python实现问卷星自动填写的超详细教程

    问卷星已经成为收集问卷的一个很重要的工具,有时可以用来报名参加活动,有时可以用来收集某些领域相关的情况,下面这篇文章主要给大家介绍了关于利用Python实现问卷星自动填写的超详细教程,需要的朋友可以参考下
    2023-06-06
  • 利用Python如何批量修改数据库执行Sql文件

    利用Python如何批量修改数据库执行Sql文件

    这篇文章主要给大家介绍了关于利用Python如何批量修改数据库执行Sql文件的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-07-07
  • Python3实现爬取简书首页文章标题和文章链接的方法【测试可用】

    Python3实现爬取简书首页文章标题和文章链接的方法【测试可用】

    这篇文章主要介绍了Python3实现爬取简书首页文章标题和文章链接的方法,结合实例形式分析了Python3基于urllib及bs4库针对简书网进行文章抓取相关操作技巧,需要的朋友可以参考下
    2018-12-12
  • Python frozenset集合的实现

    Python frozenset集合的实现

    frozenset是Python中的不可变集合类型,本文主要介绍了Python frozenset集合的实现, 文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-04-04
  • Python操作word文档的示例详解

    Python操作word文档的示例详解

    本文为大家介绍了Python操作docx文档相关知识点。主要涉及的内容为python-docx ,一款可以操作Word文档(仅支持docx)的第三方库。快跟随小编一起学习一下吧
    2022-01-01

最新评论