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使用scrapy采集数据过程中放回下载过大页面的方法
Apr 08 Python
给Python中的MySQLdb模块添加超时功能的教程
May 05 Python
python获取指定路径下所有指定后缀文件的方法
May 26 Python
详解Python Socket网络编程
Jan 05 Python
Python使用PIL库实现验证码图片的方法
Mar 11 Python
python django使用haystack:全文检索的框架(实例讲解)
Sep 27 Python
python实现BP神经网络回归预测模型
Aug 09 Python
基于python实现数组格式参数加密计算
Apr 21 Python
Python常用数字处理基本操作汇总
Sep 10 Python
UI自动化定位常用实现方法代码示例
Oct 27 Python
Python实现随机爬山算法
Jan 29 Python
聊聊Python String型列表求最值的问题
Jan 18 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
snoopy PHP版的网络客户端提供本地下载
2008/04/15 PHP
AMFPHP php远程调用(RPC, Remote Procedure Call)工具 快速入门教程
2010/05/10 PHP
php中定义网站根目录的常用方法
2010/08/08 PHP
php学习笔记 [预定义数组(超全局数组)]
2011/06/09 PHP
解析php扩展php_curl.dll不加载的解决方法
2013/06/26 PHP
PHP实现抓取Google IP并自动修改hosts文件
2015/02/12 PHP
Laravel 5框架学习之模型、控制器、视图基础流程
2015/04/08 PHP
Symfony2安装的方法(2种方法)
2016/02/04 PHP
Zend Framework教程之Zend_Db_Table_Row用法实例分析
2016/03/21 PHP
thinkphp Apache配置重启Apache1 restart 出错解决办法
2017/02/15 PHP
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
php利用ob_start()清除输出和选择性输出的方法
2018/01/18 PHP
使用正则替换变量
2007/05/05 Javascript
jQuery代码优化 选择符篇
2011/11/01 Javascript
js 获取时间间隔实现代码
2014/05/12 Javascript
jquery+CSS实现的多级竖向展开树形TRee菜单效果
2015/08/24 Javascript
jQuery插件jquery-barcode实现条码打印的方法
2015/11/25 Javascript
关于List.ToArray()方法的效率测试
2016/09/30 Javascript
JS+HTML5 FileReader实现文件上传前本地预览功能
2020/03/27 Javascript
AngularJS日程表案例详解
2017/08/15 Javascript
Vue三种常用传值示例(父传子、子传父、非父子)
2018/07/24 Javascript
vue响应式更新机制及不使用框架实现简单的数据双向绑定问题
2019/06/27 Javascript
JavaScript字符串处理常见操作方法小结
2019/11/15 Javascript
[54:54]Newbee vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python yield 小结和实例
2014/04/25 Python
python提取log文件内容并画出图表
2019/07/08 Python
python操作excel让工作自动化
2019/08/09 Python
Python如何测试stdout输出
2020/08/10 Python
结合CSS3的新特性来总结垂直居中的实现方法
2016/05/30 HTML / CSS
BLACKMORES澳洲官网:澳大利亚排名第一的保健品牌
2018/09/27 全球购物
学校司机岗位职责
2013/11/14 职场文书
青奥会口号
2014/06/12 职场文书
乡镇安全生产月活动总结
2015/05/08 职场文书
新年寄语2016
2015/08/17 职场文书
给原生html中添加水印遮罩层的实现示例
2021/04/02 Javascript