opencv-图像处理-行、列、通道

	img=cv2.imread('1P40G41214-5.jpg')
	print(img.shape)
	print(img[100,100])
	print(img[100,100,0])
	print(img[100,100,1])
	print(img[100,100,2])
#输出
# (1200, 1920, 3)
# [121 167 208]
# 121
# 167
# 208

我们知道 img.shape 中的三个值代表着行数、列数和通道,那么这些名词在图像中代表着什么?

行数和列数
  • 这个比较好理解,在程序里我们可以把图像比作是矩阵,图像有高和宽,矩阵有行和列
  • 习惯上,我们把图像的高看作是行,而把图像的宽看作是列
  • 这样做的原因:所有对象的操作最终都是对像素点的操作,但是,图像的像素点很多,直接对像素点进行操作,工作量太大,而将对图像的操作转化成对矩阵的操作(事实上,所有的图像处理工具都是这样),利用矩阵运算,可以大大减轻工作量,提高工作效率。
通道
  • 一幅彩色图像需要由三原色构成,每一个彩色的像素点都需要由蓝、绿、红三种颜色叠加而成
  • 也就是说,我们可以把一幅彩色图像分为蓝、绿、红三层,这三层就可以看成是三个通道。(一个叫法而已)
  • 我们可以根据通道数来判断图像的种类:3 为彩色图像,很容易判断灰度图像的通道数为 1
  • 还有通道数为 2 和 4 的图像,但是这些图像不常用,这里就不介绍了,想了解的可以参照大佬的文章

你可能感兴趣的:(opencv,opencv,图像处理,图像属性)