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正则抓取新闻标题和链接的方法示例
Apr 24 Python
windows下python连接oracle数据库
Jun 07 Python
Python自动化开发学习之三级菜单制作
Jul 14 Python
python实现多线程行情抓取工具的方法
Feb 28 Python
Python paramiko模块使用解析(实现ssh)
Aug 30 Python
python中的itertools的使用详解
Jan 13 Python
Python进阶之迭代器与迭代器切片教程
Jan 29 Python
Python json模块与jsonpath模块区别详解
Mar 05 Python
利用python清除移动硬盘中的临时文件
Oct 28 Python
python中最小二乘法详细讲解
Feb 19 Python
Python 高级库15 个让新手爱不释手(推荐)
May 15 Python
Python编写车票订购系统 Python实现快递收费系统
Aug 14 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
咖啡磨器 如何选购一台适合家用的意式磨豆机
2021/03/05 新手入门
PHP爆绝对路径方法收集整理
2012/09/17 PHP
php模拟post上传图片实现代码
2016/06/24 PHP
php判断IP地址是否在多个IP段内
2020/08/18 PHP
2007/12/23更新创意无限,简单实用(javascript log)
2007/12/24 Javascript
JavaScript 事件参考手册
2008/12/24 Javascript
JQuery Ajax 跨域访问的解决方案
2010/03/12 Javascript
Wordpress ThickBox 添加“查看原图”效果代码
2010/12/11 Javascript
autoIMG 基于jquery的图片自适应插件代码
2011/03/12 Javascript
js判断背景图片是否加载成功使用img的width实现
2013/05/29 Javascript
Bootstrap风格的zTree右键菜单
2017/02/17 Javascript
什么时候不能在 Node.js 中使用 Lock Files
2019/06/24 Javascript
Vue路由对象属性 .meta $route.matched详解
2019/11/04 Javascript
vue商城中商品“筛选器”功能的实现代码
2020/07/01 Javascript
[10:04]国际邀请赛采访专栏:DK.Farseer,mouz.Black^,采访员Josh专访
2013/08/05 DOTA
python中迭代器(iterator)用法实例分析
2015/04/29 Python
Python 爬虫学习笔记之正则表达式
2016/09/21 Python
Python进程间通信之共享内存详解
2017/10/30 Python
高质量Python代码编写的5个优化技巧
2017/11/16 Python
Python Web框架之Django框架Form组件用法详解
2019/08/16 Python
使用Python进行中文繁简转换的实现代码
2019/10/18 Python
Django Model中字段(field)的各种选项说明
2020/05/19 Python
用C语言实现文件读写操作
2013/10/27 面试题
诺思信科技(南京)有限公司.NET笔试题答案
2013/07/06 面试题
马云的职业生涯规划之路
2014/01/01 职场文书
面试必备的求职信
2014/05/25 职场文书
企业标语口号
2014/06/10 职场文书
硕士生找工作求职信
2014/07/05 职场文书
师范生免费教育协议书范本
2014/10/09 职场文书
教师群众路线教育实践活动学习笔记
2014/11/05 职场文书
担保书格式
2015/01/20 职场文书
安装工程师岗位职责
2015/02/13 职场文书
如何在C++中调用Python
2021/05/21 Python
Golang标准库syscall详解(什么是系统调用)
2021/05/25 Golang
Node实现搜索框进行模糊查询
2021/06/28 Javascript
Win11绿屏怎么办?Win11绿屏死机的解决方法
2021/11/21 数码科技