OpenCV基本函数使用--Python

介绍

Opencv是一个C++库,用于实时处理计算机视觉方面的问题,涵盖了很多计算机视觉领域的模块。
OpenCV有两个python接口,老版本的cv模块使用OpenCV内置的数据类型,新版本的cv2模块使用NumPy数组

一、打开摄像头

cv2.waitKey() 是一个键盘绑定函数。它的时间尺度是毫秒级。

函数等待几毫秒,看是否有键盘输入。在几毫秒之内

如果按下任意键,这个函数会返回按键的 ASCII 码值,程序将会继续运行。

如果没有键盘输入,返回值为 -1。

如果我们设置这个函数的参数为 0,那它将会无限期的等待键盘输入。

它也可以被用来检测特定键是否被按下,例如按键 a 是否被按下


cv2.destroyAllWindows() 可以轻易删除任何我们建立的窗口。

如果你想删除特定的窗口可以使用 cv2.destroyWindow(),在括号内输入你想删除的窗口名。

import cv2

# 调用笔记本内置摄像头,所以参数为0,如果有其他的摄像头可以调整参数为1,2
cap = cv2.VideoCapture(0)
# while True: # 死循环,让其一值读入图片
while cap.isOpened():  # 判断是否打开摄像头成功 返回值为一个布尔值
    # _: 如果为true,则读取成功,反之不超过;frame: 读取的图片
    _, frame = cap.read()  # 读取一帧一帧的图像,放回值是一个布尔值 
    cv2.imshow("img", frame)  # 进行显示
    key = cv2.waitKey(1)  # 等待一会 单位为毫秒,表示间隔时间
    if key == ord('q'):  # 按q键退出
        break

cap.release()  # 释放掉摄像头资源,防止在下次调用时不会出错
cv2.destroyAllWindows()  # 用来删除窗口的,关闭窗口并取消分配任何相关的内存使用

二、读入图片

cv2.imread(file,flag)

 需要特别注意的是图片读出来的格式是BGR,不是我们最常见的RGB格式

函数imread从指定文件加载图像并返回一个numpy.ndarray对象类型像素值。

如果图像无法读取(由于文件丢失,权限不当,格式不受支持或格式无效),函数返回一个空矩阵

第二个参数是一个标志,用于指定应读取图像的方式。

cv2.IMREAD_COLOR:加载彩色图像。图像的任何透明度都将被忽略。这是默认标志。 flags=1
cv2.IMREAD_GRAYSCALE:以灰度模式加载图像 flags=0
cv2.IMREAD_UNCHANGED:加载包含Alpha通道的图像 flags=-1

import cv2

# 载入图像
img = cv2.imread(r"./car.jpg")
# 查看像素矩阵
# print("img:\n", img)
# print("*"*50)
# 查看形状 返回一个元组(高,宽,通道数)
# print("shape:\n", img.shape)
# print("*"*50)
# 打印图像尺寸
h, w = img.shape[:2]
print(h, w)

三、显示图片 

cv2.imshow(窗口名,图像) 

窗口会自动调整为图像大小。

第一个参数是窗口的名字

第二个是我们的图像。

可以创建多个窗口,但是必须给他们不同的名字

img = cv2.imread(r"./car.jpg")
cv2.namedWindow("Image")  # 窗口的名字
cv2.imshow("Image", img)  # 显示图片
cv2.waitKey(0) 
cv2.destroyAllWindows()

四、色彩转换

 在OpenCV中,图像不是用常规的RGB颜色通道来存储的,用的是BGR顺序。

当读取一幅图像后,默认的是BGR,不过有很多转换方式可以利用。颜色空间转换函数可以用cvtColor()完成。

cv2.cvtColor(img_front,img_after) 

img_front是需要转换的图片

img_after是转换成何种格式。

cv2.COLOR_BGR2RGB 将BGR格式转换成RGB格式

cv2.COLOR_BGR2GRAY 将BGR格式转换成灰度图片

cv2.COLOR_BGR2HSV 将BGR格式转换成HSV格式

img = cv2.imread(r"./car.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow("origin", img)  # 显示原始图片
cv2.imshow("gray", gray)  # 显示灰度图片
cv2.waitKey(0)
cv2.destroyAllWindows()

五、保存图片

cv2.imwrite(file,img,num)

第一个参数:要保存的文件名

第二个参数:要保存的图像

第三个参数:它针对特定的格式:

对于JPEG,其表示的是图像的质量,用0 - 100的整数表示,默认95

对于png ,第三个参数表示的是压缩级别。默认为3.
注意:
cv2.IMWRITE_JPEG_QUALITY类型为 long ,必须转换成 int
cv2.IMWRITE_PNG_COMPRESSION, 从0到9 压缩级别越高图像越小。

# 载入图像
img = cv2.imread(r"./car.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imwrite('gary_car.jpg', gray)

六、保存视频

cv2.VideoWriter(filename, fourcc, fps, frameSize[, isColor])

filename:保存的文件的路径
fourcc:指定编码器
fps:要保存的视频的帧率
frameSize:要保存的文件的画面尺寸
isColor:保存的是黑白画面还是彩色的画面

cv2.VideoWriter_fourcc()
作用:指定视频编码格式

cv2.VideoWriter_fourcc(‘I’,‘4’,‘2’,‘0’):该参数是YUV编码类型,4:2:0色度子采样。兼容性好,但文件较大。文件扩展名.avi。

cv2.VideoWriter_fourcc(‘P’,‘I’,‘M’,‘1’):MPEG-1编码类型,文件扩展名.avi,可指定结果视频的大小

cv2.VideoWriter_fourcc(‘X’,‘V’,‘I’,‘D’):MPEG-4编码类型,视频大小为平均值,文件扩展名.avi,可指定结果视频的大小

cv2.VideoWriter_fourcc(‘T’,‘H’,‘E’,‘O’):OGGVorbis,音频压缩格式,有损压缩,类似于MP3等的音乐格式。兼容性差,件扩展名.ogv。

cv2.VideoWriter_fourcc(‘F’,‘L’,‘V’,‘1’):该参数是Flash视频,文件名后缀为.flv
等等

cap = cv2.VideoCapture(0)
fourcc = cv2.VideoWriter_fourcc('I', '4', '2', '0')
out = cv2.VideoWriter(r'./output.avi', fourcc, 20.0, (640, 480), True)
while cap.isOpened():
    ret, frame = cap.read()
    if ret is True:
        frame = cv2.resize(frame, (640, 480))
        out.write(frame)
        cv2.imshow('frame', frame)
    else:
        break

    key = cv2.waitKey(10)
    if key == ord('q'):
        break

cap.release()
out.release()
cv2.destroyAllWindows()

七、源码获取

 GitHub Opencv简单使用

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