mirror of https://github.com/opencv/opencv.git
Merge pull request #12967 from catree:add_tutorial_video_java_python
commit
4e633d1f78
10 changed files with 292 additions and 297 deletions
Before Width: | Height: | Size: 84 KiB |
Before Width: | Height: | Size: 94 KiB |
After Width: | Height: | Size: 91 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 22 KiB |
@ -0,0 +1,79 @@ |
||||
import org.opencv.core.Core; |
||||
import org.opencv.core.Mat; |
||||
import org.opencv.core.Point; |
||||
import org.opencv.core.Scalar; |
||||
import org.opencv.highgui.HighGui; |
||||
import org.opencv.imgproc.Imgproc; |
||||
import org.opencv.video.BackgroundSubtractor; |
||||
import org.opencv.video.Video; |
||||
import org.opencv.videoio.VideoCapture; |
||||
import org.opencv.videoio.Videoio; |
||||
|
||||
class BackgroundSubtraction { |
||||
public void run(String[] args) { |
||||
String input = args.length > 0 ? args[0] : "../data/vtest.avi"; |
||||
boolean useMOG2 = args.length > 1 ? args[1] == "MOG2" : true; |
||||
|
||||
//! [create]
|
||||
BackgroundSubtractor backSub; |
||||
if (useMOG2) { |
||||
backSub = Video.createBackgroundSubtractorMOG2(); |
||||
} else { |
||||
backSub = Video.createBackgroundSubtractorKNN(); |
||||
} |
||||
//! [create]
|
||||
|
||||
//! [capture]
|
||||
VideoCapture capture = new VideoCapture(input); |
||||
if (!capture.isOpened()) { |
||||
System.err.println("Unable to open: " + input); |
||||
System.exit(0); |
||||
} |
||||
//! [capture]
|
||||
|
||||
Mat frame = new Mat(), fgMask = new Mat(); |
||||
while (true) { |
||||
capture.read(frame); |
||||
if (frame.empty()) { |
||||
break; |
||||
} |
||||
|
||||
//! [apply]
|
||||
// update the background model
|
||||
backSub.apply(frame, fgMask); |
||||
//! [apply]
|
||||
|
||||
//! [display_frame_number]
|
||||
// get the frame number and write it on the current frame
|
||||
Imgproc.rectangle(frame, new Point(10, 2), new Point(100, 20), new Scalar(255, 255, 255), -1); |
||||
String frameNumberString = String.format("%d", (int)capture.get(Videoio.CAP_PROP_POS_FRAMES)); |
||||
Imgproc.putText(frame, frameNumberString, new Point(15, 15), Core.FONT_HERSHEY_SIMPLEX, 0.5, |
||||
new Scalar(0, 0, 0)); |
||||
//! [display_frame_number]
|
||||
|
||||
//! [show]
|
||||
// show the current frame and the fg masks
|
||||
HighGui.imshow("Frame", frame); |
||||
HighGui.imshow("FG Mask", fgMask); |
||||
//! [show]
|
||||
|
||||
// get the input from the keyboard
|
||||
int keyboard = HighGui.waitKey(30); |
||||
if (keyboard == 'q' || keyboard == 27) { |
||||
break; |
||||
} |
||||
} |
||||
|
||||
HighGui.waitKey(); |
||||
System.exit(0); |
||||
} |
||||
} |
||||
|
||||
public class BackgroundSubtractionDemo { |
||||
public static void main(String[] args) { |
||||
// Load the native OpenCV library
|
||||
System.loadLibrary(Core.NATIVE_LIBRARY_NAME); |
||||
|
||||
new BackgroundSubtraction().run(args); |
||||
} |
||||
} |
@ -0,0 +1,51 @@ |
||||
from __future__ import print_function |
||||
import cv2 as cv |
||||
import argparse |
||||
|
||||
parser = argparse.ArgumentParser(description='This program shows how to use background subtraction methods provided by \ |
||||
OpenCV. You can process both videos and images.') |
||||
parser.add_argument('--input', type=str, help='Path to a video or a sequence of image.', default='../data/vtest.avi') |
||||
parser.add_argument('--algo', type=str, help='Background subtraction method (KNN, MOG2).', default='MOG2') |
||||
args = parser.parse_args() |
||||
|
||||
## [create] |
||||
#create Background Subtractor objects |
||||
if args.algo == 'MOG2': |
||||
backSub = cv.createBackgroundSubtractorMOG2() |
||||
else: |
||||
backSub = cv.createBackgroundSubtractorKNN() |
||||
## [create] |
||||
|
||||
## [capture] |
||||
capture = cv.VideoCapture(args.input) |
||||
if not capture.isOpened: |
||||
print('Unable to open: ' + args.input) |
||||
exit(0) |
||||
## [capture] |
||||
|
||||
while True: |
||||
ret, frame = capture.read() |
||||
if frame is None: |
||||
break |
||||
|
||||
## [apply] |
||||
#update the background model |
||||
fgMask = backSub.apply(frame) |
||||
## [apply] |
||||
|
||||
## [display_frame_number] |
||||
#get the frame number and write it on the current frame |
||||
cv.rectangle(frame, (10, 2), (100,20), (255,255,255), -1) |
||||
cv.putText(frame, str(capture.get(cv.CAP_PROP_POS_FRAMES)), (15, 15), |
||||
cv.FONT_HERSHEY_SIMPLEX, 0.5 , (0,0,0)) |
||||
## [display_frame_number] |
||||
|
||||
## [show] |
||||
#show the current frame and the fg masks |
||||
cv.imshow('Frame', frame) |
||||
cv.imshow('FG Mask', fgMask) |
||||
## [show] |
||||
|
||||
keyboard = cv.waitKey(30) |
||||
if keyboard == 'q' or keyboard == 27: |
||||
break |
Loading…
Reference in new issue