banane36
banane36

Reputation: 3

Segment black AND moving Pixels

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()

Upvotes: 0

Views: 79

Answers (1)

JJ.
JJ.

Reputation: 86

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

Upvotes: 1

Related Questions