图像的基本表现形式
图像的基本表现形式是像素值组成的矩阵。
二值图像
二值图像由纯黑、纯白两色组成。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()
# 二值图像矩阵
[[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.]]
灰度图像
灰度图像依旧由黑、白两色组成,只不过引入了灰度的概念。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()
# 灰度图像矩阵
[[ 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]]
彩色图像
彩色图像相较于二值图像、灰度图像,蕴含着更多的颜色细节。
从神经生理学上看,人眼的视网膜上有红、绿、黄三种颜色感受器。而其他各种颜色都可以由这三种颜色混合得到。
从光学上看,颜色由主波长、纯度、明度等决定
从心理学和视觉上看,颜色由色调、饱和度、亮度等决定。
以上各种对颜色的解析方式,称为色彩空间。或称颜色空间、颜色模式等。
各种色彩空间之间可以通过公式互相转化。
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()
# 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]]]