0


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

✨✨✨

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

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

🚀往期回顾

图像的基本处理(一)图像基本处理(一)_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)

结果展示:

变化前:

变化后:

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


本文转载自: https://blog.csdn.net/am_student/article/details/122713985
版权归原作者 进步小白 所有, 如有侵权,请联系我们删除。

“图像处理(八)证件照蓝底换成红底,白底”的评论:

还没有评论