Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
MPAI-Private
MPAI-CAE
arp
Video Analyzer
Commits
4088391c
Commit
4088391c
authored
Apr 06, 2023
by
Matteo
Browse files
update config file management
parent
76842786
Changes
6
Hide whitespace changes
Inline
Side-by-side
config/config.json
View file @
4088391c
{
"WorkingPath"
:
"./"
,
"FilesName"
:
"prova"
,
"Brands"
:
true
,
"Speed"
:
7.5
,
"TapeThresholdPercentual"
:
80
,
"CapstanThresholdPercentual"
:
50
,
"MinDist"
:
10
,
"AngleThresh"
:
10000
,
"ScaleThresh"
:
200
,
"PosThresh"
:
40
,
"MinDistCapstan"
:
1
,
"AngleThreshCapstan"
:
1000
,
"ScaleThreshCapstan"
:
30
,
"PosThreshCapstan"
:
10
}
{
"WorkingPath"
:
"/home/user/preservation"
,
"FilesName"
:
"video"
,
"Brands"
:
true
,
"Speed"
:
7.5
,
"TapeThresholdPercentual"
:
80
,
"CapstanThresholdPercentual"
:
50
,
"MinDist"
:
10
,
"AngleThresh"
:
10000
,
"ScaleThresh"
:
200
,
"PosThresh"
:
40
,
"MinDistCapstan"
:
1
,
"AngleThreshCapstan"
:
1000
,
"ScaleThreshCapstan"
:
30
,
"PosThreshCapstan"
:
10
}
\ No newline at end of file
\ No newline at end of file
server/documentation.yaml
View file @
4088391c
title
:
Video Analyser
title
:
Video Analyser
description
:
>
description
:
|
This is the API for the Video Analyser.
[](https://mpai.community/standards/mpai-cae/about-mpai-cae/)
It is used to upload videos and get the results of the analysis.
The analysis is done by the Video Analyser
Implements the Technical Specification of [MPAI CAE-ARP](https://mpai.community/standards/mpai-cae/about-mpai-cae/#Figure2) *Video Analyser* AIM, providing:
* 2 Irregularity Files;
* Irregularity Images.
This is the API for the Video Analyser. It is used to upload videos and get the results of the analysis. The analysis is done by the Video Analyser
license_info
:
license_info
:
name
:
GPL-3.0
name
:
GPL-3.0
url
:
https://www.gnu.org/licenses/gpl-3.0.en.html
url
:
https://www.gnu.org/licenses/gpl-3.0.en.html
...
...
server/main.py
View file @
4088391c
from
fastapi
import
FastAPI
,
Response
,
status
,
Path
,
Query
from
fastapi
import
FastAPI
,
Response
,
status
,
Path
,
Query
from
typing
import
Annotated
from
typing
import
Annotated
from
mpai_cae_arp.files
import
get_file_content
from
mpai_cae_arp.files
import
File
,
FileType
from
mpai_cae_arp.types.irregularity
import
IrregularityFile
from
mpai_cae_arp.types.irregularity
import
IrregularityFile
from
mpai_cae_arp.types.schema
import
Info
from
mpai_cae_arp.types.schema
import
Info
import
server.utils
as
utils
import
server.utils
as
utils
info
=
get_file_content
(
'server/documentation.yaml'
,
'yaml'
)
info
=
File
(
'server/documentation.yaml'
,
FileType
.
YAML
).
get_content
(
)
app
=
FastAPI
(
**
info
)
app
=
FastAPI
(
**
info
)
...
@@ -43,13 +43,13 @@ async def get_irregularity_file(
...
@@ -43,13 +43,13 @@ async def get_irregularity_file(
required_file
=
f
'VideoAnalyser_IrregularityFileOutput
{
id
}
.json'
required_file
=
f
'VideoAnalyser_IrregularityFileOutput
{
id
}
.json'
try
:
try
:
return
get_file_content
(
required_file
,
'json'
)
return
File
(
required_file
,
FileType
.
JSON
).
get_content
(
)
except
:
except
:
process
=
utils
.
analyze
(
files_name
,
working_path
)
process
=
await
utils
.
analyze
(
files_name
,
working_path
)
if
process
.
returncode
==
0
:
if
process
.
returncode
==
0
:
return
get_file_content
(
required_file
,
'json'
)
return
File
(
required_file
,
FileType
.
JSON
).
get_content
(
)
else
:
else
:
response
.
status_code
=
status
.
HTTP_412_PRECONDITION_FAILED
response
.
status_code
=
status
.
HTTP_412_PRECONDITION_FAILED
...
...
server/requirements.txt
View file @
4088391c
...
@@ -21,7 +21,7 @@ lazy_loader==0.2
...
@@ -21,7 +21,7 @@ lazy_loader==0.2
librosa==0.10.0.post2
librosa==0.10.0.post2
llvmlite==0.39.1
llvmlite==0.39.1
MarkupSafe==2.1.2
MarkupSafe==2.1.2
mpai-cae-arp==0.
1
.0
mpai-cae-arp==0.
2
.0
msgpack==1.0.5
msgpack==1.0.5
numba==0.56.4
numba==0.56.4
numpy==1.23.3
numpy==1.23.3
...
...
server/utils.py
View file @
4088391c
import
os
import
os
import
subprocess
import
subprocess
import
json
from
mpai_cae_arp.files
import
File
,
FileType
from
mpai_cae_arp.files
import
get_file_content
def
analyze
(
files_name
:
str
,
working_path
:
str
|
None
=
None
)
->
subprocess
.
CompletedProcess
:
def
analyze
(
files_name
:
str
,
working_path
:
str
|
None
=
None
)
->
subprocess
.
CompletedProcess
:
executable
=
os
.
path
.
abspath
(
"
frame_extraction/bin/frame_extraction
"
)
executable
=
os
.
path
.
abspath
(
"
bin/video_analyser
"
)
config
=
get_file_content
(
"config/config.json"
,
"json"
)
config_file
=
File
(
"config/config.json"
,
FileType
.
JSON
)
config
=
config_file
.
get_content
()
# Update configuration file with query parameters
# Update configuration file with query parameters
config
[
"FilesName"
]
=
files_name
config
[
"FilesName"
]
=
files_name
if
working_path
is
not
None
:
if
working_path
is
not
None
:
config
[
"WorkingPath"
]
=
working_path
config
[
"WorkingPath"
]
=
working_path
with
open
(
"config/config.json"
,
"w"
)
as
json_file
:
config_file
.
write_content
(
config
)
json
.
dump
(
config
,
json_file
)
process
=
subprocess
.
run
([
executable
],
capture_output
=
True
)
process
=
subprocess
.
run
([
executable
],
capture_output
=
True
)
return
process
return
process
src/script.cpp
View file @
4088391c
...
@@ -118,7 +118,7 @@ string END = "\033[0m";
...
@@ -118,7 +118,7 @@ string END = "\033[0m";
*/
*/
bool
getArguments
(
int
argc
,
char
**
argv
)
{
bool
getArguments
(
int
argc
,
char
**
argv
)
{
// Read configuration file
// Read configuration file
ifstream iConfig("
../
config/config.json");
ifstream
iConfig
(
"config/config.json"
);
iConfig
>>
configurationFile
;
iConfig
>>
configurationFile
;
if
(
argc
==
1
)
{
if
(
argc
==
1
)
{
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment