Python OpenCV 修改一寸照片底色,图像处理取经之旅第 20 天
昨天写美女换装案例的时候,忽然间想到,相同的代码可以复用照片底色中,所以本文继续夯实一下对应的效果吧。
本案例使用的素材来源网络,如有侵权,联系橡皮擦删除
二值化参数调整
使用上篇博客,实现的一个小功能,进行 inRange()函数的参数值选择。
代码如下,先替换红色背景为绿色:
import cv2
import numpy as np
# 该图片即为上图待换色的图片
img = cv2.imread('photo.jpg')def nothing(x):passwinName = 'getTrackbarPos'
# 新建窗口
cv2.namedWindow(winName, cv2.WINDOW_NORMAL)cv2.createTrackbar('LowerbH', winName, 10, 255, nothing)
cv2.createTrackbar('LowerbS', winName, 43, 255, nothing)
cv2.createTrackbar('LowerbV', winName, 46, 255, nothing)cv2.createTrackbar('UpperbH', winName, 180, 255, nothing)
cv2.createTrackbar('UpperbS', winName, 255, 255, nothing)
cv2.createTrackbar('UpperbV', winName, 255, 255, nothing)
# 转换hsv
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
while(1):# 函数cv2.getTrackbarPos()范围当前滑块对应的值lowerbH = cv2.getTrackbarPos('LowerbH', winName)LowerbS = cv2.getTrackbarPos('LowerbS', winName)LowerbV = cv2.getTrackbarPos('LowerbV', winName)upperbH = cv2.getTrackbarPos('UpperbH', winName)upperbS = cv2.getTrackbarPos('UpperbS', winName)upperbV = cv2.getTrackbarPos('UpperbV', winName)lower_red = np.array([lowerbH, LowerbS, LowerbV])upper_red = np.array([upperbH, upperbS, upperbV])mask = cv2.inRange(hsv, lower_red, upper_red)cv2.imshow(winName, mask)if cv2.waitKey(1) == ord('q'):breakcv2.destroyAllWindows()
运行效果
经过不懈的努力,最终得到的相关参数如下:
运行颜色替换代码效果如下:
import cv2 as cv
import numpy as np
def change_clothes(src):# 图像二值化hsv = cv.cvtColor(src, cv.COLOR_BGR2HSV)hsv1 = cv.cvtColor(hsv, cv.COLOR_HSV2BGR)# cv.imshow("hsv1",hsv1)# 使用 inRange()函数实现二值化lowerb = np.array([0, 250, 219])upperb = np.array([10, 255, 255])dst = cv.inRange(hsv, lowerb, upperb)# 颜色直接替换rows, cols, channels = src.shapefor i in range(rows):for j in range(cols):if dst[i, j] == 255:# 此处替换颜色,为 BGR 通道src[i, j] = (0, 255, 0)cv.imshow('src', src)if __name__ == "__main__":src = cv.imread("./photo.jpg")change_clothes(src)cv.waitKey()cv.destroyAllWindows()
有红色边缘,后续学习到新的内容在进行更正吧,主要是颜色区域的问题。
替换蓝色的时候,问题就比较小。
蓝色相关参数。
核心代码为:
# 使用 inRange()函数实现二值化lowerb = np.array([100, 48, 108])upperb = np.array([130, 255, 255])
运行之后效果满意~
OpenCV 尾声
1 个小时又过去了,对 Python OpenCV 相关的知识点,你掌握了吗?
空闲之余,可以订阅橡皮擦的爬虫百例课程学习爬虫知识。
想学 Python 爬虫,可以订阅橡皮擦专栏哦~
Python OpenCV 修改一寸照片底色,图像处理取经之旅第 20 天相关推荐
- 2020-11-06 Python OpenCV给证件照换底色
投简历.找工作这些事都需要证件照,有些还要求证件照背景颜色.尺寸大小,本文分享一下如果通过Python OpenCV来实现照片裁剪和更换背景色 1.读取照片 import cv2import nump ...
- 更换一寸照片底色蓝色底,红色底白底一寸照怎么做ps教程简单快速快捷方法办法ps学习ps教学ps教程
更换一寸照片底色蓝色底,红色底白底一寸照怎么做ps教程简单快速快捷方法办法ps学习ps教学ps教程
- 招商银行信用卡卡号识别项目(第一篇),Python OpenCV 图像处理取经之旅第 53 篇
Python OpenCV 365 天学习计划,与橡皮擦一起进入图像领域吧.本篇博客是这个系列的第 53 篇. 该系列文章导航参考:https://blog.csdn.net/hihell/categ ...
- Python OpenCV 之图像乘除与像素的逻辑运算,图像处理取经之旅第 17 天
今天的学习的内容是:通过 Python OpenCV 对图像实现乘除操作,涉及函数为 cv2.multiply 与 cv2.divide.后面又补充了一些像素的逻辑运算,以及一个综合案例 cv2.mu ...
- pilt图像处理_详解python opencv、scikit-image和PIL图像处理库比较
进行深度学习时,对图像进行预处理的过程是非常重要的,使用pytorch或者TensorFlow时需要对图像进行预处理以及展示来观看处理效果,因此对python中的图像处理框架进行图像的读取和基本变换的 ...
- python 更换图像背景_Python几行代码更换照片底色 图像处理 openCV
测试环境及依赖python3.6 numpy 1.19.0 opencv-python 4.3.0.36 1.读取图片并进行展示imread() 读取相应图片 imshow() 对图片进行展示 wai ...
- python+opencv 给女朋友照片加上个性相框,学会等着她夸你。
讲解下如何给女朋友照片加上个性相框,学会让她夸你. . 素材1 相框 你的女朋友图 代码 import cv2 import numpy as np def get_four_points(im):d ...
- python opencv修改保存的图片质量
1.使用opencv保存图像 cv2.imwrite(存储路径,图像变量[,存盘标识]) 存盘标识: cv2.CV_IMWRITE_JPEG_QUALITY 设置图片格式为.jpeg或者.jpg的图 ...
- python opencv给证件照换底色
昨天朋友忙要把白色背景的证件照换为红色的,比较急用,本人也不太会用PS,网上的那些转换小工具都是要收费的,就想着自己搞一搞,原理很简单,白色背景的像素值为[255,255,255],用这个信息生成ma ...
最新文章
- 利用cvMinAreaRect2求取轮廓最小外接矩形
- $.ajax和$.load的区别
- python转换函数使用_python进制转换函数代码的使用
- input type:text输入框点击输入,文字消失
- shell基础(上)
- 图形学理论 光照模型
- C++语言string类介绍和示例
- Zabbix 服务器性能指标参考(学习笔记十七)
- KeyMob手机聚合平台已集成多家移动广告平台
- 华为机试HJ76:尼科彻斯定理
- WCF编程系列(七)信道及信道工厂
- 有关于FireBug和FirePath安装和使用-学习笔记
- redis内存碎片问题
- 用计算机发传真,用电脑怎么发传真
- 解决前端 js 中使用 append 动态追加元素标签后,事件和css样式异常问题
- 五年级上册计算机教案闽教版,小学信息技术闽教版五年级上册第7课 认识因特网教案设计...
- dubbo注册服务IP解析异常及IP解析源码分析
- 微信小程序主页及报名页面的简单实现
- 【知乎高赞】软件测试工程师应该怎样规划自己?成为年薪30W+测试工程师(乾坤未定,皆是黑马)
- HLS第三十八课(xfopencv,H文件和HPP文件的使用)