• 9月14日计算机视觉基础学习笔记——基本图像处理



    前言

    本文为9月14日计算机视觉基础学习笔记——基本图像处理,分为四个章节:

    • 计算机视觉的由来;
    • 计算机如何看到图像;
    • 计算机处理图像的方式、方法;
    • 图像处理。

    一、计算机视觉的由来

    • 视觉能力: 会看、会展示,但不会处理、更不会思考、会玩。
    • 数码照相机: 会看、会玩、会更多的处理;
    • Auto-PS
      1. 找到人脸位置——人脸检测;
      2. 定位五官——关键点检测;
      3. 磨皮:blur;瘦脸、大眼:仿射变换;口红、白牙:色彩变换。

    二、计算机如何看到图像

    • 感光器件;
    • 显像管与显示屏;

    二值图像:

    1

    灰度图:

    2

    RGB:

    3

    图像采集过程:

    4

    三、计算机处理图像的方式、方法

    实际上是对矩阵的处理。

    1、直接从 camera 读取

    cap = cv.VideoCapture(0)
    
    • 1

    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    5
    6

    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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    4
    5

    四、图像处理

    1、颜色空间转换

    (1)、RGB to HSV

    • H: 色调;
    • S: 饱和度;
    • V: 亮度。
    img_hsv = cv.cvtColor(img, cv.COLOR_BGR2HSV)
    plt.imshow(img_hsv)
    
    • 1
    • 2

    6

    # 肤色检测
    # 二值化:非0即最大值。
    img_gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
    ret, thresh = cv.threshold(img_gray, 128, 200, cv.THRESH_BINARY)
    plt.imshow(thresh)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    7

    2、图像的平移

    8

    • 平移的原理 [ 1 0 t x 0 1 t y ] [ x y 1 ] = [ x + t x y + t y ]
      [10tx01ty]" role="presentation" style="position: relative;">[10tx01ty]
      [xy1]" role="presentation" style="position: relative;">[xy1]
      =
      [x+txy+ty]" role="presentation" style="position: relative;">[x+txy+ty]
      [1001txty] xy1 =[x+txy+ty]

    3、图像的模糊与锐化

    img_blur = cv.GaussianBlur(img_RGB, (11, 11), 1, 0) # 高斯模糊
    plt.imshow(img_blur)
    
    • 1
    • 2

    9

    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))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    10


  • 相关阅读:
    Node.js之http模块
    App自动化测试持续集成效率提高50%
    Eureka服务下线太慢,电话被告警打爆了
    【Vue】Vue双向绑定原理
    Mac下载docker
    浅析数据迁移工具Sqoop
    DevEco studio配置自己的虚拟环境
    【经验分享】解决vscode编码问题
    【Linux】Linux常用指令
    GitHub访问慢解决办法
  • 原文地址:https://blog.csdn.net/Ashen_0nee/article/details/126846786