install

  • conda install -c conda-forge opencv: 包含 H264
  • pip install opencv-python

cv2

  • cv2.imread(<img>) : 读取图片
  • <img>.shape : 图像大小(返回元组(高, 宽, 像素的通道数)
  • .imshow() : 显示图片
  • .waitKey() : 值为 0 时,表示等任意键按下后关闭
  • selectROI : 画 ROI

预览

import cv2
# 图片预览
 
img = cv2.imread('test.jpg') # 打开图片
cv2.imshow('name', img)      # 显示图片
cv2.waitKey(0)          # 参数毫秒,为 0 则一直等待
cv2.destroyAllWindows() # 销毁所有窗口

视频写入

import cv2
 
cap = cv2.VideoCapture(rtsp_url)
# 获取视频分辨率
size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
# 获取视频帧率
fps = int(cap.get(cv2.CAP_PROP_FPS))
# 设置视频格式
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
# 调用VideoWrite()函数
videoWrite = cv2.VideoWriter(f"{save_file}.mp4", fourcc, fps, size)
  • cv2.VideoWriter_fourcc() / cv2.cv.CV_FOURCC() :设置视频格式
    • cv2.cv.CV_FOURCC(‘P’, ‘I’, ‘M’, ‘1’) = MPEG-1 codec
    • cv2.cv.CV_FOURCC(‘M’, ‘J’, ‘P’, ‘G’) = motion-jpeg codec
    • cv2.cv.CV_FOURCC(‘M’, ‘P’, ‘4’, ‘2’) = MPEG-4.2 codec
    • cv2.cv.CV_FOURCC(‘D’, ‘I’, ‘V’, ‘3’) = MPEG-4.3 codec
    • cv2.cv.CV_FOURCC(‘D’, ‘I’, ‘V’, ‘X’) = MPEG-4 codec
    • cv2.cv.CV_FOURCC(‘U’, ‘2’, ‘6’, ‘3’) = H263 codec
    • cv2.cv.CV_FOURCC(‘I’, ‘2’, ‘6’, ‘3’) = H263I codec
    • cv2.cv.CV_FOURCC(‘F’, ‘L’, ‘V’, ‘1’) = FLV1 codec

剪裁图片

# 通过 imread 打开图片后,直接进行处理
img = cv2.imread(image_file)
img = img[:height, :width]
  • img[]
    • 高开始(最上面为 0): 高结束
    • 宽开始: 宽结束

函数

  • retval, dst = threshold(src, thresh, maxval, type, dst=None)
    • src: 原图
    • thresh: 阈值
    • maxval: 最大值
    • dst: 处理后图像
    • type: 处理类型
      • cv.THRESH_BINARY: 二值处理
      • cv.THRESH_BINARY_INV: 反二值处理
      • cv.THRESH_TRUNC: 截断阈值化
      • cv.THRESH_TOZERO: 阈值化为 0
      • cv.THRESH_TOZERO_INV: 反阈值化为 0

设置

超时设置

import os
import cv2
 
os.environ["OPENCV_FFMPEG_CAPTURE_OPTIONS"] = "timeout;5000"
cap=cv2.VideoCapture(self.__rtsp_url,cv2.CAP_FFMPEG)

参考