【Python-Anaconda-Jupyter Notebook】计算机视觉-图像处理-OpenCv基础学习(1)
·
图像数据的读取
cv2.IMREAD_COLOR:彩色图像
cv2.IMREAD_GRAYSCALE:灰度图像
# opencv读取的格式是BGR
import cv2
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
# %matplotlib inline 是 IPython 中定义的魔法函数(Magic Function),其意义是将那些用于matplotlib绘制的图显示在页面里而不是弹出一个窗口,因此就不需要plt.show()这一语句来显示图片。因为这是 IPython 中的命令函数,因此只能在 jupyter notebook中使用,在其他地方使用或者直接运行会报错。
img=cv2.imread('cat.jpg')
img
# 读取图像cat.jpg彩色图像素矩阵数据(因为图像在计算机中是以像素点的形式存储的),赋给变量img。不指定cv2.imread_color或cv2.imread_grayscale时,默认为cv2.imread_color。
读取结果如下所示:
cv2.imshow('image',img) # 图像的显示,也可以创建多个窗口
cv2.waitKey(0) # 等待时间,毫秒级,0表示任意键终止
cv2.destroyAllWindows() # 窗口销毁
获取图像显示图下:
每次要显示一个图都写上面三行是比较麻烦的,故可以将其放入一个函数当中,可以定义cv_show这样一个函数
def cv_show(name,img):
cv2.imshow(name,img)
cv2.waitKey(10000)
cv2.destroyAllWindows()
img.shape #读取彩色图属性shape的值
获取结果如下:
414代表图的高,500代表图的宽,3代表图的通道数。
img=cv2.imread('cat.jpg',cv2.IMREAD_GRAYSCALE)
img
# 读取图像cat.jpg的灰度图的像素数据
读取结果如下:

imge.shape # 读取灰度图的属性shape的值
获取结果如下:
# 414是wide,500是height,没有第三个参数,说明这是一个灰度图
cv2.imshow('cat.jpg ',img) #图像的显示,也可以创建多个窗口
cv2.waitKey(10000) # 等待时间,毫秒级,0表示任意键终止
cv2.destroyAllWindows() #窗口销毁
运行得到图像的灰度图显示如下:
#将得到的灰度图进行保存
cv2.imwrite('mycat.png',img)
# 保存时要对图片进行命名。运行结果位True,说明保存成功。
函数type(img):查看图片img的底层格式
函数img.size :计算图像像素点的个数
函数img.dtype :查看图像数据的类型
以上面图片为例,此三函数的运行结果如下:
视频数据的读取
cv2.VideoCapture可以捕获摄像头,用数字来控制不同的设备,例如0,1。
如果是视频文件,直接指定好路径即可。
vc = cv2.VideoCapture('test.mp4')
# 检查是否打开正确
if vc.isOpened():
oepn, frame = vc.read() # vc.read()返回两个参数。第一个参数是布尔型。此处第一个参数为open,其值为True or False,即判断摄像头是否打开。第二个参数frame为读取的每一帧的内容
else:
open = False
while open: # while循环。确定摄像头打开之后,遍历视频中的每一帧
ret, frame = vc.read()
if frame is None:
break
if ret == True: # ret==True说明每帧内容正常,视频读取成功,则对其进行灰度图转换
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow('result', gray)
if cv2.waitKey(100) & 0xFF == 27: # 设置视频时长和按退出键Esc即可在视频还没播放完之前结束视频
break
vc.release()
cv2.destroyAllWindows()
更多推荐
所有评论(0)