import cv2
# 截取图像
img = cv2.imread("sqh.png")
img = img[100:200, 400:1000] #100-200为高 400-1000为长
cv2.imshow("cut", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 获取颜色通道
img = cv2.imread("sqh.png") # 读取图片
b, g, r = cv2.split(img) # 分割颜色通道
print(r.shape, g.shape, b.shape) # 调试输出
# 单通道显示
img = cv2.imread("sqh.png") # 读取图片
cur_img = img.copy() # 深拷贝
cur_img[:, :, 0] = 0 # B通道设置为0
cur_img[:, :, 1] = 0 # G通道设置为0
cv2.imshow("B channel", cur_img) # 图片展示
cv2.waitKey(0)
cv2.destroyAllWindows()
输出
(1300, 867) (1300, 867) (1300, 867)
RGB知识补充
RGB颜色空间以R(Red:红)、G(Green:绿)、B(Blue:蓝)三种基本色为基础,进行不同程度的叠加,产生丰富而广泛的颜色,所以俗称三基色模式。
RGB空间是生活中最常用的一个颜色显示模型,电视机、电脑的CRT显示器等大部分都是采用这种模型。自然界中的任何一种颜色都可以由红、绿、蓝三种色光混合而成,现实生活中人们见到的颜色大多是混合而成的色彩。
肉眼可以识别世界上的所有颜色,而RGB几乎可以组合成世界上所有的颜色!
单通道:
俗称灰度图,每个像素点只能有一个值表示颜色,它的像素值在0到255之间,0是黑色,255是白色,中间值是一些不同等级的灰色,可以说灰度是黑与白之间的过渡色!
注意这个值不是RGB里的任何一个元素,显示设备是直接通过CRT(彩色阴极射线显像管)将单通道里的像素值显示黑白色图像,值越高黑色图越亮,一般灰度值大小不会超过125!
多通道:
多通道也就是RGB三原色,每个像素点有三个字节来表示(RGB),分别最大取值范围是0-255,可以组合成千万种颜色。
图像处理优势对比:
单通道往往应用于图像处理,因为单通道只有一个像素点(一个字节),所以相比多通道三个字节,处理速度上要尤为的快!
而且单通道能将图像以灰度形式显示出来,不会影响图像识别,和特征提取!
多通道以原图的形式将图像展示出来,所以可以提取特征很多,识别率高!
# 读取视频
vc = cv2.VideoCapture("video.mp4")
# 循环
while (True):
# 读取一帧,ret为bool类型,指示是否成功读取这一帧
ret, frame = vc.read()
# 转为灰度图
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# 显示
cv2.imshow('frame', gray)
# 若没有按下q键,则每1毫秒显示一帧
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 释放
vc.release()
cv2.destroyAllWindows()