zoukankan      html  css  js  c++  java
  • python opencv —— 背景提取(MOG、KNN)、识别与检测(Haar Cascade)

    • 注意 opencv 的坐标轴,x 轴向右,和 width 对应,y 轴向下,和 height 对应;

    1. MOG2 与 KNN

    • MOG:Mixture of Gaussian

      import cv2
      
      cap = cv2.VideoCapture('./data/video/768x576.avi')
      knn_sub = cv2.createBackgroundSubtractorKNN()
      mog2_sub = cv2.createBackgroundSubtractorMOG2()
      
      while True:
          ret, frame = cap.read()
          if not ret:
              break
          mog_sub_mask = mog2_sub.apply(frame)
          knn_sub_mask = knn_sub.apply(frame)
      
          cv2.imshow('original', frame)
          cv2.imshow('MOG2', mog_sub_mask)
          cv2.imshow('KNN', knn_sub_mask)
      
          key = cv2.waitKey(30) & 0xff
          if key == 27 or key == ord('q'):
              break
      
      cap.release()
      cv2.destroyAllWindows()

    2. 识别与检测

    • Haar Cascade

      import cv2
      import numpy as np
      
      
      # haar 级联分类器,opencv 源文件中data文件夹下会有
      
      
      # https://github.com/opencv/opencv/tree/master/data/haarcascades
      
      face_cascade = cv2.CascadeClassifier(
          './data/classifiers/haarcascade_frontalface_default.xml')
      eye_cascade = cv2.CascadeClassifier('./data/classifiers/haarcascade_eye.xml')
      
      cap = cv2.VideoCapture(0)
      
      while True:
          ret, img = cap.read()
          if not ret:
              break
          gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
          faces = face_cascade.detectMultiScale(gray, 1.3, 5)
          for (x, y, w, h) in faces:
              cv2.rectangle(img, (x, y), (x+w, y+h), color=(255, 0, 0), thickness=2)
              roi_gray = gray[y:y+h, x:x+w]
              roi_color = img[y:y+h, x:x+w]
              eyes = eye_cascade.detectMultiScale(roi_gray)
      
              try:
                  ex, ey, ew, eh = eyes[0]
                  cv2.rectangle(roi_color, (ex, ey), (ex+ew, ey+eh), 
                      color=(0, 255, 0), thickness=2)
                  ex1, ey1, ew1, eh1 = eyes[1]
                  cv2.rectangle(roi_color, (ex1, ey1), (ex1+ew1, ey1+eh1), 
                      color=(0, 255, 0), thickness=2)
      
              except IndexError:
                  print('')
      
          cv2.imshow('me', img)
          key = cv2.waitKey(30)
          if key == 27 or key == ord('q'):
              break
      cap.release()
      cv2.destroyAllWindows()
  • 相关阅读:
    Django通过中间件配置解决跨域
    Kindeditor初始化、及初始化编辑内容
    Bootstrap免费后台管理模版
    微信小程序开发-网络请求-GET/POST不同方式等
    微信小程序开发-文件系统
    微信小程序开发学习记录-源码分享
    【转载】python实例手册
    【改良的选择排序 】
    【选择 插入 冒泡排序】
    【python基础】 Tkinter 之 几何管理器
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9420993.html
Copyright © 2011-2022 走看看