Mentions légales du service

Skip to content
Snippets Groups Projects
Commit 36559571 authored by Farouk Mansouri's avatar Farouk Mansouri
Browse files

Some documentation and test

parent d021a5c5
No related branches found
No related tags found
No related merge requests found
...@@ -140,10 +140,10 @@ else ...@@ -140,10 +140,10 @@ else
CFLAGS += -DPOTI=1 CFLAGS += -DPOTI=1
endif endif
ifeq (${ORWL_SPLIT},) #ifeq (${ORWL_SPLIT},)
else #else
CFLAGS += -DBLOB_SPLIT=1 CFLAGS += -DBLOB_SPLIT=1
endif #endif
############################## ##############################
......
1-Introduction:
This is code of video tracking of mobiles based on ORWL model of progeamming. The used approach
is background extraction of each frame, then post-process the foreground, then extract blobs
representing mobiles, then track the blobs according to texture and geometric informations.
The model of execution is steaming pipeline with static placement of each actor on the machine
and executed by an ORWL task. Dependencies data (images) are managed with ORWL locations and hendles.
2-Compilation:
To compile you need to install:
- OpenCV 4.9 with ffmpeg support
- CVblob https://github.com/Steelskin/cvblob
- Poti (Optional)
- Hwloc (Optional)
- Treematch (Optional)
3-Run
To run tracking of a video you only need to arguments: number of iterations, and video path file.
example:
cd /orwl/tracking
../scripts/simple-threaded-run.sh TEST 16 ./orwl_tracking_pipeline 50 /home/farouk/orwl/tracking/videos/Full_HD_Video_Surveillance_on_Street.mp4
4-Split option
It is possible to define the split number of GMM task and Blob task by modifying TASK_SPLIT ans TASK_SPLIT_BLOB in orwl_tracking_pipeline.c
The defaut values are 4 and 2 and it's not possible to put 0.
...@@ -16,8 +16,7 @@ ...@@ -16,8 +16,7 @@
#include "wrapper.h" #include "wrapper.h"
#include "blob.h" #include "blob.h"
#define DEBUG //#define DEBUG
//#define BLOB_SPLIT
void blob(orwl_handle2 *there, orwl_handle2 *here, orwl_handle2 *here_split, orwl_handle2 there_sec_blob[], int loop , int loop_size ,int mytid, int size_h , int size_w , int split) { void blob(orwl_handle2 *there, orwl_handle2 *here, orwl_handle2 *here_split, orwl_handle2 there_sec_blob[], int loop , int loop_size ,int mytid, int size_h , int size_w , int split) {
ORWL_TIMER(BLOB) ORWL_TIMER(BLOB)
......
...@@ -16,9 +16,9 @@ ...@@ -16,9 +16,9 @@
#include "consumer.h" #include "consumer.h"
#define TIMING #define TIMING
//#define SAVING #define SAVING
//#define DISPLAY //#define DISPLAY
#define DEBUG //#define DEBUG
CvVideoWriter**out; CvVideoWriter**out;
...@@ -50,7 +50,7 @@ void consumer(orwl_handle2 *there, orwl_handle2 *here, int loop, int loop_size, ...@@ -50,7 +50,7 @@ void consumer(orwl_handle2 *there, orwl_handle2 *here, int loop, int loop_size,
/// saving /// /// saving ///
#ifdef SAVING #ifdef SAVING
if ( loop ==0 ) { if ( loop ==0 ) {
out = cvCreateVideoWriter("videos/tracking_out_1.avi", CV_FOURCC('D', 'I', 'V', 'X'), 30, cvSize((int)size_w,(int)size_h), 1); out = cvCreateVideoWriter("tracking_out.avi", CV_FOURCC('D', 'I', 'V', 'X'), 30, cvSize((int)size_w,(int)size_h), 1);
} }
int test = cvWriteFrame(out, track_out); int test = cvWriteFrame(out, track_out);
printf(" \n I'm a task Consumer N° %d | video writer is : %d \n", loop, test); printf(" \n I'm a task Consumer N° %d | video writer is : %d \n", loop, test);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment