图像处理(八)证件照蓝底换成红底,白底

  ✨✨✨

感谢优秀的你打开了小白的文章

希望在看文章的你今天又进步了一点点,离美好生活更近一步!”🌈

 🚀往期回顾

图像的基本处理(一)图像基本处理(一)_am_student的博客-CSDN博客
图像的基本处理(二)图片的基本处理(二)_am_student的博客-CSDN博客
图像的基本处理(三)图像的基本处理(三)_am_student的博客-CSDN博客
图像的基本处理(四)学完这些图像处理,我拿去给女友修了图..._am_student的博客-CSDN博客
图像的基本处理(五)图像的基本处理(五)ImageDraw 模块的使用_am_student的博客-CSDN博客

图像的基本处理(六)

(5条消息) 图像的基本处理六(绘制验证码)_am_student的博客-CSDN博客
图像的基本处理(七)(6条消息) 图像的基本处理七(python绘制九宫格)_am_student的博客-CSDN博客

🍉更改颜色通道

 本次实例是将图片中的黄色转化为红色,代码原理之前的博客有讲解的。

from PIL import ImageDraw,Image
img=Image.open('f1.jpg')
draw_obj=ImageDraw.Draw(img)
width,height=img.size
def get_color(oldColor):
    if oldColor[0]>60 and oldColor[1]>60:
        return (oldColor[0],0,oldColor[2]) #返回红色
    else:
        return oldColor
for x in range(width):
    for y in range(height):
        oldColor=img.getpixel((x,y))
        draw_obj.point((x,y),fill=get_color(oldColor))
# img.show()
img.save('red.jpg')

 原图:

更换之后:

🍉 证件照换蓝底换红底

差不多也是同样的原理,我们可以将证件照的蓝底换成红底,但是这里需要用的是cv库。

import cv2
import numpy as np

img=cv2.imread('02.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()

原图是这样的:

 更换之后呢,是这样的:

 大功告成!

 🍉 证件照换蓝底换白底

同样的方法,不同的颜色而已。


from PIL import Image
import cv2
import numpy as np
 
# 读取照片
img = cv2.imread("02.jpg")
 
# 缩小图片
img = cv2.resize(img, None, fx=0.4, fy=0.4)
rows, cols, channels = img.shape
print(rows, cols, channels)
# 展示图片
cv2.imshow("img", img)
 
# 图片转换为灰度图并显示
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)
erode = cv2.erode(mask, None, iterations=2)
 
dilate = cv2.dilate(erode, None, iterations=2)
cv2.imshow('dilate', dilate)

# img[i,j]=(0,0,255): 此处替换颜色,为BGR通道,不是RGB通道,若是想要将红底变成蓝底img[i,j]=(255,0,0),
for i in range(rows):
    for j in range(cols):
        if dilate[i, j] == 255:  # 像素点255表示白色
            img[i, j] = (255, 255, 255)  # 此处替换颜色,为BGR通道,不是RGB通道
cv2.imwrite('blue-white.jpg', img)
 
res = cv2.imread("blue-white.jpg")
cv2.imshow('res', res)
# 窗口等待的命令,0表示无限等待
cv2.waitKey(0)

 结果展示:

变化前:

 变化后:

 大功告成!希望大家能用上!

  • 20
    点赞
  • 89
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进步小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值