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 BeautifulSoup库抓取58手机维修信息
Nov 21 Python
Windows上使用virtualenv搭建Python+Flask开发环境
Jun 07 Python
《Python学习手册》学习总结
Jan 17 Python
Python基于分析Ajax请求实现抓取今日头条街拍图集功能示例
Jul 19 Python
解决Python3.5+OpenCV3.2读取图像的问题
Dec 05 Python
对python中dict和json的区别详解
Dec 18 Python
彻底理解Python中的yield关键字
Apr 01 Python
详解Python odoo中嵌入html简单的分页功能
May 29 Python
使用Pandas将inf, nan转化成特定的值
Dec 19 Python
Django模型中字段属性choice使用说明
Mar 30 Python
Python局部变量与全局变量区别原理解析
Jul 14 Python
Python实现为PDF去除水印的示例代码
Apr 03 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
可以在线执行PHP代码包装修正版
2008/03/15 PHP
PHP获取input输入框中的值去数据库比较显示出来
2016/11/16 PHP
php 根据自增id创建唯一编号类
2017/04/06 PHP
php-fpm.conf配置文件中文说明详解及重要参数说明
2018/10/10 PHP
jQuery的deferred对象使用详解
2011/08/20 Javascript
JS声明变量背后的编译原理剖析
2012/12/28 Javascript
浅谈Javascript 数组与字典
2015/01/29 Javascript
基于JavaScript实现div层跟随滚动条滑动
2016/01/12 Javascript
Bootstrap教程JS插件弹出框学习笔记分享
2016/05/17 Javascript
jQuery使用中可能被XSS攻击的一些危险环节提醒
2016/05/24 Javascript
jquery基本选择器匹配多个元素的实现方法
2016/09/05 Javascript
jQuery中fadein与fadeout方法用法示例
2016/09/16 Javascript
Ajax+FormData+javascript实现无刷新表单信息提交
2016/10/24 Javascript
微信小程序 WXDropDownMenu组件详解及实例代码
2016/10/24 Javascript
Json按某个键的值进行排序
2016/12/22 Javascript
JS异步加载的三种实现方式
2017/03/16 Javascript
jQuery实现鼠标经过显示动画边框特效
2017/03/24 jQuery
jQuery实现拖动效果的实例代码
2017/06/25 jQuery
收集前端面试题之url、href、src
2018/03/22 Javascript
Element-ui tree组件自定义节点使用方法代码详解
2018/09/17 Javascript
Vue常用的几个指令附完整案例
2018/11/06 Javascript
深入解析ES6中的promise
2018/11/08 Javascript
django在接受post请求时显示403forbidden实例解析
2018/01/25 Python
Python cookbook(数据结构与算法)将名称映射到序列元素中的方法
2018/03/22 Python
python scipy求解非线性方程的方法(fsolve/root)
2018/11/12 Python
使用Python开发SQLite代理服务器的方法
2018/12/07 Python
VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法详解
2019/07/01 Python
Python基于WordCloud制作词云图
2019/11/29 Python
pycharm2020.1.2永久破解激活教程,实测有效
2020/10/29 Python
英国Office鞋店德国网站:在线购买鞋子、靴子和运动鞋
2018/12/19 全球购物
社区活动总结报告
2014/05/05 职场文书
2015年第十五个全民国防教育日宣传活动方案
2015/05/06 职场文书
golang日志包logger的用法详解
2021/05/05 Golang
Spring Cloud Gateway去掉url前缀
2021/07/15 Java/Android
python分分钟绘制精美地图海报
2022/02/15 Python
create-react-app开发常用配置教程
2022/06/25 Javascript