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


Posted in Python onAugust 20, 2019

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

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

Python 相关文章推荐
Python实现的生成自我描述脚本分享(很有意思的程序)
Jul 18 Python
Python获取网页上图片下载地址的方法
Mar 11 Python
python写入中英文字符串到文件的方法
May 06 Python
python spyder中读取txt为图片的方法
Apr 27 Python
python学习笔记--将python源文件打包成exe文件(pyinstaller)
May 26 Python
OpenCV搞定腾讯滑块验证码的实现代码
May 18 Python
Python获取数据库数据并保存在excel表格中的方法
Jun 12 Python
pyQt5实时刷新界面的示例
Jun 25 Python
python mysql断开重连的实现方法
Jul 26 Python
Python使用random模块生成随机数操作实例详解
Sep 17 Python
关于pytorch处理类别不平衡的问题
Dec 31 Python
Python 从attribute到property详解
Mar 05 Python
pytorch 预训练层的使用方法
Aug 20 #Python
python爬虫 urllib模块反爬虫机制UA详解
Aug 20 #Python
Pytorch 抽取vgg各层并进行定制化处理的方法
Aug 20 #Python
python实现抠图给证件照换背景源码
Aug 20 #Python
python爬虫 基于requests模块发起ajax的get请求实现解析
Aug 20 #Python
pytorch 在sequential中使用view来reshape的例子
Aug 20 #Python
pytorch在fintune时将sequential中的层输出方法,以vgg为例
Aug 20 #Python
You might like
仿AS3实现PHP 事件机制实现代码
2011/01/27 PHP
TP5(thinkPHP5)框架使用ajax实现与后台数据交互的方法小结
2020/02/10 PHP
基于Jquery的将DropDownlist的选中值赋给label的实现代码
2011/05/06 Javascript
JS中表单的使用小结
2014/01/11 Javascript
AngularJS入门教程(一):静态模板
2014/12/06 Javascript
javascript实现滑动解锁功能
2014/12/31 Javascript
jQuery实现Select下拉列表进行状态选择功能
2017/03/30 jQuery
jquery平滑滚动到顶部插件使用详解
2017/05/08 jQuery
详解如何在Angular中快速定位DOM元素
2017/05/17 Javascript
老生常谈javascript的面向对象思想
2017/08/22 Javascript
AngularJS 将再发布一个重要版本 然后进入长期支持阶段
2018/01/31 Javascript
详解创建自定义的Angular Schematics
2018/06/06 Javascript
angularJs中$http获取后台数据的实例讲解
2018/08/08 Javascript
了解JavaScript表单操作和表单域
2019/05/27 Javascript
JS一次前端面试经历记录
2020/03/19 Javascript
antd-mobile ListView长列表的数据更新遇到的坑
2020/04/08 Javascript
在Python中使用HTMLParser解析HTML的教程
2015/04/29 Python
Python正则抓取新闻标题和链接的方法示例
2017/04/24 Python
CentOS 7下安装Python 3.5并与Python2.7兼容并存详解
2017/07/07 Python
Python整型运算之布尔型、标准整型、长整型操作示例
2017/07/21 Python
pandas把dataframe转成Series,改变列中值的类型方法
2018/04/10 Python
解决pandas 作图无法显示中文的问题
2018/05/24 Python
python爬虫学习笔记之pyquery模块基本用法详解
2020/04/09 Python
MATLAB数学建模之画图汇总
2020/07/16 Python
详解如何在css3打包后自动追加前缀插件:autoprefixer
2018/12/18 HTML / CSS
全球航班旅行搜索网站:Cheapflights
2017/05/19 全球购物
20世纪40年代连衣裙和复古服装:The Seamstress Of Bloomsbury
2018/07/24 全球购物
澳大利亚网上买书:Angus & Robertson
2019/07/21 全球购物
高一数学教学反思
2014/02/07 职场文书
中介业务员岗位职责
2014/04/09 职场文书
医学专业毕业生推荐信
2014/07/12 职场文书
建设办主任四风问题整改思路和措施
2014/09/20 职场文书
商务宴请邀请函范文
2015/02/02 职场文书
2015年村计划生育工作总结
2015/04/28 职场文书
中国古代史学名著《战国策》概述
2019/08/09 职场文书
MySQL命令无法输入中文问题的解决方式
2021/08/30 MySQL