图像的基本操作
opencv中,图像的读取格式是BGR通道读取的。
数据读取-图像
- cv2.IMREAD_COLOR:彩色图像
- cv2.IMREAD_GRAYSCALE:灰度图像
每个像素点,其实是一个值。在0-255浮动,表示亮度,0接近黑色,255非常亮了接近白色
彩色图,三个颜色通道RGB。就相当于三个矩阵构成
读取图像
三个工具包
- import cv2
- import matplotlib.pyplot as plt
- import numpy as np
显示图片
可以定义一个显示函数
def cv_show(name , img):
cv2.imshow(name,img)
cv2.waitKey(0) #等待时间,毫秒级
cv2.destroyAllWindow()
img.shape() 可以打印出图像的大小(500,500,3)表示为500*500的彩色图像
读取视频流
import cv2
import matplotlib.pyplot as plt
import numpy as np
vc = cv2.VideoCapture('test.mp4')
#检查是否打开正确
if vc.isOpened():
#能正确打开,返回一个open值vc.imread()是读取视频中的第一帧,可以写个循环一直往下读
#frame 是当前这一帧图像参数
open,frame=vc.imread()
else:
#写一个布尔判断,判断能否打开
open=False
while open: #当open为true时执行while循环,遍历所有帧
ret,frame=vc.read()
if frame is None: #如果帧数为空,跳出循环
break
if ret == True: #如果这一帧没有毛病
gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)#灰度化
cv2.imshow('result',gray)
if cv2.waitKey(10000) & 0xFF==27:#处理速度,0xFF==27是退出键
break
vc.release()
cv2.destroyAllWindow()
截取部分图像数据
import cv2
img = cv2.imread('F:\\picture\\desk\\cat.jpg')
cat = img[0:200,0:200]
cv2.imshow('img',img)
cv2.imshow('cat',cat)
cv2.waitKey(0)
cv2.destroyAllWindow()
颜色通道提取
b,g,r = cv2.split(cat)
组合起来
img=cv2.merge((b,g,r))
#只保留R通道 #B,G,R( 0,1,2)
cur_img=img.copy()
cur_img[:,:,0]=0
cur_img[:,:,1]=0
cv_show('R',cur_img)#此处调用了,上面说的显示函数
#只保留G通道 #B,G,R( 0,1,2)
cur_img=img.copy()
cur_img[:,:,0]=0
cur_img[:,:,2]=0
cv_show('G',cur_img)#此处调用了,上面说的显示函数
#只保留B通道 #B,G,R( 0,1,2)
cur_img=img.copy()
cur_img[:,:,1]=0
cur_img[:,:,2]=0
cv_show('B',cur_img)#此处调用了,上面说的显示函数
版权声明:本文为lovetobelove原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。