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 version 2.7 required, which was not found in the registry
Aug 26 Python
Python脚本实现格式化css文件
Apr 08 Python
Python编程中对super函数的正确理解和用法解析
Jul 02 Python
Python表示矩阵的方法分析
May 26 Python
解决python 无法加载downsample模型的问题
Oct 25 Python
python实现图片彩色转化为素描
Jan 15 Python
在Pycharm中对代码进行注释和缩进的方法详解
Jan 20 Python
python调用虹软2.0第三版的具体使用
Feb 22 Python
Pycharm+Python+PyQt5使用详解
Sep 25 Python
详解python中docx库的安装过程
Nov 08 Python
解决Opencv+Python cv2.imshow闪退问题
Apr 24 Python
python实现俄罗斯方块小游戏
Apr 24 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对XML的操作详解
2013/06/07 PHP
PHP加密扩展库Mcrypt安装和实例
2013/11/10 PHP
PIGCMS 如何关闭聊天机器人
2015/02/12 PHP
Zend Framework教程之Application用法实例详解
2016/03/14 PHP
php 从指定数字中获取随机组合的简单方法(推荐)
2017/04/05 PHP
PHP删除字符串中非字母数字字符方法总结
2019/01/20 PHP
理解JavaScript变量作用域更轻松
2009/10/25 Javascript
JQuery 引发两次$(document.ready)事件
2010/01/15 Javascript
基于jquery的获取浏览器窗口大小的代码
2011/03/28 Javascript
浅析jquery的作用与优势
2013/12/02 Javascript
javascript版的in_array函数(判断数组中是否存在特定值)
2014/05/09 Javascript
jQuery实现类似老虎机滚动抽奖效果
2015/08/06 Javascript
AngularJS使用ng-class动态增减class样式的方法示例
2017/05/18 Javascript
MUI 实现侧滑菜单及其主体部分上下滑动的方法
2018/01/25 Javascript
js+SVG实现动态时钟效果
2018/07/14 Javascript
layui获取多选框中的值方法
2018/08/15 Javascript
JavaScript惰性载入函数实例分析
2019/03/27 Javascript
Vue.js组件props数据验证实现详解
2019/10/19 Javascript
原生js+canvas实现验证码
2020/11/29 Javascript
在Django框架中设置语言偏好的教程
2015/07/27 Python
python使用wmi模块获取windows下的系统信息 监控系统
2015/10/27 Python
简单了解Python中的几种函数
2017/11/03 Python
Python排序搜索基本算法之希尔排序实例分析
2017/12/09 Python
python微信跳一跳游戏辅助代码解析
2018/01/29 Python
详解Python3.6的py文件打包生成exe
2018/07/13 Python
Python远程视频监控程序的实例代码
2019/05/05 Python
解决使用Pandas 读取超过65536行的Excel文件问题
2020/11/10 Python
open_basedir restriction in effect. 原因与解决方法
2021/03/14 PHP
使用css3匹配手机屏幕横竖状态
2014/01/27 HTML / CSS
大学生写自荐信的技巧
2014/01/08 职场文书
讲解员培训方案
2014/05/04 职场文书
文明班集体申报材料
2014/05/23 职场文书
党性心得体会
2014/09/03 职场文书
普宁寺导游词
2015/02/04 职场文书
退休教师追悼词
2015/06/23 职场文书
Pandas实现DataFrame的简单运算、统计与排序
2022/03/31 Python