昨天写美女换装案例的时候,忽然间想到,相同的代码可以复用照片底色中,所以本文继续夯实一下对应的效果吧。

本案例使用的素材来源网络,如有侵权,联系橡皮擦删除

二值化参数调整

使用上篇博客,实现的一个小功能,进行 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 天相关推荐

  1. 2020-11-06 Python OpenCV给证件照换底色

    投简历.找工作这些事都需要证件照,有些还要求证件照背景颜色.尺寸大小,本文分享一下如果通过Python OpenCV来实现照片裁剪和更换背景色 1.读取照片 import cv2import nump ...

  2. 更换一寸照片底色蓝色底,红色底白底一寸照怎么做ps教程简单快速快捷方法办法ps学习ps教学ps教程

    更换一寸照片底色蓝色底,红色底白底一寸照怎么做ps教程简单快速快捷方法办法ps学习ps教学ps教程

  3. 招商银行信用卡卡号识别项目(第一篇),Python OpenCV 图像处理取经之旅第 53 篇

    Python OpenCV 365 天学习计划,与橡皮擦一起进入图像领域吧.本篇博客是这个系列的第 53 篇. 该系列文章导航参考:https://blog.csdn.net/hihell/categ ...

  4. Python OpenCV 之图像乘除与像素的逻辑运算,图像处理取经之旅第 17 天

    今天的学习的内容是:通过 Python OpenCV 对图像实现乘除操作,涉及函数为 cv2.multiply 与 cv2.divide.后面又补充了一些像素的逻辑运算,以及一个综合案例 cv2.mu ...

  5. pilt图像处理_详解python opencv、scikit-image和PIL图像处理库比较

    进行深度学习时,对图像进行预处理的过程是非常重要的,使用pytorch或者TensorFlow时需要对图像进行预处理以及展示来观看处理效果,因此对python中的图像处理框架进行图像的读取和基本变换的 ...

  6. python 更换图像背景_Python几行代码更换照片底色 图像处理 openCV

    测试环境及依赖python3.6 numpy 1.19.0 opencv-python 4.3.0.36 1.读取图片并进行展示imread() 读取相应图片 imshow() 对图片进行展示 wai ...

  7. python+opencv 给女朋友照片加上个性相框,学会等着她夸你。

    讲解下如何给女朋友照片加上个性相框,学会让她夸你. . 素材1 相框 你的女朋友图 代码 import cv2 import numpy as np def get_four_points(im):d ...

  8. python opencv修改保存的图片质量

    1.使用opencv保存图像 cv2.imwrite(存储路径,图像变量[,存盘标识]) 存盘标识: cv2.CV_IMWRITE_JPEG_QUALITY  设置图片格式为.jpeg或者.jpg的图 ...

  9. python opencv给证件照换底色

    昨天朋友忙要把白色背景的证件照换为红色的,比较急用,本人也不太会用PS,网上的那些转换小工具都是要收费的,就想着自己搞一搞,原理很简单,白色背景的像素值为[255,255,255],用这个信息生成ma ...

最新文章

  1. 利用cvMinAreaRect2求取轮廓最小外接矩形
  2. $.ajax和$.load的区别
  3. python转换函数使用_python进制转换函数代码的使用
  4. input type:text输入框点击输入,文字消失
  5. shell基础(上)
  6. 图形学理论 光照模型
  7. C++语言string类介绍和示例
  8. Zabbix 服务器性能指标参考(学习笔记十七)
  9. KeyMob手机聚合平台已集成多家移动广告平台
  10. 华为机试HJ76:尼科彻斯定理
  11. WCF编程系列(七)信道及信道工厂
  12. 有关于FireBug和FirePath安装和使用-学习笔记
  13. redis内存碎片问题
  14. 用计算机发传真,用电脑怎么发传真
  15. 解决前端 js 中使用 append 动态追加元素标签后,事件和css样式异常问题
  16. 五年级上册计算机教案闽教版,小学信息技术闽教版五年级上册第7课 认识因特网教案设计...
  17. dubbo注册服务IP解析异常及IP解析源码分析
  18. 微信小程序主页及报名页面的简单实现
  19. 【知乎高赞】软件测试工程师应该怎样规划自己?成为年薪30W+测试工程师(乾坤未定,皆是黑马)
  20. HLS第三十八课(xfopencv,H文件和HPP文件的使用)

热门文章

  1. session是什么
  2. pdf太大怎么压缩大小?
  3. JAVA Oracle插入大量数据优化
  4. 基于SSM的大学生创业众筹平台网站毕业设计源码212000
  5. 2018春招总结(Java后端),干货满满
  6. CodeForces - 985A Chess Placing(水)
  7. 10款免费原型设计工具,产品设计得力助手
  8. 六、UniApp 调试自定义原生插件的两种方式
  9. SUPER-VLAN
  10. [原创]自定义公历农历日期选择器