文章目录
前言
本文为9月14日计算机视觉基础学习笔记——基本图像处理,分为四个章节:
- 计算机视觉的由来;
- 计算机如何看到图像;
- 计算机处理图像的方式、方法;
- 图像处理。
一、计算机视觉的由来
- 视觉能力: 会看、会展示,但不会处理、更不会思考、会玩。
- 数码照相机: 会看、会玩、会更多的处理;
- Auto-PS:
- 找到人脸位置——人脸检测;
- 定位五官——关键点检测;
- 磨皮:blur;瘦脸、大眼:仿射变换;口红、白牙:色彩变换。
二、计算机如何看到图像
- 感光器件;
- 显像管与显示屏;
二值图像:
灰度图:
RGB:
图像采集过程:
三、计算机处理图像的方式、方法
实际上是对矩阵的处理。
1、直接从 camera 读取
cap = cv.VideoCapture(0)
2、从文件读取
img = cv.imread("lena.jpg")
img_RGB = cv.cvtColor(img, cv.COLOR_BGR2RGB)
print(img.shape)
>>> (722, 726, 3)
# Range of Interest
roi = img_RGB[100:200, 300:400]
plt.imshow(img_RGB)
plt.imshow(roi)
3、生成矩阵显示
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
img0 = np.array([[0, 0, 1], [0, 1, 0], [1, 0, 0]])
print(img0)
print(img0.shape)
print("img0 size = {}, {}".format(img0.shape[0], img0.shape[1]))
>>> [[0 0 1]
[0 1 0]
[1 0 0]]
>>> (3, 3)
>>> img0 size = 3, 3
# 灰度图片
plt.imshow(img0, cmap="gray")
# 彩色图片
plt.imshow(img0)
四、图像处理
1、颜色空间转换
(1)、RGB to HSV
- H: 色调;
- S: 饱和度;
- V: 亮度。
img_hsv = cv.cvtColor(img, cv.COLOR_BGR2HSV)
plt.imshow(img_hsv)
# 肤色检测
# 二值化:非0即最大值。
img_gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
ret, thresh = cv.threshold(img_gray, 128, 200, cv.THRESH_BINARY)
plt.imshow(thresh)
2、图像的平移
- 平移的原理: [ 1 0 t x 0 1 t y ] [ x y 1 ] = [ x + t x y + t y ] \begin{bmatrix} 1 & 0 & t_x\\ 0 & 1 & t_y \end{bmatrix} \begin{bmatrix} x \\ y \\ 1 \end{bmatrix} = \begin{bmatrix} x+t_x \\ y+t_y \end{bmatrix} [1001txty]⎣ ⎡xy1⎦ ⎤=[x+txy+ty]
3、图像的模糊与锐化
img_blur = cv.GaussianBlur(img_RGB, (11, 11), 1, 0) # 高斯模糊
plt.imshow(img_blur)
4、加水印
wm = cv.imread("UoB.png")
wm = cv.resize(wm, (300, 300))
wm = cv.cvtColor(wm, cv.COLOR_BGR2RGB)
wm = wm - 255
img1 = cv.resize(img_RGB, (300, 300))
print(wm.shape)
>>> (300, 300, 3)
plt.imshow(cv.add(wm, img1))
plt.imshow(cv.addWeighted(wm, 0.9, img1, 0.5, 0))