Home > Software engineering >  Segment black AND moving Pixels
Segment black AND moving Pixels

Time:12-17

I’m trying to segment the moving propeller of this Video. My approach is, to detect all black and moving pixels to separate the propeller from the rest. Here is what I tried so far:

import numpy as np
import cv2


x,y,h,w = 350,100,420,500 # Croping values


cap = cv2.VideoCapture('Video Path')
  

while(1):        
    _, frame = cap.read() 
    
    frame = frame[y:y h, x:x w] # Crop Video
    
    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) 
    lower_black = np.array([0,0,0]) 
    upper_black = np.array([360,255,90]) 
    mask = cv2.inRange(hsv, lower_black, upper_black) 
    res = cv2.bitwise_and(frame,frame, mask= mask) 
    
    nz = np.argwhere(mask)
                                
            
    cv2.imshow('Original',frame)
    cv2.imshow('Propeller Segmentation',mask)
  
    k = cv2.waitKey(30) & 0xff # press esc to exit
    if k == 27:
        break

cap.release()
cv2.destroyAllWindows()

Screenshot form the Video

Result of the Segmentation

With function cv.createBackgroundSubtractorMOG2()

CodePudding user response:

I think you should have a look at background subtraction. It should be the right approach for your problem.

OpenCV provides a good tutorial on this: Link

  • Related