需要安装的包

pip install numpy
pip install opencv-python

图像的存在形式

图像实际上一个三维矩阵(行高,列宽,通道数)。一张图像的总像素点的计算公式为:行*列*通道数。通道数为1的图像是灰度图像,通道数为3的图像是rgb三色图像。

图像的读取与保存

读图片

#导入模块
import cv2 as cv

#读图片    path为图片地址
src = cv.imread(path)

图片的一些属性

print(type(image))    #输出图片数据结构的类型
print(image.shape)    #输出图片的形状
print(image.size)     #输出图片的总像素值
print(image.dtype)    #输出图片的数据元素类型
#输出结果
<class 'numpy.ndarray'>    #图片的数据类型为numpy包的ndarry类型(多维数组)
(527, 797, 3)              #图片的高为527,宽为797,通道数为3
1260057                    #总像素点的个数:527*797*3=1260057
uint8                      #每个像素点的类型为无符号8位的int型

其实直接print(image)可以看到输出的为一个数组。

显示图片

src = cv.imread('imags\image.png')    #读到一张图片
cv.imshow('input image',src)          #显示图片
cv.waitKey(0)                         #无限等待
cv.destroyAllWindows()                #销毁所有窗口

关于cv.waitkey(x)

在显示图片语句后如果不加cv.waitkey(x)语句图片将会一闪而过,这个语句的意思就是图片显示后等待x毫秒,x=0表示无限等待,在图片显示过程中没有按键被按下则返回-1,有按键被按下则返回该键的ASCII值,借此可以控制视频的播放

图像的保存

#第一个参数位地址+图像名,第二个为要保存的图像
cv.imwrite("C:/studyFiles/result.png",src)

读取视频

def getVideo():
    # VideoCapture里的参数为数字表示打开电脑的第几个摄像头,如果只有一个摄像头可以不写括号
    #capture = cv.VideoCapture(0)
    #读取视频流
    capture = cv.VideoCapture('C:video.mp4')
    while (True):
        # 读取每一帧 ret表示是否得到,值为True或Fasle,frame为图像
        ret, frame = capture.read(1)
        if ret==False:
            break
        # 将每一帧镜像翻转
        #frame = cv.flip(frame, 1)
        # 显示每一帧,连续显示成为视频
        cv.namedWindow('video',cv.WINDOW_NORMAL)
        cv.imshow("video", frame)
        #cv.waitKey(x),x表示等待的毫秒数,0表示一直等待,若无键按下返回-1,若有按键按下返回相应键的ASCII码
        c = cv.waitKey(10)
        #ESC的ASCII码是27
        if c == 27:
            break

图像的创建与修改

图像的创建

import numpy as np
import cv2 as cv

#创建图片
img = np.zeros((400,400,3),np.uint8)

zeros(shape, dtype=None, order='C')

该方法创建一个全0矩阵,shape为矩阵的维度大小,dtype为元素类型,order:可选参数,C代表行优先,F代表列优先(内存中的存储顺序)

还有一个ones方法,跟该方法参数一样,创建一个全1矩阵

 图像修改,其实就是对矩阵的修改

img = np.zeros((400,400,3),np.uint8)
#将通道1的数值修改成255
img[:,:,0] = np.ones((400,400))*255
#将通道2的数值修改成255
img[:,:,1] = np.ones([400,400])*255
#对单个值修改
img[200,200,1] = 255