从零开始实现python人脸识别(二) 基础图片操作
在正式学习人脸识别之前, 我们要先学会基础的图片操作
一. 打开图像
import cv2
img = cv2.imread("img/james.png")
cv2.imshow("img_title", img)
cv2.waitKey(0)
二. 关闭图像窗口
cv2.destroyAllWindows()
三. 获取图像属性
1. 获取图片尺寸
import cv2
img = cv2.imread("img/james.png")
print(img.shape)
三. 保存图片
cv2.imwrite("img/james2.png", img)
四. 转换为灰度图像
为什么我们要进行灰度转换呢? 这是为了去掉颜色信息, 提高运算速度
import cv2
img = cv2.imread("img/james.png")
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow("img_title", gray_img)
cv2.imwrite("img/james_gray.png", gray_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
五. 修改图片尺寸
修改图片尺寸也是为了减少信息量
import cv2
img = cv2.imread("img/james.png")
cv2.imshow("img_title", img)
resize_img = cv2.resize(img, dsize=(200, 250))
cv2.imshow("resize_img", resize_img)
cv2.waitKey(0)
六. 绘制几何图形
1. 绘制矩形
import cv2
img = cv2.imread("img/james.png")
cv2.rectangle(img, (100, 100, 250, 300), color=(0, 0, 255), thickness=3)
cv2.imshow("img_title", img)
cv2.waitKey(0)
2. 绘制圆形
需要设置圆心位置, 半径 , 颜色, 画笔粗细
import cv2
img = cv2.imread("img/james.png")
cv2.circle(img, center=(230, 250), radius=200, color=(0, 0, 255), thickness=3)
cv2.imshow("img_title", img)
cv2.waitKey(0)
七. 绘制文字
1. 绘制文字
cv2.putText(img, str(i), (123,456)), font, 2, (0,255,0), 3)
各参数依次是:图片,添加的文字,左上角坐标,字体,字体大小,颜色,字体粗细
举例:
import cv2
# 打开图片
img = cv2.imread("img/dengchao.png")
# 显示文字
cv2.putText(img, "3 friends !@#$%^&*", (123, 456),
cv2.FONT_HERSHEY_SIMPLEX, 2, (0, 255, 0), 3)
cv2.imshow("img_title", img)
cv2.waitKey(0)
2. 绘制汉字
绘制汉字相对复杂, 需要使用pillow库, 将图片转为数组数据, 再转回图片
import cv2
from PIL import Image, ImageDraw, ImageFont
import numpy
# 打开图片
img = cv2.imread("img/dengchao.png")
############## 显示汉字#######################
# 1. 把图像从BGR颜色模式转为RGB模式, 再从OpenCV格式转换成PIL格式
img_PIL = Image.fromarray(cv2.cvtColor(
img, cv2.COLOR_BGR2RGB))
# 2. 需要配置一个字体, 60为字体大小,根据需要调整
font = ImageFont.truetype('src/ziti.ttf', 60)
fillColor = (255, 255, 0)
# 3. 设置文字位置
position = (300, 400)
# 4. 文字
str1 = '三个火枪手'
# 5. 文字绘制在图像(数组)上
draw = ImageDraw.Draw(img_PIL)
draw.text(position, str1, font=font, fill=fillColor)
# 6. 把图像数组转回图像
img = cv2.cvtColor(numpy.asarray(img_PIL),
cv2.COLOR_RGB2BGR) # 转换回OpenCV格式
#################################################
cv2.imshow("img_title", img)
cv2.waitKey(0)
6666666666666666666666666666666666666666666