✨✨✨
感谢优秀的你打开了小白的文章
“希望在看文章的你今天又进步了一点点,离美好生活更近一步!”
图像的基本处理(一) | 图像基本处理(一)_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)
结果展示:
变化前:
变化后:
大功告成!希望大家能用上!