| CmdLine of Input * string // A file or a directory to process and the output directory.
| Window of string option // An optional path to a file to open can be given in window mode.
-type Arguments = RunningMode * bool
+type Arguments = RunningMode * bool // bool : true if in debug mode.
let parseArgs (args : string[]) : Arguments =
runningMode, Array.exists ((=) "--debug") args
let showArgsHelp () =
- printfn "Usage of Parasitemia :"
- printfn "Non-interactive mode:"
- printfn " %s (--folder <folder>|--file <file>) --output <folder> [--debug]" System.AppDomain.CurrentDomain.FriendlyName
- printfn " --folder <folder> : an input folder containing images to analyze"
- printfn " --file <file> : an image file to be analyzed"
- printfn " --output <folder> : a folder to put the results"
- printfn " --debug : output more information like intermediate images if set"
-
- printfn "Interactive mode:"
- printfn " %s [<document-file>] [--debug]" System.AppDomain.CurrentDomain.FriendlyName
- printfn " <document-file> : a PIAZ file to automatically open at startup"
- printfn " --debug : output information like intermediate images if set in the current directory"
+ Console.WriteLine Utils.argsHelp
[<System.Runtime.InteropServices.DllImport "kernel32.dll">]
extern bool AttachConsole (int dwProcessId)
use resultFile = new StreamWriter (new FileStream (Path.Combine (output, "results.txt"), FileMode.Append, FileAccess.Write))
- let images = [ for file in files -> Path.GetFileNameWithoutExtension (FileInfo(file).Name), config.Copy(), new Image<Bgr, byte> (file) ]
+ let images = [ for file in files -> Path.GetFileNameWithoutExtension (FileInfo(file).Name), config.Copy (), new Image<Bgr, byte> (file) ]
Log.LogWithTime Severity.INFO (
fun () ->
match ParasitemiaCore.Analysis.doMultipleAnalysis images None with
| Some results ->
- for id, cells in results do
+ for id, result in results do
let config, img = images |> List.pick (fun (id', config', img') -> if id' = id then Some (config', img') else None)
img.Dispose ()
- let total, infected = countCells cells
+ let total, infected = countCells result.Cells
fprintf resultFile "File: %s %d %d %.2f (diameter: %O)\n" id total infected (100. * (float infected) / (float total)) config.RBCRadius
| None ->
fprintf resultFile "Analysis aborted"
Some ()
) "Whole analyze" |> ignore
- Log.RmListener (listener)
+ Log.RmListener listener
0
| Window fileToOpen ->