openCV教程(一)

1 安装

  • opencv包
pip install -i https://mirrors.aliyun.com/pypi/simple/ opencv-python
  • 扩展包
pip install -i https://mirrors.aliyun.com/pypi/simple/ opencv-contrib-python
  • 全部安装
pip install -i https://mirrors.aliyun.com/pypi/simple/ opencv-python opencv-contrib-python

2 创建和显示窗口

import cv2

# 创建窗口,WINDOW_AUTOSIZE(自适应,不能修改窗口宽高)
# cv2.namedWindow("window",cv2.WINDOW_AUTOSIZE)
# 可以更改大小
cv2.namedWindow("window", cv2.WINDOW_NORMAL)
# 更改宽高
cv2.resizeWindow("window", 800, 600)
# 展示名字为window的窗口
cv2.imshow("window", 0)

# 等待按键,waitKey会返回按键的asci
# 0表示接受任意按键,如果给其他的整数,表示等待按键的时间.单位是毫秒.
key = cv2.waitKey(0)
if key & 0xFF == ord('q'):
    print("准备销毁窗口")
    # 销毁opencv下的所有窗口
    cv2.destroyAllWindows()

3 显示与保存图片

import cv2
import matplotlib.pyplot as plt
import numpy as np

# 读取图片,三维数组(ndarray类型), 读取的图片是BGR而不是RGB
img = cv2.imread("./image/123.jpg")
# openCV显示(GBR通道)
cv2.imshow("logicfeng", img)
# 保存图片
cv2.imwrite("./image/456.jpg", img)

# matplotlib显示 与原图不一致(RGB通道)
plt.imshow(img)
plt.show()

# 等待按键,waitKey会返回按键的asci
# 0表示接受任意按键,如果给其他的整数,表示等待按键的时间.单位是毫秒.
key = cv2.waitKey(0)
if key & 0xFF == ord('q'):
    print("准备销毁窗口")
    # 销毁opencv下的所有窗口
    cv2.destroyAllWindows()
  • 封装
import cv2


def cv_show(name, img):
    cv2.imshow(name, img)
    key = cv2.waitKey(0)
    if key & 0xFF == ord('q'):
        # 销毁opencv下的所有窗口
        cv2.destroyAllWindows()

3 读取摄像头和视频数据

import cv2

# 创建窗口
cv2.namedWindow("video",cv2.WINDOW_NORMAL)
cv2.resizeWindow("video",640,480)
# 打开摄像头
cap = cv2.VideoCapture(0)
# cap = cv2.VideoCapture("./abc.mp4")

# 循环读取每一帧
while cap.isOpened():
    # 读一帧数据,返回标记和这一帧数据. True表示读到了数据,False表示没读到数据
    flag,frame = cap.read()
    # 如果没有读到,直接退出
    if not flag:
        # 结束循环
        break

    # 显示数据
    cv2.imshow("video", frame)

    # 如果输入q退出
    key = cv2.waitKey(10)
    if key == ord('q'):
        break

# 释放资源
cap.release()
cv2.destroyAllWindows()

4 录制视频

import cv2

# 打开摄像头
cap = cv2.VideoCapture(0)
# *mp4就是解包操作,等于'm','p','4','v'
# 保存格式是mp4
fourcc = cv2.VideoWriter.fourcc(*'mp4v')

# 20帧
vw = cv2.VideoWriter('./mp4/output.mp4', fourcc, 20, (640, 480))

while cap.isOpened():
    flag, frame 

猜你喜欢

转载自blog.csdn.net/weixin_43684214/article/details/133978243