【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。

读取结果如下所示:
【Python-Anaconda-Jupyter Notebook】计算机视觉-图像处理-OpenCv基础学习(1)_第1张图片

cv2.imshow('image',img)      # 图像的显示,也可以创建多个窗口
cv2.waitKey(0)               # 等待时间,毫秒级,0表示任意键终止              
cv2.destroyAllWindows()      # 窗口销毁

获取图像显示图下:
【Python-Anaconda-Jupyter Notebook】计算机视觉-图像处理-OpenCv基础学习(1)_第2张图片
每次要显示一个图都写上面三行是比较麻烦的,故可以将其放入一个函数当中,可以定义cv_show这样一个函数

def cv_show(name,img):          
    cv2.imshow(name,img) 
    cv2.waitKey(10000) 
    cv2.destroyAllWindows()
img.shape                          #读取彩色图属性shape的值

获取结果如下:
图3

414代表图的高,500代表图的宽,3代表图的通道数。
img=cv2.imread('cat.jpg',cv2.IMREAD_GRAYSCALE)
img
# 读取图像cat.jpg的灰度图的像素数据

读取结果如下:

【Python-Anaconda-Jupyter Notebook】计算机视觉-图像处理-OpenCv基础学习(1)_第3张图片

imge.shape         # 读取灰度图的属性shape的值

获取结果如下:
图5

# 414是wide,500是height,没有第三个参数,说明这是一个灰度图
cv2.imshow('cat.jpg ',img)         #图像的显示,也可以创建多个窗口

cv2.waitKey(10000)                 # 等待时间,毫秒级,0表示任意键终止

cv2.destroyAllWindows()            #窗口销毁

运行得到图像的灰度图显示如下:
【Python-Anaconda-Jupyter Notebook】计算机视觉-图像处理-OpenCv基础学习(1)_第4张图片

#将得到的灰度图进行保存
cv2.imwrite('mycat.png',img)
# 保存时要对图片进行命名。运行结果位True,说明保存成功。

函数type(img):查看图片img的底层格式
函数img.size :计算图像像素点的个数
函数img.dtype :查看图像数据的类型
以上面图片为例,此三函数的运行结果如下:
【Python-Anaconda-Jupyter Notebook】计算机视觉-图像处理-OpenCv基础学习(1)_第5张图片

视频数据的读取

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()

你可能感兴趣的:(opencv,2,python,opencv,计算机视觉)