从零开始实现python人脸识别(二) 基础图片操作

在正式学习人脸识别之前, 我们要先学会基础的图片操作

一. 打开图像

import cv2

img = cv2.imread("img/james.png")
cv2.imshow("img_title", img)
cv2.waitKey(0)

image-20220221114014069

二. 关闭图像窗口

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()

image-20220221123759949

五. 修改图片尺寸

修改图片尺寸也是为了减少信息量

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)

image-20220221131533843

六. 绘制几何图形

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)

image-20220221132307055

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)
©本文首发于 菁英编程爱好者, 转载请注明出处.
菁英编程爱好者 » 从零开始实现python人脸识别(二) 基础图片操作

1 评论

  1. 6666666666666666666666666666666666666666666

发表评论

提供最优质的资源集合

立即查看 了解详情