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中使用urllib2防止302跳转的代码例子
Jul 07 Python
Python入门篇之列表和元组
Oct 17 Python
Python爬虫通过替换http request header来欺骗浏览器实现登录功能
Jan 07 Python
学生信息管理系统python版
Oct 17 Python
Python使用post及get方式提交数据的实例
Jan 24 Python
使用Python画股票的K线图的方法步骤
Jun 28 Python
Django中如何使用sass的方法步骤
Jul 09 Python
Django中使用极验Geetest滑动验证码过程解析
Jul 31 Python
Python检查 云备份进程是否正常运行代码实例
Aug 22 Python
Python简单实现区域生长方式
Jan 16 Python
Jupyter安装链接aconda实现过程图解
Nov 02 Python
python中PyQuery库用法分享
Jan 15 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
linux下为php添加iconv模块的方法
2016/02/28 PHP
php文件缓存方法总结
2016/03/16 PHP
CentOS7.0下安装PHP5.6.30服务的教程详解
2018/09/29 PHP
让firefox支持IE的一些方法的javascript扩展函数代码
2010/01/02 Javascript
使用jquery插件实现图片延迟加载技术详细说明
2011/03/12 Javascript
用JQuery实现全选与取消的两种简单方法
2014/02/22 Javascript
jQuery选择器简明总结(含用法实例,一目了然)
2014/04/25 Javascript
Javascript遍历Html Table示例(包括内容和属性值)
2014/07/08 Javascript
js动态生成Html元素实现Post操作(createElement)
2015/09/14 Javascript
jQuery animate和CSS3相结合实现缓动追逐效果附源码下载
2016/04/18 Javascript
关于Jquery中的事件绑定总结
2016/10/26 Javascript
浅谈Koa2框架利用CORS完成跨域ajax请求
2018/03/06 Javascript
Vue 实现输入框新增搜索历史记录功能
2019/10/15 Javascript
JavaScript面向对象核心知识与概念归纳整理
2020/05/09 Javascript
基于jQuery拖拽事件的封装
2020/11/29 jQuery
python爬虫 使用真实浏览器打开网页的两种方法总结
2018/04/21 Python
详解用Python实现自动化监控远程服务器
2019/05/18 Python
python字典嵌套字典的情况下找到某个key的value详解
2019/07/10 Python
关于Python3 类方法、静态方法新解
2019/08/30 Python
Django通用类视图实现忘记密码重置密码功能示例
2019/12/17 Python
python实现从ftp服务器下载文件
2020/03/03 Python
html5如何在Canvas中实现自定义路径动画示例
2017/09/18 HTML / CSS
Melijoe时尚童装德国官网:Melijoe德国
2016/09/03 全球购物
电子专业推荐信范文
2013/11/18 职场文书
大学生村官工作感言
2014/01/10 职场文书
创意广告词
2014/03/17 职场文书
软件专业毕业生个人自我鉴定
2014/04/17 职场文书
小学教师师德整改措施
2014/09/29 职场文书
市贸粮局召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
2015年植树节活动总结
2015/02/06 职场文书
2015年发展党员工作总结报告
2015/03/31 职场文书
工作转正自我鉴定范文
2019/06/21 职场文书
浅谈Nginx 中的两种限流方式
2021/03/31 Servers
Python使用random模块实现掷骰子游戏的示例代码
2021/04/29 Python
python cv2图像质量压缩的算法示例
2021/06/04 Python
Redis基本数据类型List常用操作命令
2022/06/01 Redis