• opencv-python之图像的基本表示形式


    图像的基本表现形式

    图像的基本表现形式是像素值组成的矩阵。

    二值图像

    二值图像由纯黑、纯白两色组成。0代表纯黑,1代表纯白。

    import cv2
    import numpy as np
    
    # 构建二值图像的矩阵
    image=np.zeros((12,12))
    image[1,[5,6]]=1
    image[2,4:8]=1
    image[3,3:9]=1
    image[4,[2,3,4,7,8,9]]=1
    image[5,[2,3,8,9]]=1
    image[6,[2,3,8,9]]=1
    image[7,2:10]=1
    image[8,2:10]=1
    image[9,[2,3,8,9]]=1
    image[10,[2,3,8,9]]=1
    
    # 自适应窗口
    cv2.namedWindow("demo",cv2.WINDOW_NORMAL|cv2.WINDOW_KEEPRATIO)
    
    # 输出图像矩阵并显示图像
    print(image)
    cv2.imshow("demo",image)
    key = chr(cv2.waitKey())
    if key == "1":
        print("图像显示结束")
        cv2.destroyAllWindows()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    在这里插入图片描述

    # 二值图像矩阵
    
    [[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
     [0. 0. 0. 0. 0. 1. 1. 0. 0. 0. 0. 0.]
     [0. 0. 0. 0. 1. 1. 1. 1. 0. 0. 0. 0.]
     [0. 0. 0. 1. 1. 1. 1. 1. 1. 0. 0. 0.]
     [0. 0. 1. 1. 1. 0. 0. 1. 1. 1. 0. 0.]
     [0. 0. 1. 1. 0. 0. 0. 0. 1. 1. 0. 0.]
     [0. 0. 1. 1. 0. 0. 0. 0. 1. 1. 0. 0.]
     [0. 0. 1. 1. 1. 1. 1. 1. 1. 1. 0. 0.]
     [0. 0. 1. 1. 1. 1. 1. 1. 1. 1. 0. 0.]
     [0. 0. 1. 1. 0. 0. 0. 0. 1. 1. 0. 0.]
     [0. 0. 1. 1. 0. 0. 0. 0. 1. 1. 0. 0.]
     [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    灰度图像

    灰度图像依旧由黑、白两色组成,只不过引入了灰度的概念。0代表纯黑,255代表纯白,0-255之间的数值将颜色由纯黑向纯白过渡。

    import cv2
    import numpy as np
    
    # 构建灰度图像的矩阵
    image=np.array(range(256),dtype=np.uint8)
    
    # 自适应窗口
    cv2.namedWindow("demo",cv2.WINDOW_NORMAL|cv2.WINDOW_KEEPRATIO).reshape(16,16)
    
    # 输出图像矩阵并显示图像
    print(image)
    cv2.imshow("demo",image)
    key = chr(cv2.waitKey())
    if key == "1":
        print("图像显示结束")
        cv2.destroyAllWindows()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    在这里插入图片描述

    # 灰度图像矩阵
    
    [[  0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15]
     [ 16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31]
     [ 32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47]
     [ 48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63]
     [ 64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79]
     [ 80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95]
     [ 96  97  98  99 100 101 102 103 104 105 106 107 108 109 110 111]
     [112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127]
     [128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143]
     [144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159]
     [160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175]
     [176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191]
     [192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207]
     [208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223]
     [224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239]
     [240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255]]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    彩色图像

    彩色图像相较于二值图像、灰度图像,蕴含着更多的颜色细节。

    从神经生理学上看,人眼的视网膜上有红、绿、黄三种颜色感受器。而其他各种颜色都可以由这三种颜色混合得到。

    从光学上看,颜色由主波长、纯度、明度等决定

    从心理学和视觉上看,颜色由色调、饱和度、亮度等决定。

    以上各种对颜色的解析方式,称为色彩空间。或称颜色空间、颜色模式等。

    各种色彩空间之间可以通过公式互相转化。

    RGB色彩空间

    RGB色彩空间中,图像矩阵的每个位置的值,是一个3个数值组成的数组。从前往后依次代表该位置B(蓝色)、G(绿色)、R(红色)分量的值。我们称为B通道,G通道,R通道。三个通道的数值范围都是0-255。0代表无色,255代表纯色。

    import cv2
    import numpy as np
    import random
    
    # 构建RGB彩色图像图像的矩阵
    image = np.random.randint(0,256,size=(8,8,3),dtype=np.uint8)
    
    # 自适应窗口
    cv2.namedWindow("demo",cv2.WINDOW_NORMAL|cv2.WINDOW_KEEPRATIO)
    
    # 输出图像矩阵并显示图像
    print(image)
    cv2.imshow("demo",image)
    key = chr(cv2.waitKey())
    if key == "1":
        print("图像显示结束")
        cv2.destroyAllWindows()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    在这里插入图片描述

    # RGB彩色图像矩阵
    
    [[[249 167 152]
      [203 129  80]
      [211  23 153]
      [169 252 236]
      [  9  51  49]
      [123  19 125]
      [134  20  79]
      [ 67  74  28]]
    
     [[180 190 218]
      [144  90 221]
      [  3 218 160]
      [188 253 247]
      [ 68 211 149]
      [204  96  46]
      [140  30  55]
      [187 110 143]]
    
     [[124  37 148]
      [  2 188 208]
      [ 30 141 231]
      [162 130 105]
      [129 175 204]
      [183  50 254]
      [180 160 180]
      [ 61 236 161]]
    
     [[175   9 129]
      [ 96  75 234]
      [  7 201 126]
      [210 103 100]
      [ 91  15   4]
      [ 92  20   3]
      [ 32 143  25]
      [222  95 102]]
    
     [[ 57 112  41]
      [215  48 158]
      [209 183 247]
      [165  19 225]
      [222  56 128]
      [230   7 218]
      [ 99 161 157]
      [ 27 202  17]]
    
     [[216  38 132]
      [247  89 123]
      [206  23 197]
      [184 215 228]
      [228  36 175]
      [141 180 124]
      [178 177 121]
      [173  79  25]]
    
     [[ 83 251 153]
      [203 128 129]
      [ 85  68 251]
      [ 23  73  70]
      [127  65  78]
      [183 148 119]
      [178 253 203]
      [251 118  93]]
    
     [[202  32  76]
      [ 53  97 116]
      [ 22 156 250]
      [212   5 236]
      [155 118  26]
      [106 214 244]
      [112 214 155]
      [187 184   1]]]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
  • 相关阅读:
    图扑软件 3D 组态编辑器,低代码零代码构建数字孪生工厂
    JUC下的常用类
    微信“史诗级”更新,小而美终于回来啦~
    ElasticSearch容器化从0到1实践(一)
    web期末大作业 用HTML+CSS做一个漂亮简单的节日网页【传日文化节日中秋节】
    MySQL高可用实战方案——MHA
    SpringBoot热部署
    python学习笔记(11)---(模块与包)
    tcp客户端向tcp服务器发送json文件,服务器转存为json文件
    小红书和达人合作步骤是什么?对接达人合作流程分享
  • 原文地址:https://blog.csdn.net/ncu5509121083/article/details/126571616