├── .gitignore ├── Resources └── Videos │ ├── video1.mp4 │ ├── video2.mp4 │ ├── video3.mp4 │ ├── video5.mp4 │ ├── video6.mp4 │ ├── video7.mp4 │ └── video8.mp4 ├── Scripts ├── activate ├── activate.bat ├── activate.fish ├── activate.nu ├── activate.ps1 ├── activate_this.py ├── convert-caffe2-to-onnx.exe ├── convert-onnx-to-caffe2.exe ├── cpuinfo.exe ├── deactivate.bat ├── deactivate.nu ├── f2py.exe ├── fonttools.exe ├── isympy.exe ├── normalizer.exe ├── numpy-config.exe ├── pip-3.11.exe ├── pip.exe ├── pip3.11.exe ├── pip3.exe ├── pydoc.bat ├── pyftmerge.exe ├── pyftsubset.exe ├── python.exe ├── pythonw.exe ├── torchrun.exe ├── tqdm.exe ├── ttx.exe ├── ultralytics.exe ├── wheel-3.11.exe ├── wheel.exe ├── wheel3.11.exe ├── wheel3.exe └── yolo.exe ├── multithreaded_tracking.py ├── objectTracking.py ├── objecttracking_trails.py ├── pyvenv.cfg ├── requirements.txt └── share └── man └── man1 ├── isympy.1 └── ttx.1 /.gitignore: -------------------------------------------------------------------------------- 1 | # created by virtualenv automatically 2 | * 3 | -------------------------------------------------------------------------------- /Resources/Videos/video1.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MuhammadMoinFaisal/Multi-Object-Tracking-Ultralytics-YOLO11/62ab4721e14f3872f41d8e53c97b13077023f380/Resources/Videos/video1.mp4 -------------------------------------------------------------------------------- /Resources/Videos/video2.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MuhammadMoinFaisal/Multi-Object-Tracking-Ultralytics-YOLO11/62ab4721e14f3872f41d8e53c97b13077023f380/Resources/Videos/video2.mp4 -------------------------------------------------------------------------------- /Resources/Videos/video3.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MuhammadMoinFaisal/Multi-Object-Tracking-Ultralytics-YOLO11/62ab4721e14f3872f41d8e53c97b13077023f380/Resources/Videos/video3.mp4 -------------------------------------------------------------------------------- /Resources/Videos/video5.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MuhammadMoinFaisal/Multi-Object-Tracking-Ultralytics-YOLO11/62ab4721e14f3872f41d8e53c97b13077023f380/Resources/Videos/video5.mp4 -------------------------------------------------------------------------------- /Resources/Videos/video6.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MuhammadMoinFaisal/Multi-Object-Tracking-Ultralytics-YOLO11/62ab4721e14f3872f41d8e53c97b13077023f380/Resources/Videos/video6.mp4 -------------------------------------------------------------------------------- /Resources/Videos/video7.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MuhammadMoinFaisal/Multi-Object-Tracking-Ultralytics-YOLO11/62ab4721e14f3872f41d8e53c97b13077023f380/Resources/Videos/video7.mp4 -------------------------------------------------------------------------------- /Resources/Videos/video8.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MuhammadMoinFaisal/Multi-Object-Tracking-Ultralytics-YOLO11/62ab4721e14f3872f41d8e53c97b13077023f380/Resources/Videos/video8.mp4 -------------------------------------------------------------------------------- /Scripts/activate: -------------------------------------------------------------------------------- 1 | # This file must be used with "source bin/activate" *from bash* 2 | # you cannot run it directly 3 | 4 | 5 | if [ "${BASH_SOURCE-}" = "$0" ]; then 6 | echo "You must source this script: \$ source $0" >&2 7 | exit 33 8 | fi 9 | 10 | deactivate () { 11 | unset -f pydoc >/dev/null 2>&1 || true 12 | 13 | # reset old environment variables 14 | # ! [ -z ${VAR+_} ] returns true if VAR is declared at all 15 | if ! [ -z "${_OLD_VIRTUAL_PATH:+_}" ] ; then 16 | PATH="$_OLD_VIRTUAL_PATH" 17 | export PATH 18 | unset _OLD_VIRTUAL_PATH 19 | fi 20 | if ! [ -z "${_OLD_VIRTUAL_PYTHONHOME+_}" ] ; then 21 | PYTHONHOME="$_OLD_VIRTUAL_PYTHONHOME" 22 | export PYTHONHOME 23 | unset _OLD_VIRTUAL_PYTHONHOME 24 | fi 25 | 26 | # The hash command must be called to get it to forget past 27 | # commands. Without forgetting past commands the $PATH changes 28 | # we made may not be respected 29 | hash -r 2>/dev/null 30 | 31 | if ! [ -z "${_OLD_VIRTUAL_PS1+_}" ] ; then 32 | PS1="$_OLD_VIRTUAL_PS1" 33 | export PS1 34 | unset _OLD_VIRTUAL_PS1 35 | fi 36 | 37 | unset VIRTUAL_ENV 38 | if [ ! "${1-}" = "nondestructive" ] ; then 39 | # Self destruct! 40 | unset -f deactivate 41 | fi 42 | } 43 | 44 | # unset irrelevant variables 45 | deactivate nondestructive 46 | 47 | VIRTUAL_ENV='G:\YOLO11\Notebooks\Object_Tracking_YOLO11' 48 | if ([ "$OSTYPE" = "cygwin" ] || [ "$OSTYPE" = "msys" ]) && $(command -v cygpath &> /dev/null) ; then 49 | VIRTUAL_ENV=$(cygpath -u "$VIRTUAL_ENV") 50 | fi 51 | export VIRTUAL_ENV 52 | 53 | _OLD_VIRTUAL_PATH="$PATH" 54 | PATH="$VIRTUAL_ENV/Scripts:$PATH" 55 | export PATH 56 | 57 | # unset PYTHONHOME if set 58 | if ! [ -z "${PYTHONHOME+_}" ] ; then 59 | _OLD_VIRTUAL_PYTHONHOME="$PYTHONHOME" 60 | unset PYTHONHOME 61 | fi 62 | 63 | if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT-}" ] ; then 64 | _OLD_VIRTUAL_PS1="${PS1-}" 65 | if [ "x" != x ] ; then 66 | PS1="() ${PS1-}" 67 | else 68 | PS1="(`basename \"$VIRTUAL_ENV\"`) ${PS1-}" 69 | fi 70 | export PS1 71 | fi 72 | 73 | # Make sure to unalias pydoc if it's already there 74 | alias pydoc 2>/dev/null >/dev/null && unalias pydoc || true 75 | 76 | pydoc () { 77 | python -m pydoc "$@" 78 | } 79 | 80 | # The hash command must be called to get it to forget past 81 | # commands. Without forgetting past commands the $PATH changes 82 | # we made may not be respected 83 | hash -r 2>/dev/null 84 | -------------------------------------------------------------------------------- /Scripts/activate.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | set "VIRTUAL_ENV=G:\YOLO11\Notebooks\Object_Tracking_YOLO11" 4 | 5 | if defined _OLD_VIRTUAL_PROMPT ( 6 | set "PROMPT=%_OLD_VIRTUAL_PROMPT%" 7 | ) else ( 8 | if not defined PROMPT ( 9 | set "PROMPT=$P$G" 10 | ) 11 | if not defined VIRTUAL_ENV_DISABLE_PROMPT ( 12 | set "_OLD_VIRTUAL_PROMPT=%PROMPT%" 13 | ) 14 | ) 15 | if not defined VIRTUAL_ENV_DISABLE_PROMPT ( 16 | if "" NEQ "" ( 17 | set "PROMPT=() %PROMPT%" 18 | ) else ( 19 | for %%d in ("%VIRTUAL_ENV%") do set "PROMPT=(%%~nxd) %PROMPT%" 20 | ) 21 | ) 22 | 23 | REM Don't use () to avoid problems with them in %PATH% 24 | if defined _OLD_VIRTUAL_PYTHONHOME goto ENDIFVHOME 25 | set "_OLD_VIRTUAL_PYTHONHOME=%PYTHONHOME%" 26 | :ENDIFVHOME 27 | 28 | set PYTHONHOME= 29 | 30 | REM if defined _OLD_VIRTUAL_PATH ( 31 | if not defined _OLD_VIRTUAL_PATH goto ENDIFVPATH1 32 | set "PATH=%_OLD_VIRTUAL_PATH%" 33 | :ENDIFVPATH1 34 | REM ) else ( 35 | if defined _OLD_VIRTUAL_PATH goto ENDIFVPATH2 36 | set "_OLD_VIRTUAL_PATH=%PATH%" 37 | :ENDIFVPATH2 38 | 39 | set "PATH=%VIRTUAL_ENV%\Scripts;%PATH%" 40 | -------------------------------------------------------------------------------- /Scripts/activate.fish: -------------------------------------------------------------------------------- 1 | # This file must be used using `source bin/activate.fish` *within a running fish ( http://fishshell.com ) session*. 2 | # Do not run it directly. 3 | 4 | function _bashify_path -d "Converts a fish path to something bash can recognize" 5 | set fishy_path $argv 6 | set bashy_path $fishy_path[1] 7 | for path_part in $fishy_path[2..-1] 8 | set bashy_path "$bashy_path:$path_part" 9 | end 10 | echo $bashy_path 11 | end 12 | 13 | function _fishify_path -d "Converts a bash path to something fish can recognize" 14 | echo $argv | tr ':' '\n' 15 | end 16 | 17 | function deactivate -d 'Exit virtualenv mode and return to the normal environment.' 18 | # reset old environment variables 19 | if test -n "$_OLD_VIRTUAL_PATH" 20 | # https://github.com/fish-shell/fish-shell/issues/436 altered PATH handling 21 | if test (echo $FISH_VERSION | head -c 1) -lt 3 22 | set -gx PATH (_fishify_path "$_OLD_VIRTUAL_PATH") 23 | else 24 | set -gx PATH $_OLD_VIRTUAL_PATH 25 | end 26 | set -e _OLD_VIRTUAL_PATH 27 | end 28 | 29 | if test -n "$_OLD_VIRTUAL_PYTHONHOME" 30 | set -gx PYTHONHOME "$_OLD_VIRTUAL_PYTHONHOME" 31 | set -e _OLD_VIRTUAL_PYTHONHOME 32 | end 33 | 34 | if test -n "$_OLD_FISH_PROMPT_OVERRIDE" 35 | and functions -q _old_fish_prompt 36 | # Set an empty local `$fish_function_path` to allow the removal of `fish_prompt` using `functions -e`. 37 | set -l fish_function_path 38 | 39 | # Erase virtualenv's `fish_prompt` and restore the original. 40 | functions -e fish_prompt 41 | functions -c _old_fish_prompt fish_prompt 42 | functions -e _old_fish_prompt 43 | set -e _OLD_FISH_PROMPT_OVERRIDE 44 | end 45 | 46 | set -e VIRTUAL_ENV 47 | 48 | if test "$argv[1]" != 'nondestructive' 49 | # Self-destruct! 50 | functions -e pydoc 51 | functions -e deactivate 52 | functions -e _bashify_path 53 | functions -e _fishify_path 54 | end 55 | end 56 | 57 | # Unset irrelevant variables. 58 | deactivate nondestructive 59 | 60 | set -gx VIRTUAL_ENV 'G:\YOLO11\Notebooks\Object_Tracking_YOLO11' 61 | 62 | # https://github.com/fish-shell/fish-shell/issues/436 altered PATH handling 63 | if test (echo $FISH_VERSION | head -c 1) -lt 3 64 | set -gx _OLD_VIRTUAL_PATH (_bashify_path $PATH) 65 | else 66 | set -gx _OLD_VIRTUAL_PATH $PATH 67 | end 68 | set -gx PATH "$VIRTUAL_ENV"'/Scripts' $PATH 69 | 70 | # Unset `$PYTHONHOME` if set. 71 | if set -q PYTHONHOME 72 | set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME 73 | set -e PYTHONHOME 74 | end 75 | 76 | function pydoc 77 | python -m pydoc $argv 78 | end 79 | 80 | if test -z "$VIRTUAL_ENV_DISABLE_PROMPT" 81 | # Copy the current `fish_prompt` function as `_old_fish_prompt`. 82 | functions -c fish_prompt _old_fish_prompt 83 | 84 | function fish_prompt 85 | # Run the user's prompt first; it might depend on (pipe)status. 86 | set -l prompt (_old_fish_prompt) 87 | 88 | # Prompt override provided? 89 | # If not, just prepend the environment name. 90 | if test -n '' 91 | printf '(%s) ' '' 92 | else 93 | printf '(%s) ' (basename "$VIRTUAL_ENV") 94 | end 95 | 96 | string join -- \n $prompt # handle multi-line prompts 97 | end 98 | 99 | set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV" 100 | end 101 | -------------------------------------------------------------------------------- /Scripts/activate.nu: -------------------------------------------------------------------------------- 1 | # Setting all environment variables for the venv 2 | let path-name = (if ((sys).host.name == "Windows") { "Path" } { "PATH" }) 3 | let virtual-env = "G:\YOLO11\Notebooks\Object_Tracking_YOLO11" 4 | let bin = "Scripts" 5 | let path-sep = ";" 6 | 7 | let old-path = ($nu.path | str collect ($path-sep)) 8 | 9 | let venv-path = ([$virtual-env $bin] | path join) 10 | let new-path = ($nu.path | prepend $venv-path | str collect ($path-sep)) 11 | 12 | # environment variables that will be batched loaded to the virtual env 13 | let new-env = ([ 14 | [name, value]; 15 | [$path-name $new-path] 16 | [_OLD_VIRTUAL_PATH $old-path] 17 | [VIRTUAL_ENV $virtual-env] 18 | ]) 19 | 20 | load-env $new-env 21 | 22 | # Creating the new prompt for the session 23 | let virtual_prompt = (if ("" != "") { 24 | "() " 25 | } { 26 | (build-string '(' ($virtual-env | path basename) ') ') 27 | } 28 | ) 29 | 30 | # If there is no default prompt, then only the env is printed in the prompt 31 | let new_prompt = (if ( config | select prompt | empty? ) { 32 | ($"build-string '($virtual_prompt)'") 33 | } { 34 | ($"build-string '($virtual_prompt)' (config get prompt | str find-replace "build-string" "")") 35 | }) 36 | let-env PROMPT_COMMAND = $new_prompt 37 | 38 | # We are using alias as the function definitions because only aliases can be 39 | # removed from the scope 40 | alias pydoc = python -m pydoc 41 | alias deactivate = source "G:\YOLO11\Notebooks\Object_Tracking_YOLO11\Scripts\deactivate.nu" 42 | -------------------------------------------------------------------------------- /Scripts/activate.ps1: -------------------------------------------------------------------------------- 1 | $script:THIS_PATH = $myinvocation.mycommand.path 2 | $script:BASE_DIR = Split-Path (Resolve-Path "$THIS_PATH/..") -Parent 3 | 4 | function global:deactivate([switch] $NonDestructive) { 5 | if (Test-Path variable:_OLD_VIRTUAL_PATH) { 6 | $env:PATH = $variable:_OLD_VIRTUAL_PATH 7 | Remove-Variable "_OLD_VIRTUAL_PATH" -Scope global 8 | } 9 | 10 | if (Test-Path function:_old_virtual_prompt) { 11 | $function:prompt = $function:_old_virtual_prompt 12 | Remove-Item function:\_old_virtual_prompt 13 | } 14 | 15 | if ($env:VIRTUAL_ENV) { 16 | Remove-Item env:VIRTUAL_ENV -ErrorAction SilentlyContinue 17 | } 18 | 19 | if (!$NonDestructive) { 20 | # Self destruct! 21 | Remove-Item function:deactivate 22 | Remove-Item function:pydoc 23 | } 24 | } 25 | 26 | function global:pydoc { 27 | python -m pydoc $args 28 | } 29 | 30 | # unset irrelevant variables 31 | deactivate -nondestructive 32 | 33 | $VIRTUAL_ENV = $BASE_DIR 34 | $env:VIRTUAL_ENV = $VIRTUAL_ENV 35 | 36 | New-Variable -Scope global -Name _OLD_VIRTUAL_PATH -Value $env:PATH 37 | 38 | $env:PATH = "$env:VIRTUAL_ENV/Scripts;" + $env:PATH 39 | if (!$env:VIRTUAL_ENV_DISABLE_PROMPT) { 40 | function global:_old_virtual_prompt { 41 | "" 42 | } 43 | $function:_old_virtual_prompt = $function:prompt 44 | 45 | if ("" -ne "") { 46 | function global:prompt { 47 | # Add the custom prefix to the existing prompt 48 | $previous_prompt_value = & $function:_old_virtual_prompt 49 | ("() " + $previous_prompt_value) 50 | } 51 | } 52 | else { 53 | function global:prompt { 54 | # Add a prefix to the current prompt, but don't discard it. 55 | $previous_prompt_value = & $function:_old_virtual_prompt 56 | $new_prompt_value = "($( Split-Path $env:VIRTUAL_ENV -Leaf )) " 57 | ($new_prompt_value + $previous_prompt_value) 58 | } 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /Scripts/activate_this.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """Activate virtualenv for current interpreter: 3 | 4 | Use exec(open(this_file).read(), {'__file__': this_file}). 5 | 6 | This can be used when you must use an existing Python interpreter, not the virtualenv bin/python. 7 | """ 8 | import os 9 | import site 10 | import sys 11 | 12 | try: 13 | abs_file = os.path.abspath(__file__) 14 | except NameError: 15 | raise AssertionError("You must use exec(open(this_file).read(), {'__file__': this_file}))") 16 | 17 | bin_dir = os.path.dirname(abs_file) 18 | base = bin_dir[: -len("Scripts") - 1] # strip away the bin part from the __file__, plus the path separator 19 | 20 | # prepend bin to PATH (this file is inside the bin directory) 21 | os.environ["PATH"] = os.pathsep.join([bin_dir] + os.environ.get("PATH", "").split(os.pathsep)) 22 | os.environ["VIRTUAL_ENV"] = base # virtual env is right above bin directory 23 | 24 | # add the virtual environments libraries to the host python import mechanism 25 | prev_length = len(sys.path) 26 | for lib in "..\Lib\site-packages".split(os.pathsep): 27 | path = os.path.realpath(os.path.join(bin_dir, lib)) 28 | site.addsitedir(path.decode("utf-8") if "" else path) 29 | sys.path[:] = sys.path[prev_length:] + sys.path[0:prev_length] 30 | 31 | sys.real_prefix = sys.prefix 32 | sys.prefix = base 33 | -------------------------------------------------------------------------------- /Scripts/convert-caffe2-to-onnx.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MuhammadMoinFaisal/Multi-Object-Tracking-Ultralytics-YOLO11/62ab4721e14f3872f41d8e53c97b13077023f380/Scripts/convert-caffe2-to-onnx.exe -------------------------------------------------------------------------------- /Scripts/convert-onnx-to-caffe2.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MuhammadMoinFaisal/Multi-Object-Tracking-Ultralytics-YOLO11/62ab4721e14f3872f41d8e53c97b13077023f380/Scripts/convert-onnx-to-caffe2.exe -------------------------------------------------------------------------------- /Scripts/cpuinfo.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MuhammadMoinFaisal/Multi-Object-Tracking-Ultralytics-YOLO11/62ab4721e14f3872f41d8e53c97b13077023f380/Scripts/cpuinfo.exe -------------------------------------------------------------------------------- /Scripts/deactivate.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | set VIRTUAL_ENV= 4 | 5 | REM Don't use () to avoid problems with them in %PATH% 6 | if not defined _OLD_VIRTUAL_PROMPT goto ENDIFVPROMPT 7 | set "PROMPT=%_OLD_VIRTUAL_PROMPT%" 8 | set _OLD_VIRTUAL_PROMPT= 9 | :ENDIFVPROMPT 10 | 11 | if not defined _OLD_VIRTUAL_PYTHONHOME goto ENDIFVHOME 12 | set "PYTHONHOME=%_OLD_VIRTUAL_PYTHONHOME%" 13 | set _OLD_VIRTUAL_PYTHONHOME= 14 | :ENDIFVHOME 15 | 16 | if not defined _OLD_VIRTUAL_PATH goto ENDIFVPATH 17 | set "PATH=%_OLD_VIRTUAL_PATH%" 18 | set _OLD_VIRTUAL_PATH= 19 | :ENDIFVPATH 20 | -------------------------------------------------------------------------------- /Scripts/deactivate.nu: -------------------------------------------------------------------------------- 1 | # Setting the old path 2 | let path-name = (if ((sys).host.name == "Windows") { "Path" } { "PATH" }) 3 | let-env $path-name = $nu.env._OLD_VIRTUAL_PATH 4 | 5 | # Unleting the environment variables that were created when activating the env 6 | unlet-env VIRTUAL_ENV 7 | unlet-env _OLD_VIRTUAL_PATH 8 | unlet-env PROMPT_COMMAND 9 | 10 | unalias pydoc 11 | unalias deactivate 12 | -------------------------------------------------------------------------------- /Scripts/f2py.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MuhammadMoinFaisal/Multi-Object-Tracking-Ultralytics-YOLO11/62ab4721e14f3872f41d8e53c97b13077023f380/Scripts/f2py.exe -------------------------------------------------------------------------------- /Scripts/fonttools.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MuhammadMoinFaisal/Multi-Object-Tracking-Ultralytics-YOLO11/62ab4721e14f3872f41d8e53c97b13077023f380/Scripts/fonttools.exe -------------------------------------------------------------------------------- /Scripts/isympy.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MuhammadMoinFaisal/Multi-Object-Tracking-Ultralytics-YOLO11/62ab4721e14f3872f41d8e53c97b13077023f380/Scripts/isympy.exe -------------------------------------------------------------------------------- /Scripts/normalizer.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MuhammadMoinFaisal/Multi-Object-Tracking-Ultralytics-YOLO11/62ab4721e14f3872f41d8e53c97b13077023f380/Scripts/normalizer.exe -------------------------------------------------------------------------------- /Scripts/numpy-config.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MuhammadMoinFaisal/Multi-Object-Tracking-Ultralytics-YOLO11/62ab4721e14f3872f41d8e53c97b13077023f380/Scripts/numpy-config.exe -------------------------------------------------------------------------------- /Scripts/pip-3.11.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MuhammadMoinFaisal/Multi-Object-Tracking-Ultralytics-YOLO11/62ab4721e14f3872f41d8e53c97b13077023f380/Scripts/pip-3.11.exe -------------------------------------------------------------------------------- /Scripts/pip.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MuhammadMoinFaisal/Multi-Object-Tracking-Ultralytics-YOLO11/62ab4721e14f3872f41d8e53c97b13077023f380/Scripts/pip.exe -------------------------------------------------------------------------------- /Scripts/pip3.11.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MuhammadMoinFaisal/Multi-Object-Tracking-Ultralytics-YOLO11/62ab4721e14f3872f41d8e53c97b13077023f380/Scripts/pip3.11.exe -------------------------------------------------------------------------------- /Scripts/pip3.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MuhammadMoinFaisal/Multi-Object-Tracking-Ultralytics-YOLO11/62ab4721e14f3872f41d8e53c97b13077023f380/Scripts/pip3.exe -------------------------------------------------------------------------------- /Scripts/pydoc.bat: -------------------------------------------------------------------------------- 1 | python.exe -m pydoc %* 2 | -------------------------------------------------------------------------------- /Scripts/pyftmerge.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MuhammadMoinFaisal/Multi-Object-Tracking-Ultralytics-YOLO11/62ab4721e14f3872f41d8e53c97b13077023f380/Scripts/pyftmerge.exe -------------------------------------------------------------------------------- /Scripts/pyftsubset.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MuhammadMoinFaisal/Multi-Object-Tracking-Ultralytics-YOLO11/62ab4721e14f3872f41d8e53c97b13077023f380/Scripts/pyftsubset.exe -------------------------------------------------------------------------------- /Scripts/python.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MuhammadMoinFaisal/Multi-Object-Tracking-Ultralytics-YOLO11/62ab4721e14f3872f41d8e53c97b13077023f380/Scripts/python.exe -------------------------------------------------------------------------------- /Scripts/pythonw.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MuhammadMoinFaisal/Multi-Object-Tracking-Ultralytics-YOLO11/62ab4721e14f3872f41d8e53c97b13077023f380/Scripts/pythonw.exe -------------------------------------------------------------------------------- /Scripts/torchrun.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MuhammadMoinFaisal/Multi-Object-Tracking-Ultralytics-YOLO11/62ab4721e14f3872f41d8e53c97b13077023f380/Scripts/torchrun.exe -------------------------------------------------------------------------------- /Scripts/tqdm.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MuhammadMoinFaisal/Multi-Object-Tracking-Ultralytics-YOLO11/62ab4721e14f3872f41d8e53c97b13077023f380/Scripts/tqdm.exe -------------------------------------------------------------------------------- /Scripts/ttx.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MuhammadMoinFaisal/Multi-Object-Tracking-Ultralytics-YOLO11/62ab4721e14f3872f41d8e53c97b13077023f380/Scripts/ttx.exe -------------------------------------------------------------------------------- /Scripts/ultralytics.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MuhammadMoinFaisal/Multi-Object-Tracking-Ultralytics-YOLO11/62ab4721e14f3872f41d8e53c97b13077023f380/Scripts/ultralytics.exe -------------------------------------------------------------------------------- /Scripts/wheel-3.11.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MuhammadMoinFaisal/Multi-Object-Tracking-Ultralytics-YOLO11/62ab4721e14f3872f41d8e53c97b13077023f380/Scripts/wheel-3.11.exe -------------------------------------------------------------------------------- /Scripts/wheel.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MuhammadMoinFaisal/Multi-Object-Tracking-Ultralytics-YOLO11/62ab4721e14f3872f41d8e53c97b13077023f380/Scripts/wheel.exe -------------------------------------------------------------------------------- /Scripts/wheel3.11.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MuhammadMoinFaisal/Multi-Object-Tracking-Ultralytics-YOLO11/62ab4721e14f3872f41d8e53c97b13077023f380/Scripts/wheel3.11.exe -------------------------------------------------------------------------------- /Scripts/wheel3.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MuhammadMoinFaisal/Multi-Object-Tracking-Ultralytics-YOLO11/62ab4721e14f3872f41d8e53c97b13077023f380/Scripts/wheel3.exe -------------------------------------------------------------------------------- /Scripts/yolo.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MuhammadMoinFaisal/Multi-Object-Tracking-Ultralytics-YOLO11/62ab4721e14f3872f41d8e53c97b13077023f380/Scripts/yolo.exe -------------------------------------------------------------------------------- /multithreaded_tracking.py: -------------------------------------------------------------------------------- 1 | #MultiThreaded Tracking Provides the Capability to run Object Tracking on Multiple Video Streams 2 | #Import All the Required Libraries 3 | import threading 4 | import cv2 5 | from ultralytics import YOLO 6 | #Define Model Names and Video Source 7 | MODEL_NAMES = ["yolo11n.pt", "yolo11n-seg.pt"] 8 | 9 | SOURCES = ["Resources/Videos/video5.mp4", "Resources/Videos/video8.mp4"] 10 | 11 | def run_tracker_in_thread(model_name, file_name): 12 | #Run YOLO Tracker in its own thread for concurrent processing 13 | model = YOLO(model_name) 14 | results = model.track(source = file_name, save = True, stream = True, show=True) 15 | for r in results: 16 | pass 17 | 18 | #Create and Start Tracker Threads using a for loop 19 | tracker_threads = [] 20 | for video_file, model_name in zip(SOURCES, MODEL_NAMES): 21 | thread = threading.Thread(target=run_tracker_in_thread, args = (model_name, video_file), daemon=True) 22 | tracker_threads.append(thread) 23 | thread.start() 24 | 25 | #Wait for all tracker threads to finish 26 | for thread in tracker_threads: 27 | thread.join() 28 | 29 | #Clean Up and Close Windows 30 | cv2.destroyAllWindows() -------------------------------------------------------------------------------- /objectTracking.py: -------------------------------------------------------------------------------- 1 | #Import All the Required Libraries 2 | #from ultralytics import YOLO 3 | 4 | #Load the YOLO11 Model 5 | #model = YOLO("yolo11n.pt") 6 | 7 | #Tracking with default tracker bot-sort 8 | #results = model.track(source = "Resources/Videos/video7.mp4", show = True, save=True) 9 | #Tracking with Byte-Track 10 | #results = model.track(source = "Resources/Videos/video8.mp4", show=True, save=True, tracker = "bytetrack.yaml", conf = 0.20, iou = 0.3) 11 | 12 | #---------------------------------------------------# 13 | #Python Script using OpenCV-Python (cv2) and YOLO11 to run Object Tracking on Video Frames and on Live Webcam Feed 14 | 15 | #Import All the Required Libraries 16 | import cv2 17 | from ultralytics import YOLO 18 | 19 | #Load the YOLO11 Model 20 | model = YOLO("yolo11n.pt") 21 | 22 | #Create a Video Capture Object 23 | cap = cv2.VideoCapture("Resources/Videos/video5.mp4") 24 | 25 | #Loop through Video Frames 26 | while True: 27 | ret, frame = cap.read() 28 | if ret: 29 | #Run YOLO11 Tracking on the Video Frames 30 | results = model.track(frame, persist=True) 31 | #Visualize the results on the frame 32 | annotated_frame = results[0].plot() 33 | #Display the annotated frame 34 | cv2.imshow("YOLO11 Tracking", annotated_frame) 35 | #Break the loop if 'q' key is pressed 36 | if cv2.waitKey(1) & 0xFF == ord('q'): 37 | break 38 | else: 39 | break 40 | cap.release() 41 | cv2.destroyAllWindows() 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /objecttracking_trails.py: -------------------------------------------------------------------------------- 1 | #Plotting Tracks Over Time 2 | 3 | #Import All the Required Libraries 4 | import cv2 5 | from ultralytics import YOLO 6 | from collections import defaultdict 7 | import numpy as np 8 | 9 | #Load the YOLO Model 10 | model = YOLO("yolo11n.pt") 11 | 12 | #Create a Video Capture Object 13 | cap = cv2.VideoCapture("Resources/Videos/video7.mp4") 14 | 15 | #Store the Track History 16 | track_history =defaultdict(lambda : []) 17 | 18 | #Loop through the Video Frames 19 | while True: 20 | ret, frame = cap.read() 21 | if ret: 22 | #Run YOLO11 tracking on the frame 23 | results = model.track(source=frame, persist=True) 24 | if results[0].boxes.id is not None: 25 | #Get the bounding box coordinates and the track IDs 26 | boxes = results[0].boxes.xywh.cpu() 27 | track_ids = results[0].boxes.id.int().cpu().tolist() 28 | #Visualize the results on the frame 29 | annotated_frame = results[0].plot() 30 | #Plot the tracks 31 | for box, track_id in zip(boxes, track_ids): 32 | x, y, w, h = box 33 | track = track_history[track_id] 34 | track.append((float(x), float(y))) #x, y center point 35 | if len(track) > 30: 36 | track.pop(0) 37 | #Draw the Tracking Lines 38 | points = np.hstack(track).astype(np.int32).reshape((-1,1,2)) 39 | cv2.polylines(annotated_frame, [points], isClosed=False, color = (230,0,0), thickness=10) 40 | #Display the annotated frame 41 | cv2.imshow("YOLO11 Tracking", annotated_frame) 42 | if cv2.waitKey(1) & 0xFF == ord('w'): 43 | break 44 | else: 45 | break 46 | cap.release() 47 | cv2.destroyAllWindows() 48 | -------------------------------------------------------------------------------- /pyvenv.cfg: -------------------------------------------------------------------------------- 1 | home = C:\Users\mmoin\AppData\Local\Programs\Python\Python311 2 | implementation = CPython 3 | version_info = 3.11.2.final.0 4 | virtualenv = 20.13.0 5 | include-system-site-packages = false 6 | base-prefix = C:\Users\mmoin\AppData\Local\Programs\Python\Python311 7 | base-exec-prefix = C:\Users\mmoin\AppData\Local\Programs\Python\Python311 8 | base-executable = C:\Users\mmoin\AppData\Local\Programs\Python\Python311\python.exe 9 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | ultralytics 2 | lap -------------------------------------------------------------------------------- /share/man/man1/isympy.1: -------------------------------------------------------------------------------- 1 | '\" -*- coding: us-ascii -*- 2 | .if \n(.g .ds T< \\FC 3 | .if \n(.g .ds T> \\F[\n[.fam]] 4 | .de URL 5 | \\$2 \(la\\$1\(ra\\$3 6 | .. 7 | .if \n(.g .mso www.tmac 8 | .TH isympy 1 2007-10-8 "" "" 9 | .SH NAME 10 | isympy \- interactive shell for SymPy 11 | .SH SYNOPSIS 12 | 'nh 13 | .fi 14 | .ad l 15 | \fBisympy\fR \kx 16 | .if (\nx>(\n(.l/2)) .nr x (\n(.l/5) 17 | 'in \n(.iu+\nxu 18 | [\fB-c\fR | \fB--console\fR] [\fB-p\fR ENCODING | \fB--pretty\fR ENCODING] [\fB-t\fR TYPE | \fB--types\fR TYPE] [\fB-o\fR ORDER | \fB--order\fR ORDER] [\fB-q\fR | \fB--quiet\fR] [\fB-d\fR | \fB--doctest\fR] [\fB-C\fR | \fB--no-cache\fR] [\fB-a\fR | \fB--auto\fR] [\fB-D\fR | \fB--debug\fR] [ 19 | -- | PYTHONOPTIONS] 20 | 'in \n(.iu-\nxu 21 | .ad b 22 | 'hy 23 | 'nh 24 | .fi 25 | .ad l 26 | \fBisympy\fR \kx 27 | .if (\nx>(\n(.l/2)) .nr x (\n(.l/5) 28 | 'in \n(.iu+\nxu 29 | [ 30 | {\fB-h\fR | \fB--help\fR} 31 | | 32 | {\fB-v\fR | \fB--version\fR} 33 | ] 34 | 'in \n(.iu-\nxu 35 | .ad b 36 | 'hy 37 | .SH DESCRIPTION 38 | isympy is a Python shell for SymPy. It is just a normal python shell 39 | (ipython shell if you have the ipython package installed) that executes 40 | the following commands so that you don't have to: 41 | .PP 42 | .nf 43 | \*(T< 44 | >>> from __future__ import division 45 | >>> from sympy import * 46 | >>> x, y, z = symbols("x,y,z") 47 | >>> k, m, n = symbols("k,m,n", integer=True) 48 | \*(T> 49 | .fi 50 | .PP 51 | So starting isympy is equivalent to starting python (or ipython) and 52 | executing the above commands by hand. It is intended for easy and quick 53 | experimentation with SymPy. For more complicated programs, it is recommended 54 | to write a script and import things explicitly (using the "from sympy 55 | import sin, log, Symbol, ..." idiom). 56 | .SH OPTIONS 57 | .TP 58 | \*(T<\fB\-c \fR\*(T>\fISHELL\fR, \*(T<\fB\-\-console=\fR\*(T>\fISHELL\fR 59 | Use the specified shell (python or ipython) as 60 | console backend instead of the default one (ipython 61 | if present or python otherwise). 62 | 63 | Example: isympy -c python 64 | 65 | \fISHELL\fR could be either 66 | \&'ipython' or 'python' 67 | .TP 68 | \*(T<\fB\-p \fR\*(T>\fIENCODING\fR, \*(T<\fB\-\-pretty=\fR\*(T>\fIENCODING\fR 69 | Setup pretty printing in SymPy. By default, the most pretty, unicode 70 | printing is enabled (if the terminal supports it). You can use less 71 | pretty ASCII printing instead or no pretty printing at all. 72 | 73 | Example: isympy -p no 74 | 75 | \fIENCODING\fR must be one of 'unicode', 76 | \&'ascii' or 'no'. 77 | .TP 78 | \*(T<\fB\-t \fR\*(T>\fITYPE\fR, \*(T<\fB\-\-types=\fR\*(T>\fITYPE\fR 79 | Setup the ground types for the polys. By default, gmpy ground types 80 | are used if gmpy2 or gmpy is installed, otherwise it falls back to python 81 | ground types, which are a little bit slower. You can manually 82 | choose python ground types even if gmpy is installed (e.g., for testing purposes). 83 | 84 | Note that sympy ground types are not supported, and should be used 85 | only for experimental purposes. 86 | 87 | Note that the gmpy1 ground type is primarily intended for testing; it the 88 | use of gmpy even if gmpy2 is available. 89 | 90 | This is the same as setting the environment variable 91 | SYMPY_GROUND_TYPES to the given ground type (e.g., 92 | SYMPY_GROUND_TYPES='gmpy') 93 | 94 | The ground types can be determined interactively from the variable 95 | sympy.polys.domains.GROUND_TYPES inside the isympy shell itself. 96 | 97 | Example: isympy -t python 98 | 99 | \fITYPE\fR must be one of 'gmpy', 100 | \&'gmpy1' or 'python'. 101 | .TP 102 | \*(T<\fB\-o \fR\*(T>\fIORDER\fR, \*(T<\fB\-\-order=\fR\*(T>\fIORDER\fR 103 | Setup the ordering of terms for printing. The default is lex, which 104 | orders terms lexicographically (e.g., x**2 + x + 1). You can choose 105 | other orderings, such as rev-lex, which will use reverse 106 | lexicographic ordering (e.g., 1 + x + x**2). 107 | 108 | Note that for very large expressions, ORDER='none' may speed up 109 | printing considerably, with the tradeoff that the order of the terms 110 | in the printed expression will have no canonical order 111 | 112 | Example: isympy -o rev-lax 113 | 114 | \fIORDER\fR must be one of 'lex', 'rev-lex', 'grlex', 115 | \&'rev-grlex', 'grevlex', 'rev-grevlex', 'old', or 'none'. 116 | .TP 117 | \*(T<\fB\-q\fR\*(T>, \*(T<\fB\-\-quiet\fR\*(T> 118 | Print only Python's and SymPy's versions to stdout at startup, and nothing else. 119 | .TP 120 | \*(T<\fB\-d\fR\*(T>, \*(T<\fB\-\-doctest\fR\*(T> 121 | Use the same format that should be used for doctests. This is 122 | equivalent to '\fIisympy -c python -p no\fR'. 123 | .TP 124 | \*(T<\fB\-C\fR\*(T>, \*(T<\fB\-\-no\-cache\fR\*(T> 125 | Disable the caching mechanism. Disabling the cache may slow certain 126 | operations down considerably. This is useful for testing the cache, 127 | or for benchmarking, as the cache can result in deceptive benchmark timings. 128 | 129 | This is the same as setting the environment variable SYMPY_USE_CACHE 130 | to 'no'. 131 | .TP 132 | \*(T<\fB\-a\fR\*(T>, \*(T<\fB\-\-auto\fR\*(T> 133 | Automatically create missing symbols. Normally, typing a name of a 134 | Symbol that has not been instantiated first would raise NameError, 135 | but with this option enabled, any undefined name will be 136 | automatically created as a Symbol. This only works in IPython 0.11. 137 | 138 | Note that this is intended only for interactive, calculator style 139 | usage. In a script that uses SymPy, Symbols should be instantiated 140 | at the top, so that it's clear what they are. 141 | 142 | This will not override any names that are already defined, which 143 | includes the single character letters represented by the mnemonic 144 | QCOSINE (see the "Gotchas and Pitfalls" document in the 145 | documentation). You can delete existing names by executing "del 146 | name" in the shell itself. You can see if a name is defined by typing 147 | "'name' in globals()". 148 | 149 | The Symbols that are created using this have default assumptions. 150 | If you want to place assumptions on symbols, you should create them 151 | using symbols() or var(). 152 | 153 | Finally, this only works in the top level namespace. So, for 154 | example, if you define a function in isympy with an undefined 155 | Symbol, it will not work. 156 | .TP 157 | \*(T<\fB\-D\fR\*(T>, \*(T<\fB\-\-debug\fR\*(T> 158 | Enable debugging output. This is the same as setting the 159 | environment variable SYMPY_DEBUG to 'True'. The debug status is set 160 | in the variable SYMPY_DEBUG within isympy. 161 | .TP 162 | -- \fIPYTHONOPTIONS\fR 163 | These options will be passed on to \fIipython (1)\fR shell. 164 | Only supported when ipython is being used (standard python shell not supported). 165 | 166 | Two dashes (--) are required to separate \fIPYTHONOPTIONS\fR 167 | from the other isympy options. 168 | 169 | For example, to run iSymPy without startup banner and colors: 170 | 171 | isympy -q -c ipython -- --colors=NoColor 172 | .TP 173 | \*(T<\fB\-h\fR\*(T>, \*(T<\fB\-\-help\fR\*(T> 174 | Print help output and exit. 175 | .TP 176 | \*(T<\fB\-v\fR\*(T>, \*(T<\fB\-\-version\fR\*(T> 177 | Print isympy version information and exit. 178 | .SH FILES 179 | .TP 180 | \*(T<\fI${HOME}/.sympy\-history\fR\*(T> 181 | Saves the history of commands when using the python 182 | shell as backend. 183 | .SH BUGS 184 | The upstreams BTS can be found at \(lahttps://github.com/sympy/sympy/issues\(ra 185 | Please report all bugs that you find in there, this will help improve 186 | the overall quality of SymPy. 187 | .SH "SEE ALSO" 188 | \fBipython\fR(1), \fBpython\fR(1) 189 | -------------------------------------------------------------------------------- /share/man/man1/ttx.1: -------------------------------------------------------------------------------- 1 | .Dd May 18, 2004 2 | .\" ttx is not specific to any OS, but contrary to what groff_mdoc(7) 3 | .\" seems to imply, entirely omitting the .Os macro causes 'BSD' to 4 | .\" be used, so I give a zero-width space as its argument. 5 | .Os \& 6 | .\" The "FontTools Manual" argument apparently has no effect in 7 | .\" groff 1.18.1. I think it is a bug in the -mdoc groff package. 8 | .Dt TTX 1 "FontTools Manual" 9 | .Sh NAME 10 | .Nm ttx 11 | .Nd tool for manipulating TrueType and OpenType fonts 12 | .Sh SYNOPSIS 13 | .Nm 14 | .Bk 15 | .Op Ar option ... 16 | .Ek 17 | .Bk 18 | .Ar file ... 19 | .Ek 20 | .Sh DESCRIPTION 21 | .Nm 22 | is a tool for manipulating TrueType and OpenType fonts. It can convert 23 | TrueType and OpenType fonts to and from an 24 | .Tn XML Ns -based format called 25 | .Tn TTX . 26 | .Tn TTX 27 | files have a 28 | .Ql .ttx 29 | extension. 30 | .Pp 31 | For each 32 | .Ar file 33 | argument it is given, 34 | .Nm 35 | detects whether it is a 36 | .Ql .ttf , 37 | .Ql .otf 38 | or 39 | .Ql .ttx 40 | file and acts accordingly: if it is a 41 | .Ql .ttf 42 | or 43 | .Ql .otf 44 | file, it generates a 45 | .Ql .ttx 46 | file; if it is a 47 | .Ql .ttx 48 | file, it generates a 49 | .Ql .ttf 50 | or 51 | .Ql .otf 52 | file. 53 | .Pp 54 | By default, every output file is created in the same directory as the 55 | corresponding input file and with the same name except for the 56 | extension, which is substituted appropriately. 57 | .Nm 58 | never overwrites existing files; if necessary, it appends a suffix to 59 | the output file name before the extension, as in 60 | .Pa Arial#1.ttf . 61 | .Ss "General options" 62 | .Bl -tag -width ".Fl t Ar table" 63 | .It Fl h 64 | Display usage information. 65 | .It Fl d Ar dir 66 | Write the output files to directory 67 | .Ar dir 68 | instead of writing every output file to the same directory as the 69 | corresponding input file. 70 | .It Fl o Ar file 71 | Write the output to 72 | .Ar file 73 | instead of writing it to the same directory as the 74 | corresponding input file. 75 | .It Fl v 76 | Be verbose. Write more messages to the standard output describing what 77 | is being done. 78 | .It Fl a 79 | Allow virtual glyphs ID's on compile or decompile. 80 | .El 81 | .Ss "Dump options" 82 | The following options control the process of dumping font files 83 | (TrueType or OpenType) to 84 | .Tn TTX 85 | files. 86 | .Bl -tag -width ".Fl t Ar table" 87 | .It Fl l 88 | List table information. Instead of dumping the font to a 89 | .Tn TTX 90 | file, display minimal information about each table. 91 | .It Fl t Ar table 92 | Dump table 93 | .Ar table . 94 | This option may be given multiple times to dump several tables at 95 | once. When not specified, all tables are dumped. 96 | .It Fl x Ar table 97 | Exclude table 98 | .Ar table 99 | from the list of tables to dump. This option may be given multiple 100 | times to exclude several tables from the dump. The 101 | .Fl t 102 | and 103 | .Fl x 104 | options are mutually exclusive. 105 | .It Fl s 106 | Split tables. Dump each table to a separate 107 | .Tn TTX 108 | file and write (under the name that would have been used for the output 109 | file if the 110 | .Fl s 111 | option had not been given) one small 112 | .Tn TTX 113 | file containing references to the individual table dump files. This 114 | file can be used as input to 115 | .Nm 116 | as long as the referenced files can be found in the same directory. 117 | .It Fl i 118 | .\" XXX: I suppose OpenType programs (exist and) are also affected. 119 | Don't disassemble TrueType instructions. When this option is specified, 120 | all TrueType programs (glyph programs, the font program and the 121 | pre-program) are written to the 122 | .Tn TTX 123 | file as hexadecimal data instead of 124 | assembly. This saves some time and results in smaller 125 | .Tn TTX 126 | files. 127 | .It Fl y Ar n 128 | When decompiling a TrueType Collection (TTC) file, 129 | decompile font number 130 | .Ar n , 131 | starting from 0. 132 | .El 133 | .Ss "Compilation options" 134 | The following options control the process of compiling 135 | .Tn TTX 136 | files into font files (TrueType or OpenType): 137 | .Bl -tag -width ".Fl t Ar table" 138 | .It Fl m Ar fontfile 139 | Merge the input 140 | .Tn TTX 141 | file 142 | .Ar file 143 | with 144 | .Ar fontfile . 145 | No more than one 146 | .Ar file 147 | argument can be specified when this option is used. 148 | .It Fl b 149 | Don't recalculate glyph bounding boxes. Use the values in the 150 | .Tn TTX 151 | file as is. 152 | .El 153 | .Sh "THE TTX FILE FORMAT" 154 | You can find some information about the 155 | .Tn TTX 156 | file format in 157 | .Pa documentation.html . 158 | In particular, you will find in that file the list of tables understood by 159 | .Nm 160 | and the relations between TrueType GlyphIDs and the glyph names used in 161 | .Tn TTX 162 | files. 163 | .Sh EXAMPLES 164 | In the following examples, all files are read from and written to the 165 | current directory. Additionally, the name given for the output file 166 | assumes in every case that it did not exist before 167 | .Nm 168 | was invoked. 169 | .Pp 170 | Dump the TrueType font contained in 171 | .Pa FreeSans.ttf 172 | to 173 | .Pa FreeSans.ttx : 174 | .Pp 175 | .Dl ttx FreeSans.ttf 176 | .Pp 177 | Compile 178 | .Pa MyFont.ttx 179 | into a TrueType or OpenType font file: 180 | .Pp 181 | .Dl ttx MyFont.ttx 182 | .Pp 183 | List the tables in 184 | .Pa FreeSans.ttf 185 | along with some information: 186 | .Pp 187 | .Dl ttx -l FreeSans.ttf 188 | .Pp 189 | Dump the 190 | .Sq cmap 191 | table from 192 | .Pa FreeSans.ttf 193 | to 194 | .Pa FreeSans.ttx : 195 | .Pp 196 | .Dl ttx -t cmap FreeSans.ttf 197 | .Sh NOTES 198 | On MS\-Windows and MacOS, 199 | .Nm 200 | is available as a graphical application to which files can be dropped. 201 | .Sh SEE ALSO 202 | .Pa documentation.html 203 | .Pp 204 | .Xr fontforge 1 , 205 | .Xr ftinfo 1 , 206 | .Xr gfontview 1 , 207 | .Xr xmbdfed 1 , 208 | .Xr Font::TTF 3pm 209 | .Sh AUTHORS 210 | .Nm 211 | was written by 212 | .An -nosplit 213 | .An "Just van Rossum" Aq just@letterror.com . 214 | .Pp 215 | This manual page was written by 216 | .An "Florent Rougon" Aq f.rougon@free.fr 217 | for the Debian GNU/Linux system based on the existing FontTools 218 | documentation. It may be freely used, modified and distributed without 219 | restrictions. 220 | .\" For Emacs: 221 | .\" Local Variables: 222 | .\" fill-column: 72 223 | .\" sentence-end: "[.?!][]\"')}]*\\($\\| $\\| \\| \\)[ \n]*" 224 | .\" sentence-end-double-space: t 225 | .\" End: --------------------------------------------------------------------------------