详解Python给照片换底色(蓝底换红底)

作者:TANKING 时间:2023-02-03 02:07:45 

现在网上出现了很多在线换底色的网页版工具是这么做的呢?其实用Python就可以实现。

环境要求

Python3
numpy函数库
opencv库

安装

下载适应版本的numpy函数库,我电脑是WIN10 64位,安装的函数库是
numpy-1.13.1+mkl-cp36-cp36m-win_amd64.whl

下载适应版本的opencv库,我电脑是WIN10 64位,安装的库是
opencv_python-3.3.1-cp36-cp36m-win_amd64.whl

安装以上两个库,WIN+R->CMD->CD到当前两个库所在的文件夹,输入以下命令逐步安装


pip install numpy-1.13.1+mkl-cp36-cp36m-win_amd64.whl
pip install opencv_python-3.3.1-cp36-cp36m-win_amd64.whl

以上两个文件下载地址:

numpy下载:https://www.jb51.net/softs/574953.html

opencv下载 :https://www.jb51.net/softs/333884.html

详解Python给照片换底色(蓝底换红底)

代码

在当前文件夹新建opencv.py,拷贝以下代码


import cv2
import numpy as np

img=cv2.imread('timg.jpg')
#缩放
rows,cols,channels = img.shape
img=cv2.resize(img,None,fx=0.5,fy=0.5)
rows,cols,channels = img.shape
cv2.imshow('img',img)

#转换hsv
hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
lower_blue=np.array([90,70,70])
upper_blue=np.array([110,255,255])
mask = cv2.inRange(hsv, lower_blue, upper_blue)
cv2.imshow('Mask', mask)

#腐蚀膨胀
erode=cv2.erode(mask,None,iterations=1)
cv2.imshow('erode',erode)
dilate=cv2.dilate(erode,None,iterations=1)
cv2.imshow('dilate',dilate)

#遍历替换
for i in range(rows):
 for j in range(cols):
   if dilate[i,j]==255:
     img[i,j]=(0,0,255)#此处替换颜色,为BGR通道
cv2.imshow('res',img)

cv2.waitKey(0)
cv2.destroyAllWindows()

说明

第四行timg.jpg是原图片路径
lower_blue=np.array([90,70,70])里面三个数值可以控制好处理出来的效果和噪点

WIN+R->CMD->CD到opencv.py文件夹,运行

DEMO

详解Python给照片换底色(蓝底换红底)

动图演示

详解Python给照片换底色(蓝底换红底)

来源:https://segmentfault.com/a/1190000018599038

标签:Python,照片,换底色
0
投稿

猜你喜欢

  • Pycharm配置远程调试的方法步骤

    2021-03-13 00:45:38
  • python名片管理系统开发

    2022-06-25 13:43:47
  • php查询whois信息的方法

    2023-09-05 10:47:00
  • javascript对象概念大全

    2009-05-22 18:24:00
  • Python爬取科目四考试题库的方法实现

    2023-02-14 00:29:39
  • js 实现数值的千分位及保存小数方法(推荐)

    2023-08-17 01:13:11
  • Python 实现简单的shell sed替换功能(实例讲解)

    2023-03-03 09:48:52
  • Python3.7安装keras和TensorFlow的教程图解

    2022-09-05 13:23:00
  • php支持中文字符串分割的函数

    2023-11-18 21:42:04
  • 在JavaScript中,为什么要尽可能使用局部变量?

    2009-03-01 12:38:00
  • python+selenium实现QQ邮箱自动发送功能

    2021-11-11 22:03:58
  • Python lambda表达式filter、map、reduce函数用法解析

    2022-03-30 03:52:31
  • 如何利用python和DOS获取wifi密码

    2021-12-15 20:10:50
  • python UDP(udp)协议发送和接收的实例

    2022-09-01 10:17:02
  • 详谈套接字中SO_REUSEPORT和SO_REUSEADDR的区别

    2023-06-07 14:24:23
  • Oracle 异构服务实践

    2007-08-17 10:00:00
  • 从np.random.normal()到正态分布的拟合操作

    2023-09-09 18:00:01
  • python-yml文件读写与xml文件读写

    2022-06-16 06:43:50
  • Javascript继承机制的设计思想分享

    2023-08-24 16:29:29
  • python实现的正则表达式功能入门教程【经典】

    2023-11-30 05:38:04
  • asp之家 网络编程 m.aspxhome.com