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中格式化format()方法详解
Apr 01 Python
简单的python后台管理程序
Apr 13 Python
基于ID3决策树算法的实现(Python版)
May 31 Python
Python下载网络小说实例代码
Feb 03 Python
python+opencv实现高斯平滑滤波
Jul 21 Python
使用CodeMirror实现Python3在线编辑器的示例代码
Jan 14 Python
解决python Markdown模块乱码的问题
Feb 14 Python
python游戏开发之视频转彩色字符动画
Apr 26 Python
PyCharm安装Markdown插件的两种方法
Jun 24 Python
对Python3中列表乘以某一个数的示例详解
Jul 20 Python
TensorFlow车牌识别完整版代码(含车牌数据集)
Aug 05 Python
Python实现JS解密并爬取某音漫客网站
Oct 23 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
图象函数中的中文显示
2006/10/09 PHP
使用HMAC-SHA1签名方法详解
2013/06/26 PHP
php遍历目录输出目录及其下的所有文件示例
2014/01/27 PHP
preg_match_all使用心得分享
2014/01/31 PHP
php去除字符串中空字符的常用方法小结
2015/03/17 PHP
如何修改yii2.0自带的user表为其它的表
2017/08/01 PHP
表单内同名元素的控制
2006/11/22 Javascript
FF IE兼容性的修改小结
2009/09/02 Javascript
js 强制弹出窗口代码研究-又一款代码
2010/03/20 Javascript
javascript将数组插入到另一个数组中的代码
2013/01/10 Javascript
IE6下opacity与JQuery的奇妙结合
2013/03/01 Javascript
JS模板实现方法
2013/04/03 Javascript
js获取IFRAME当前的URL的方法
2013/11/13 Javascript
分享两个手机访问pc网站自动跳转手机端网站代码
2020/12/24 Javascript
微信公众平台开发教程(五)详解自定义菜单
2016/12/02 Javascript
angularjs ocLazyLoad分步加载js文件实例
2017/01/17 Javascript
微信小程序实现发红包功能
2018/07/11 Javascript
js最实用string(字符串)类型的使用及截取与拼接详解
2019/04/26 Javascript
解决vux 中popup 组件Mask 遮罩在最上层的问题
2020/11/03 Javascript
[31:55]完美世界DOTA2联赛循环赛 IO vs GXR BO2第一场 11.04
2020/11/05 DOTA
python递归删除指定目录及其所有内容的方法
2017/01/13 Python
简单易懂的python环境安装教程
2017/07/13 Python
Python使用回溯法子集树模板获取最长公共子序列(LCS)的方法
2017/09/08 Python
解决Spyder中图片显示太小的问题
2018/04/27 Python
python实现最大优先队列
2019/08/29 Python
Python装饰器的应用场景代码总结
2020/04/10 Python
Django模板报TemplateDoesNotExist异常(亲测可行)
2020/12/18 Python
检测浏览器对HTML5和CSS3支持度的方法
2015/06/25 HTML / CSS
桥梁与隧道工程专业本科生求职信
2013/10/08 职场文书
单位在职证明范本
2014/01/09 职场文书
《骆驼和羊》教学反思
2014/02/27 职场文书
诉讼代理人授权委托书
2014/04/08 职场文书
怎么写工作检讨书
2014/11/16 职场文书
2015年销售内勤工作总结
2015/04/27 职场文书
《自己去吧》教学反思
2016/02/16 职场文书
排查MySQL生产环境索引没有效果
2022/04/11 MySQL