替换视频权重文件
commit
b45325f218
|
@ -0,0 +1,8 @@
|
|||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# Datasource local storage ignored files
|
||||
/dataSources/
|
||||
/dataSources.local.xml
|
||||
# Editor-based HTTP Client requests
|
||||
/httpRequests/
|
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="PYTHON_MODULE" version="4">
|
||||
<component name="Flask">
|
||||
<option name="enabled" value="true" />
|
||||
</component>
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$" />
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
<component name="TemplatesService">
|
||||
<option name="TEMPLATE_CONFIGURATION" value="Jinja2" />
|
||||
</component>
|
||||
<component name="TestRunnerService">
|
||||
<option name="PROJECT_TEST_RUNNER" value="Twisted Trial" />
|
||||
</component>
|
||||
</module>
|
|
@ -0,0 +1,461 @@
|
|||
<component name="InspectionProjectProfileManager">
|
||||
<profile version="1.0">
|
||||
<option name="myName" value="Project Default" />
|
||||
<inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="PyPackageRequirementsInspection" enabled="true" level="WARNING" enabled_by_default="true">
|
||||
<option name="ignoredPackages">
|
||||
<value>
|
||||
<list size="439">
|
||||
<item index="0" class="java.lang.String" itemvalue="Pillow" />
|
||||
<item index="1" class="java.lang.String" itemvalue="PyJWT" />
|
||||
<item index="2" class="java.lang.String" itemvalue="jsonfield" />
|
||||
<item index="3" class="java.lang.String" itemvalue="PyYAML" />
|
||||
<item index="4" class="java.lang.String" itemvalue="cffi" />
|
||||
<item index="5" class="java.lang.String" itemvalue="kombu" />
|
||||
<item index="6" class="java.lang.String" itemvalue="MarkupSafe" />
|
||||
<item index="7" class="java.lang.String" itemvalue="pycparser" />
|
||||
<item index="8" class="java.lang.String" itemvalue="requests" />
|
||||
<item index="9" class="java.lang.String" itemvalue="drf-writable-nested" />
|
||||
<item index="10" class="java.lang.String" itemvalue="Jinja2" />
|
||||
<item index="11" class="java.lang.String" itemvalue="coreschema" />
|
||||
<item index="12" class="java.lang.String" itemvalue="sqlparse" />
|
||||
<item index="13" class="java.lang.String" itemvalue="celery" />
|
||||
<item index="14" class="java.lang.String" itemvalue="djangorestframework-simplejwt" />
|
||||
<item index="15" class="java.lang.String" itemvalue="certifi" />
|
||||
<item index="16" class="java.lang.String" itemvalue="urllib3" />
|
||||
<item index="17" class="java.lang.String" itemvalue="djangorestframework" />
|
||||
<item index="18" class="java.lang.String" itemvalue="django-cors-headers" />
|
||||
<item index="19" class="java.lang.String" itemvalue="vine" />
|
||||
<item index="20" class="java.lang.String" itemvalue="billiard" />
|
||||
<item index="21" class="java.lang.String" itemvalue="uritemplate" />
|
||||
<item index="22" class="java.lang.String" itemvalue="six" />
|
||||
<item index="23" class="java.lang.String" itemvalue="amqp" />
|
||||
<item index="24" class="java.lang.String" itemvalue="asgiref" />
|
||||
<item index="25" class="java.lang.String" itemvalue="cryptography" />
|
||||
<item index="26" class="java.lang.String" itemvalue="bcrypt" />
|
||||
<item index="27" class="java.lang.String" itemvalue="crypto" />
|
||||
<item index="28" class="java.lang.String" itemvalue="Naked" />
|
||||
<item index="29" class="java.lang.String" itemvalue="chardet" />
|
||||
<item index="30" class="java.lang.String" itemvalue="coreapi" />
|
||||
<item index="31" class="java.lang.String" itemvalue="django-crontab" />
|
||||
<item index="32" class="java.lang.String" itemvalue="pinyin" />
|
||||
<item index="33" class="java.lang.String" itemvalue="django-filter" />
|
||||
<item index="34" class="java.lang.String" itemvalue="configparser" />
|
||||
<item index="35" class="java.lang.String" itemvalue="Django" />
|
||||
<item index="36" class="java.lang.String" itemvalue="itypes" />
|
||||
<item index="37" class="java.lang.String" itemvalue="pycryptodome" />
|
||||
<item index="38" class="java.lang.String" itemvalue="PyMySQL" />
|
||||
<item index="39" class="java.lang.String" itemvalue="pytz" />
|
||||
<item index="40" class="java.lang.String" itemvalue="idna" />
|
||||
<item index="41" class="java.lang.String" itemvalue="shellescape" />
|
||||
<item index="42" class="java.lang.String" itemvalue="pandas" />
|
||||
<item index="43" class="java.lang.String" itemvalue="scikit-learn" />
|
||||
<item index="44" class="java.lang.String" itemvalue="paramiko" />
|
||||
<item index="45" class="java.lang.String" itemvalue="Fabric" />
|
||||
<item index="46" class="java.lang.String" itemvalue="numba" />
|
||||
<item index="47" class="java.lang.String" itemvalue="bs4" />
|
||||
<item index="48" class="java.lang.String" itemvalue="greenlet" />
|
||||
<item index="49" class="java.lang.String" itemvalue="Babel" />
|
||||
<item index="50" class="java.lang.String" itemvalue="backports.os" />
|
||||
<item index="51" class="java.lang.String" itemvalue="py" />
|
||||
<item index="52" class="java.lang.String" itemvalue="python-slugify" />
|
||||
<item index="53" class="java.lang.String" itemvalue="patsy" />
|
||||
<item index="54" class="java.lang.String" itemvalue="mccabe" />
|
||||
<item index="55" class="java.lang.String" itemvalue="bleach" />
|
||||
<item index="56" class="java.lang.String" itemvalue="lxml" />
|
||||
<item index="57" class="java.lang.String" itemvalue="jsonschema" />
|
||||
<item index="58" class="java.lang.String" itemvalue="xlrd" />
|
||||
<item index="59" class="java.lang.String" itemvalue="htmlfetcher" />
|
||||
<item index="60" class="java.lang.String" itemvalue="prettytable" />
|
||||
<item index="61" class="java.lang.String" itemvalue="fastcache" />
|
||||
<item index="62" class="java.lang.String" itemvalue="imageio" />
|
||||
<item index="63" class="java.lang.String" itemvalue="pytest-remotedata" />
|
||||
<item index="64" class="java.lang.String" itemvalue="echarts-china-cities-pypkg" />
|
||||
<item index="65" class="java.lang.String" itemvalue="matplotlib" />
|
||||
<item index="66" class="java.lang.String" itemvalue="dash-core-components" />
|
||||
<item index="67" class="java.lang.String" itemvalue="paddlenlp" />
|
||||
<item index="68" class="java.lang.String" itemvalue="Bottleneck" />
|
||||
<item index="69" class="java.lang.String" itemvalue="networkx" />
|
||||
<item index="70" class="java.lang.String" itemvalue="pluggy" />
|
||||
<item index="71" class="java.lang.String" itemvalue="pyttsx3" />
|
||||
<item index="72" class="java.lang.String" itemvalue="pep8" />
|
||||
<item index="73" class="java.lang.String" itemvalue="numpy" />
|
||||
<item index="74" class="java.lang.String" itemvalue="jdcal" />
|
||||
<item index="75" class="java.lang.String" itemvalue="jupyter" />
|
||||
<item index="76" class="java.lang.String" itemvalue="selenium" />
|
||||
<item index="77" class="java.lang.String" itemvalue="Deprecated" />
|
||||
<item index="78" class="java.lang.String" itemvalue="pyOpenSSL" />
|
||||
<item index="79" class="java.lang.String" itemvalue="PyWavelets" />
|
||||
<item index="80" class="java.lang.String" itemvalue="prompt-toolkit" />
|
||||
<item index="81" class="java.lang.String" itemvalue="QtAwesome" />
|
||||
<item index="82" class="java.lang.String" itemvalue="pyee" />
|
||||
<item index="83" class="java.lang.String" itemvalue="glob2" />
|
||||
<item index="84" class="java.lang.String" itemvalue="Rx" />
|
||||
<item index="85" class="java.lang.String" itemvalue="lz4" />
|
||||
<item index="86" class="java.lang.String" itemvalue="pyppeteer" />
|
||||
<item index="87" class="java.lang.String" itemvalue="aiofiles" />
|
||||
<item index="88" class="java.lang.String" itemvalue="flask-ngrok" />
|
||||
<item index="89" class="java.lang.String" itemvalue="PyHamcrest" />
|
||||
<item index="90" class="java.lang.String" itemvalue="Send2Trash" />
|
||||
<item index="91" class="java.lang.String" itemvalue="imagesize" />
|
||||
<item index="92" class="java.lang.String" itemvalue="et-xmlfile" />
|
||||
<item index="93" class="java.lang.String" itemvalue="pathlib2" />
|
||||
<item index="94" class="java.lang.String" itemvalue="autobahn" />
|
||||
<item index="95" class="java.lang.String" itemvalue="echarts-china-counties-pypkg" />
|
||||
<item index="96" class="java.lang.String" itemvalue="dash-table" />
|
||||
<item index="97" class="java.lang.String" itemvalue="pylint" />
|
||||
<item index="98" class="java.lang.String" itemvalue="multidict" />
|
||||
<item index="99" class="java.lang.String" itemvalue="isort" />
|
||||
<item index="100" class="java.lang.String" itemvalue="olefile" />
|
||||
<item index="101" class="java.lang.String" itemvalue="ruamel_yaml" />
|
||||
<item index="102" class="java.lang.String" itemvalue="keyring" />
|
||||
<item index="103" class="java.lang.String" itemvalue="pytest-astropy" />
|
||||
<item index="104" class="java.lang.String" itemvalue="protobuf" />
|
||||
<item index="105" class="java.lang.String" itemvalue="graphql-relay" />
|
||||
<item index="106" class="java.lang.String" itemvalue="joblib" />
|
||||
<item index="107" class="java.lang.String" itemvalue="bce-python-sdk" />
|
||||
<item index="108" class="java.lang.String" itemvalue="nltk" />
|
||||
<item index="109" class="java.lang.String" itemvalue="atomicwrites" />
|
||||
<item index="110" class="java.lang.String" itemvalue="python-dotenv" />
|
||||
<item index="111" class="java.lang.String" itemvalue="h11" />
|
||||
<item index="112" class="java.lang.String" itemvalue="partd" />
|
||||
<item index="113" class="java.lang.String" itemvalue="Click" />
|
||||
<item index="114" class="java.lang.String" itemvalue="html2text" />
|
||||
<item index="115" class="java.lang.String" itemvalue="promise" />
|
||||
<item index="116" class="java.lang.String" itemvalue="filelock" />
|
||||
<item index="117" class="java.lang.String" itemvalue="numpydoc" />
|
||||
<item index="118" class="java.lang.String" itemvalue="pyzmq" />
|
||||
<item index="119" class="java.lang.String" itemvalue="aliyun-python-sdk-sts" />
|
||||
<item index="120" class="java.lang.String" itemvalue="astropy" />
|
||||
<item index="121" class="java.lang.String" itemvalue="entrypoints" />
|
||||
<item index="122" class="java.lang.String" itemvalue="bkcharts" />
|
||||
<item index="123" class="java.lang.String" itemvalue="PyExecJS" />
|
||||
<item index="124" class="java.lang.String" itemvalue="pyparsing" />
|
||||
<item index="125" class="java.lang.String" itemvalue="munch" />
|
||||
<item index="126" class="java.lang.String" itemvalue="pypinyin" />
|
||||
<item index="127" class="java.lang.String" itemvalue="beautifulsoup4" />
|
||||
<item index="128" class="java.lang.String" itemvalue="path.py" />
|
||||
<item index="129" class="java.lang.String" itemvalue="clyent" />
|
||||
<item index="130" class="java.lang.String" itemvalue="hyperlink" />
|
||||
<item index="131" class="java.lang.String" itemvalue="libarchive-c" />
|
||||
<item index="132" class="java.lang.String" itemvalue="django-crispy-forms" />
|
||||
<item index="133" class="java.lang.String" itemvalue="dash-bootstrap-components" />
|
||||
<item index="134" class="java.lang.String" itemvalue="grapheme" />
|
||||
<item index="135" class="java.lang.String" itemvalue="xarray" />
|
||||
<item index="136" class="java.lang.String" itemvalue="odfpy" />
|
||||
<item index="137" class="java.lang.String" itemvalue="dash-colorscales" />
|
||||
<item index="138" class="java.lang.String" itemvalue="parsel" />
|
||||
<item index="139" class="java.lang.String" itemvalue="channels" />
|
||||
<item index="140" class="java.lang.String" itemvalue="cssselect" />
|
||||
<item index="141" class="java.lang.String" itemvalue="multipledispatch" />
|
||||
<item index="142" class="java.lang.String" itemvalue="distlib" />
|
||||
<item index="143" class="java.lang.String" itemvalue="pypiwin32" />
|
||||
<item index="144" class="java.lang.String" itemvalue="cfgv" />
|
||||
<item index="145" class="java.lang.String" itemvalue="dtale" />
|
||||
<item index="146" class="java.lang.String" itemvalue="itemadapter" />
|
||||
<item index="147" class="java.lang.String" itemvalue="numexpr" />
|
||||
<item index="148" class="java.lang.String" itemvalue="jupyter-core" />
|
||||
<item index="149" class="java.lang.String" itemvalue="ipython_genutils" />
|
||||
<item index="150" class="java.lang.String" itemvalue="python-Levenshtein" />
|
||||
<item index="151" class="java.lang.String" itemvalue="python-sql" />
|
||||
<item index="152" class="java.lang.String" itemvalue="qrcode" />
|
||||
<item index="153" class="java.lang.String" itemvalue="rope" />
|
||||
<item index="154" class="java.lang.String" itemvalue="httplib2" />
|
||||
<item index="155" class="java.lang.String" itemvalue="ppscore" />
|
||||
<item index="156" class="java.lang.String" itemvalue="django-pandas" />
|
||||
<item index="157" class="java.lang.String" itemvalue="llvmlite" />
|
||||
<item index="158" class="java.lang.String" itemvalue="graphene" />
|
||||
<item index="159" class="java.lang.String" itemvalue="pycrypto" />
|
||||
<item index="160" class="java.lang.String" itemvalue="conda" />
|
||||
<item index="161" class="java.lang.String" itemvalue="identify" />
|
||||
<item index="162" class="java.lang.String" itemvalue="pyflakes" />
|
||||
<item index="163" class="java.lang.String" itemvalue="asn1crypto" />
|
||||
<item index="164" class="java.lang.String" itemvalue="parso" />
|
||||
<item index="165" class="java.lang.String" itemvalue="pytest-doctestplus" />
|
||||
<item index="166" class="java.lang.String" itemvalue="kaleido" />
|
||||
<item index="167" class="java.lang.String" itemvalue="ipython" />
|
||||
<item index="168" class="java.lang.String" itemvalue="xlwt" />
|
||||
<item index="169" class="java.lang.String" itemvalue="dill" />
|
||||
<item index="170" class="java.lang.String" itemvalue="packaging" />
|
||||
<item index="171" class="java.lang.String" itemvalue="cssutils" />
|
||||
<item index="172" class="java.lang.String" itemvalue="MarkupPy" />
|
||||
<item index="173" class="java.lang.String" itemvalue="parse" />
|
||||
<item index="174" class="java.lang.String" itemvalue="JPype1" />
|
||||
<item index="175" class="java.lang.String" itemvalue="click-plugins" />
|
||||
<item index="176" class="java.lang.String" itemvalue="Flask-RESTful" />
|
||||
<item index="177" class="java.lang.String" itemvalue="feather" />
|
||||
<item index="178" class="java.lang.String" itemvalue="pickleshare" />
|
||||
<item index="179" class="java.lang.String" itemvalue="defusedxml" />
|
||||
<item index="180" class="java.lang.String" itemvalue="lml" />
|
||||
<item index="181" class="java.lang.String" itemvalue="plotly-express" />
|
||||
<item index="182" class="java.lang.String" itemvalue="pyclipper" />
|
||||
<item index="183" class="java.lang.String" itemvalue="zxing" />
|
||||
<item index="184" class="java.lang.String" itemvalue="pyasn1-modules" />
|
||||
<item index="185" class="java.lang.String" itemvalue="Pygments" />
|
||||
<item index="186" class="java.lang.String" itemvalue="fake-useragent" />
|
||||
<item index="187" class="java.lang.String" itemvalue="docutils" />
|
||||
<item index="188" class="java.lang.String" itemvalue="multiprocess" />
|
||||
<item index="189" class="java.lang.String" itemvalue="gevent" />
|
||||
<item index="190" class="java.lang.String" itemvalue="pyproj" />
|
||||
<item index="191" class="java.lang.String" itemvalue="cchardet" />
|
||||
<item index="192" class="java.lang.String" itemvalue="comtypes" />
|
||||
<item index="193" class="java.lang.String" itemvalue="django-formtools" />
|
||||
<item index="194" class="java.lang.String" itemvalue="qtconsole" />
|
||||
<item index="195" class="java.lang.String" itemvalue="pydantic" />
|
||||
<item index="196" class="java.lang.String" itemvalue="aniso8601" />
|
||||
<item index="197" class="java.lang.String" itemvalue="graphql-core" />
|
||||
<item index="198" class="java.lang.String" itemvalue="opentelemetry-api" />
|
||||
<item index="199" class="java.lang.String" itemvalue="distributed" />
|
||||
<item index="200" class="java.lang.String" itemvalue="jupyter-client" />
|
||||
<item index="201" class="java.lang.String" itemvalue="ipykernel" />
|
||||
<item index="202" class="java.lang.String" itemvalue="nbconvert" />
|
||||
<item index="203" class="java.lang.String" itemvalue="phik" />
|
||||
<item index="204" class="java.lang.String" itemvalue="attrs" />
|
||||
<item index="205" class="java.lang.String" itemvalue="psutil" />
|
||||
<item index="206" class="java.lang.String" itemvalue="jedi" />
|
||||
<item index="207" class="java.lang.String" itemvalue="platformdirs" />
|
||||
<item index="208" class="java.lang.String" itemvalue="cytoolz" />
|
||||
<item index="209" class="java.lang.String" itemvalue="oss2" />
|
||||
<item index="210" class="java.lang.String" itemvalue="Flask-Babel" />
|
||||
<item index="211" class="java.lang.String" itemvalue="msgpack" />
|
||||
<item index="212" class="java.lang.String" itemvalue="Geohash" />
|
||||
<item index="213" class="java.lang.String" itemvalue="decorator" />
|
||||
<item index="214" class="java.lang.String" itemvalue="queuelib" />
|
||||
<item index="215" class="java.lang.String" itemvalue="pandas-profiling" />
|
||||
<item index="216" class="java.lang.String" itemvalue="itemloaders" />
|
||||
<item index="217" class="java.lang.String" itemvalue="pandocfilters" />
|
||||
<item index="218" class="java.lang.String" itemvalue="backports.shutil-get-terminal-size" />
|
||||
<item index="219" class="java.lang.String" itemvalue="pycodestyle" />
|
||||
<item index="220" class="java.lang.String" itemvalue="pycosat" />
|
||||
<item index="221" class="java.lang.String" itemvalue="pyasn1" />
|
||||
<item index="222" class="java.lang.String" itemvalue="bitarray" />
|
||||
<item index="223" class="java.lang.String" itemvalue="imgaug" />
|
||||
<item index="224" class="java.lang.String" itemvalue="recursive" />
|
||||
<item index="225" class="java.lang.String" itemvalue="pyrsistent" />
|
||||
<item index="226" class="java.lang.String" itemvalue="XlsxWriter" />
|
||||
<item index="227" class="java.lang.String" itemvalue="multimethod" />
|
||||
<item index="228" class="java.lang.String" itemvalue="zipp" />
|
||||
<item index="229" class="java.lang.String" itemvalue="pkginfo" />
|
||||
<item index="230" class="java.lang.String" itemvalue="jsonpath" />
|
||||
<item index="231" class="java.lang.String" itemvalue="pyg2plot" />
|
||||
<item index="232" class="java.lang.String" itemvalue="musicdl" />
|
||||
<item index="233" class="java.lang.String" itemvalue="scapy" />
|
||||
<item index="234" class="java.lang.String" itemvalue="cached-property" />
|
||||
<item index="235" class="java.lang.String" itemvalue="itsdangerous" />
|
||||
<item index="236" class="java.lang.String" itemvalue="pyreadline" />
|
||||
<item index="237" class="java.lang.String" itemvalue="ipywidgets" />
|
||||
<item index="238" class="java.lang.String" itemvalue="scipy" />
|
||||
<item index="239" class="java.lang.String" itemvalue="sentinel" />
|
||||
<item index="240" class="java.lang.String" itemvalue="opencv-python" />
|
||||
<item index="241" class="java.lang.String" itemvalue="grainy" />
|
||||
<item index="242" class="java.lang.String" itemvalue="plotly" />
|
||||
<item index="243" class="java.lang.String" itemvalue="htmlmin" />
|
||||
<item index="244" class="java.lang.String" itemvalue="incremental" />
|
||||
<item index="245" class="java.lang.String" itemvalue="mistune" />
|
||||
<item index="246" class="java.lang.String" itemvalue="future" />
|
||||
<item index="247" class="java.lang.String" itemvalue="mpmath" />
|
||||
<item index="248" class="java.lang.String" itemvalue="jupyter-console" />
|
||||
<item index="249" class="java.lang.String" itemvalue="bokeh" />
|
||||
<item index="250" class="java.lang.String" itemvalue="cachetools" />
|
||||
<item index="251" class="java.lang.String" itemvalue="yarl" />
|
||||
<item index="252" class="java.lang.String" itemvalue="mysqlclient" />
|
||||
<item index="253" class="java.lang.String" itemvalue="Automat" />
|
||||
<item index="254" class="java.lang.String" itemvalue="html5lib" />
|
||||
<item index="255" class="java.lang.String" itemvalue="paddleocr" />
|
||||
<item index="256" class="java.lang.String" itemvalue="colorlog" />
|
||||
<item index="257" class="java.lang.String" itemvalue="missingno" />
|
||||
<item index="258" class="java.lang.String" itemvalue="python-dateutil" />
|
||||
<item index="259" class="java.lang.String" itemvalue="Brotli" />
|
||||
<item index="260" class="java.lang.String" itemvalue="pre-commit" />
|
||||
<item index="261" class="java.lang.String" itemvalue="about-time" />
|
||||
<item index="262" class="java.lang.String" itemvalue="QtPy" />
|
||||
<item index="263" class="java.lang.String" itemvalue="astroid" />
|
||||
<item index="264" class="java.lang.String" itemvalue="cycler" />
|
||||
<item index="265" class="java.lang.String" itemvalue="pytest-arraydiff" />
|
||||
<item index="266" class="java.lang.String" itemvalue="constantly" />
|
||||
<item index="267" class="java.lang.String" itemvalue="dtaledesktop" />
|
||||
<item index="268" class="java.lang.String" itemvalue="locket" />
|
||||
<item index="269" class="java.lang.String" itemvalue="heapdict" />
|
||||
<item index="270" class="java.lang.String" itemvalue="lmdb" />
|
||||
<item index="271" class="java.lang.String" itemvalue="httptools" />
|
||||
<item index="272" class="java.lang.String" itemvalue="frozenlist" />
|
||||
<item index="273" class="java.lang.String" itemvalue="appdirs" />
|
||||
<item index="274" class="java.lang.String" itemvalue="premailer" />
|
||||
<item index="275" class="java.lang.String" itemvalue="contextlib2" />
|
||||
<item index="276" class="java.lang.String" itemvalue="Faker" />
|
||||
<item index="277" class="java.lang.String" itemvalue="playwright" />
|
||||
<item index="278" class="java.lang.String" itemvalue="pip" />
|
||||
<item index="279" class="java.lang.String" itemvalue="PyDispatcher" />
|
||||
<item index="280" class="java.lang.String" itemvalue="daphne" />
|
||||
<item index="281" class="java.lang.String" itemvalue="notebook" />
|
||||
<item index="282" class="java.lang.String" itemvalue="opencv-contrib-python" />
|
||||
<item index="283" class="java.lang.String" itemvalue="xlwings" />
|
||||
<item index="284" class="java.lang.String" itemvalue="Scrapy" />
|
||||
<item index="285" class="java.lang.String" itemvalue="django-apscheduler" />
|
||||
<item index="286" class="java.lang.String" itemvalue="nodeenv" />
|
||||
<item index="287" class="java.lang.String" itemvalue="pyodbc" />
|
||||
<item index="288" class="java.lang.String" itemvalue="boto" />
|
||||
<item index="289" class="java.lang.String" itemvalue="cligj" />
|
||||
<item index="290" class="java.lang.String" itemvalue="h5py" />
|
||||
<item index="291" class="java.lang.String" itemvalue="django-import-export" />
|
||||
<item index="292" class="java.lang.String" itemvalue="kiwisolver" />
|
||||
<item index="293" class="java.lang.String" itemvalue="zope.interface" />
|
||||
<item index="294" class="java.lang.String" itemvalue="htmlparsing" />
|
||||
<item index="295" class="java.lang.String" itemvalue="pytest-openfiles" />
|
||||
<item index="296" class="java.lang.String" itemvalue="APScheduler" />
|
||||
<item index="297" class="java.lang.String" itemvalue="django-reversion" />
|
||||
<item index="298" class="java.lang.String" itemvalue="backcall" />
|
||||
<item index="299" class="java.lang.String" itemvalue="PySocks" />
|
||||
<item index="300" class="java.lang.String" itemvalue="retrying" />
|
||||
<item index="301" class="java.lang.String" itemvalue="charset-normalizer" />
|
||||
<item index="302" class="java.lang.String" itemvalue="django-ratelimit" />
|
||||
<item index="303" class="java.lang.String" itemvalue="dask" />
|
||||
<item index="304" class="java.lang.String" itemvalue="dash" />
|
||||
<item index="305" class="java.lang.String" itemvalue="pyecharts-snapshot" />
|
||||
<item index="306" class="java.lang.String" itemvalue="scikit-image" />
|
||||
<item index="307" class="java.lang.String" itemvalue="echarts-china-provinces-pypkg" />
|
||||
<item index="308" class="java.lang.String" itemvalue="jieba" />
|
||||
<item index="309" class="java.lang.String" itemvalue="async-timeout" />
|
||||
<item index="310" class="java.lang.String" itemvalue="more-itertools" />
|
||||
<item index="311" class="java.lang.String" itemvalue="cloudpickle" />
|
||||
<item index="312" class="java.lang.String" itemvalue="importlib-metadata" />
|
||||
<item index="313" class="java.lang.String" itemvalue="flake8" />
|
||||
<item index="314" class="java.lang.String" itemvalue="zict" />
|
||||
<item index="315" class="java.lang.String" itemvalue="pyecharts" />
|
||||
<item index="316" class="java.lang.String" itemvalue="jupyterlab" />
|
||||
<item index="317" class="java.lang.String" itemvalue="Cython" />
|
||||
<item index="318" class="java.lang.String" itemvalue="Flask" />
|
||||
<item index="319" class="java.lang.String" itemvalue="nose" />
|
||||
<item index="320" class="java.lang.String" itemvalue="pytest" />
|
||||
<item index="321" class="java.lang.String" itemvalue="dash-html-components" />
|
||||
<item index="322" class="java.lang.String" itemvalue="dash-daq" />
|
||||
<item index="323" class="java.lang.String" itemvalue="jupyterlab-server" />
|
||||
<item index="324" class="java.lang.String" itemvalue="nbformat" />
|
||||
<item index="325" class="java.lang.String" itemvalue="Protego" />
|
||||
<item index="326" class="java.lang.String" itemvalue="prometheus-client" />
|
||||
<item index="327" class="java.lang.String" itemvalue="Flask-Compress" />
|
||||
<item index="328" class="java.lang.String" itemvalue="lazy-object-proxy" />
|
||||
<item index="329" class="java.lang.String" itemvalue="aliyun-python-sdk-kms" />
|
||||
<item index="330" class="java.lang.String" itemvalue="colorama" />
|
||||
<item index="331" class="java.lang.String" itemvalue="ply" />
|
||||
<item index="332" class="java.lang.String" itemvalue="pyquery" />
|
||||
<item index="333" class="java.lang.String" itemvalue="ImageHash" />
|
||||
<item index="334" class="java.lang.String" itemvalue="openpyxl" />
|
||||
<item index="335" class="java.lang.String" itemvalue="tangled-up-in-unicode" />
|
||||
<item index="336" class="java.lang.String" itemvalue="traitlets" />
|
||||
<item index="337" class="java.lang.String" itemvalue="tzlocal" />
|
||||
<item index="338" class="java.lang.String" itemvalue="pywinpty" />
|
||||
<item index="339" class="java.lang.String" itemvalue="threadpoolctl" />
|
||||
<item index="340" class="java.lang.String" itemvalue="testpath" />
|
||||
<item index="341" class="java.lang.String" itemvalue="strsimpy" />
|
||||
<item index="342" class="java.lang.String" itemvalue="psycopg2" />
|
||||
<item index="343" class="java.lang.String" itemvalue="spyder-kernels" />
|
||||
<item index="344" class="java.lang.String" itemvalue="setuptools" />
|
||||
<item index="345" class="java.lang.String" itemvalue="mkl-random" />
|
||||
<item index="346" class="java.lang.String" itemvalue="demjson" />
|
||||
<item index="347" class="java.lang.String" itemvalue="snowballstemmer" />
|
||||
<item index="348" class="java.lang.String" itemvalue="graphene-django" />
|
||||
<item index="349" class="java.lang.String" itemvalue="tables" />
|
||||
<item index="350" class="java.lang.String" itemvalue="conda-verify" />
|
||||
<item index="351" class="java.lang.String" itemvalue="starlette" />
|
||||
<item index="352" class="java.lang.String" itemvalue="soupsieve" />
|
||||
<item index="353" class="java.lang.String" itemvalue="anaconda-navigator" />
|
||||
<item index="354" class="java.lang.String" itemvalue="uvicorn" />
|
||||
<item index="355" class="java.lang.String" itemvalue="xadmin" />
|
||||
<item index="356" class="java.lang.String" itemvalue="sympy" />
|
||||
<item index="357" class="java.lang.String" itemvalue="sphinxcontrib-websupport" />
|
||||
<item index="358" class="java.lang.String" itemvalue="pywin32" />
|
||||
<item index="359" class="java.lang.String" itemvalue="navigator-updater" />
|
||||
<item index="360" class="java.lang.String" itemvalue="service-identity" />
|
||||
<item index="361" class="java.lang.String" itemvalue="terminado" />
|
||||
<item index="362" class="java.lang.String" itemvalue="wincertstore" />
|
||||
<item index="363" class="java.lang.String" itemvalue="tsod" />
|
||||
<item index="364" class="java.lang.String" itemvalue="win-unicode-console" />
|
||||
<item index="365" class="java.lang.String" itemvalue="aliyunsdkcore" />
|
||||
<item index="366" class="java.lang.String" itemvalue="Werkzeug" />
|
||||
<item index="367" class="java.lang.String" itemvalue="anaconda-project" />
|
||||
<item index="368" class="java.lang.String" itemvalue="tablib" />
|
||||
<item index="369" class="java.lang.String" itemvalue="shellcheck-py" />
|
||||
<item index="370" class="java.lang.String" itemvalue="wrapt" />
|
||||
<item index="371" class="java.lang.String" itemvalue="menuinst" />
|
||||
<item index="372" class="java.lang.String" itemvalue="toapi" />
|
||||
<item index="373" class="java.lang.String" itemvalue="conda-package-handling" />
|
||||
<item index="374" class="java.lang.String" itemvalue="simplejson" />
|
||||
<item index="375" class="java.lang.String" itemvalue="watchgod" />
|
||||
<item index="376" class="java.lang.String" itemvalue="anaconda-client" />
|
||||
<item index="377" class="java.lang.String" itemvalue="widgetsnbextension" />
|
||||
<item index="378" class="java.lang.String" itemvalue="virtualenv" />
|
||||
<item index="379" class="java.lang.String" itemvalue="alive-progress" />
|
||||
<item index="380" class="java.lang.String" itemvalue="diff-match-patch" />
|
||||
<item index="381" class="java.lang.String" itemvalue="pycurl" />
|
||||
<item index="382" class="java.lang.String" itemvalue="SQLAlchemy" />
|
||||
<item index="383" class="java.lang.String" itemvalue="tblib" />
|
||||
<item index="384" class="java.lang.String" itemvalue="ariadne" />
|
||||
<item index="385" class="java.lang.String" itemvalue="wget" />
|
||||
<item index="386" class="java.lang.String" itemvalue="wcwidth" />
|
||||
<item index="387" class="java.lang.String" itemvalue="w3lib" />
|
||||
<item index="388" class="java.lang.String" itemvalue="simplegeneric" />
|
||||
<item index="389" class="java.lang.String" itemvalue="squarify" />
|
||||
<item index="390" class="java.lang.String" itemvalue="mkl-fft" />
|
||||
<item index="391" class="java.lang.String" itemvalue="strawberry-graphql-django" />
|
||||
<item index="392" class="java.lang.String" itemvalue="alabaster" />
|
||||
<item index="393" class="java.lang.String" itemvalue="seaborn" />
|
||||
<item index="394" class="java.lang.String" itemvalue="seqeval" />
|
||||
<item index="395" class="java.lang.String" itemvalue="tls-sig-api-v2" />
|
||||
<item index="396" class="java.lang.String" itemvalue="tenacity" />
|
||||
<item index="397" class="java.lang.String" itemvalue="txaio" />
|
||||
<item index="398" class="java.lang.String" itemvalue="visions" />
|
||||
<item index="399" class="java.lang.String" itemvalue="graphene-django-extras" />
|
||||
<item index="400" class="java.lang.String" itemvalue="visualdl" />
|
||||
<item index="401" class="java.lang.String" itemvalue="websockets" />
|
||||
<item index="402" class="java.lang.String" itemvalue="sortedcollections" />
|
||||
<item index="403" class="java.lang.String" itemvalue="tornado" />
|
||||
<item index="404" class="java.lang.String" itemvalue="snapshot-phantomjs" />
|
||||
<item index="405" class="java.lang.String" itemvalue="Shapely" />
|
||||
<item index="406" class="java.lang.String" itemvalue="wheel" />
|
||||
<item index="407" class="java.lang.String" itemvalue="text-unidecode" />
|
||||
<item index="408" class="java.lang.String" itemvalue="conda-build" />
|
||||
<item index="409" class="java.lang.String" itemvalue="GDAL" />
|
||||
<item index="410" class="java.lang.String" itemvalue="python-multipart" />
|
||||
<item index="411" class="java.lang.String" itemvalue="toml" />
|
||||
<item index="412" class="java.lang.String" itemvalue="singledispatch" />
|
||||
<item index="413" class="java.lang.String" itemvalue="sortedcontainers" />
|
||||
<item index="414" class="java.lang.String" itemvalue="tqdm" />
|
||||
<item index="415" class="java.lang.String" itemvalue="win-inet-pton" />
|
||||
<item index="416" class="java.lang.String" itemvalue="fastapi" />
|
||||
<item index="417" class="java.lang.String" itemvalue="strawberry-graphql" />
|
||||
<item index="418" class="java.lang.String" itemvalue="toolz" />
|
||||
<item index="419" class="java.lang.String" itemvalue="Sphinx" />
|
||||
<item index="420" class="java.lang.String" itemvalue="spyder" />
|
||||
<item index="421" class="java.lang.String" itemvalue="typing_extensions" />
|
||||
<item index="422" class="java.lang.String" itemvalue="statsmodels" />
|
||||
<item index="423" class="java.lang.String" itemvalue="aiohttp" />
|
||||
<item index="424" class="java.lang.String" itemvalue="gopup" />
|
||||
<item index="425" class="java.lang.String" itemvalue="aiosignal" />
|
||||
<item index="426" class="java.lang.String" itemvalue="unicodecsv" />
|
||||
<item index="427" class="java.lang.String" itemvalue="webencodings" />
|
||||
<item index="428" class="java.lang.String" itemvalue="Twisted" />
|
||||
<item index="429" class="java.lang.String" itemvalue="channels-redis" />
|
||||
<item index="430" class="java.lang.String" itemvalue="fsspec" />
|
||||
<item index="431" class="java.lang.String" itemvalue="fonttools" />
|
||||
<item index="432" class="java.lang.String" itemvalue="tifffile" />
|
||||
<item index="433" class="java.lang.String" itemvalue="tritonclient" />
|
||||
<item index="434" class="java.lang.String" itemvalue="asgi-redis" />
|
||||
<item index="435" class="java.lang.String" itemvalue="twisted-iocpsupport" />
|
||||
<item index="436" class="java.lang.String" itemvalue="x2paddle" />
|
||||
<item index="437" class="java.lang.String" itemvalue="redis" />
|
||||
<item index="438" class="java.lang.String" itemvalue="contourpy" />
|
||||
</list>
|
||||
</value>
|
||||
</option>
|
||||
</inspection_tool>
|
||||
<inspection_tool class="PyUnresolvedReferencesInspection" enabled="true" level="WARNING" enabled_by_default="true">
|
||||
<option name="ignoredIdentifiers">
|
||||
<list>
|
||||
<option value="core.utility.camera_model" />
|
||||
</list>
|
||||
</option>
|
||||
</inspection_tool>
|
||||
<inspection_tool class="Stylelint" enabled="true" level="ERROR" enabled_by_default="true" />
|
||||
</profile>
|
||||
</component>
|
|
@ -0,0 +1,6 @@
|
|||
<component name="InspectionProjectProfileManager">
|
||||
<settings>
|
||||
<option name="USE_PROJECT_PROFILE" value="false" />
|
||||
<version value="1.0" />
|
||||
</settings>
|
||||
</component>
|
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.7 (billiard)" project-jdk-type="Python SDK" />
|
||||
</project>
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/billiard.iml" filepath="$PROJECT_DIR$/.idea/billiard.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
107
app.py
107
app.py
|
@ -1,9 +1,13 @@
|
|||
import cv2
|
||||
import json
|
||||
import time
|
||||
import torch
|
||||
import requests
|
||||
import threading
|
||||
import numpy as np
|
||||
import supervision as sv
|
||||
|
||||
from datetime import datetime
|
||||
from ultralytics import YOLO
|
||||
from flask import Flask,request,Response
|
||||
from multiprocessing import Process, Event
|
||||
|
@ -39,33 +43,78 @@ def stop(id):
|
|||
|
||||
@app.route('/show',methods=['POST'])
|
||||
def show():
|
||||
print(request.data)
|
||||
# print(request.json)
|
||||
data = request.json["content"]
|
||||
info(data)
|
||||
return 'ok'
|
||||
|
||||
def info(data):
|
||||
balls = data["balls"]
|
||||
table = data["table"]
|
||||
text = f"table:{table:>3} "
|
||||
for i in range(16):
|
||||
ball = "#" if "ball"+str(i) in balls else " "
|
||||
text += f"| {i} : {ball} "
|
||||
print(datetime.now().strftime('%Y-%m-%d %H:%M:%S'),text)
|
||||
|
||||
def worker(id,source,region=None,stream=False):
|
||||
if region == None:
|
||||
region = 10
|
||||
else:
|
||||
region = int(region)
|
||||
print("start loading model...",id,source,region)
|
||||
model = YOLO('./best.pt')
|
||||
print("start loaded model!!!")
|
||||
balls = {}
|
||||
count = 0
|
||||
print(source)
|
||||
delay = 0
|
||||
bgn = 0
|
||||
try:
|
||||
cap = cv2.VideoCapture(source)
|
||||
if not cap.isOpened():
|
||||
print("Error opening video stream.")
|
||||
if source.endswith(".mp4"):
|
||||
fps = cap.get(cv2.CAP_PROP_FPS)
|
||||
delay = 1000.0 / fps
|
||||
print("start video stream... ", fps, delay)
|
||||
while True:
|
||||
use = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
|
||||
if bgn != 0 and delay != 0 and time.time()*1000 - bgn < 2*delay:
|
||||
print("sleep",2*delay - (time.time()*1000 - bgn))
|
||||
time.sleep((2*delay - (time.time()*1000 - bgn))/1000)
|
||||
bgn = (time.time()*1000)
|
||||
ret, frame = cap.read()
|
||||
del(ret)
|
||||
del(frame)
|
||||
ret, frame = cap.read()
|
||||
use += " read:"+str((time.time()*1000) - bgn)
|
||||
if not ret:
|
||||
print("Error read video stream.")
|
||||
break
|
||||
result = model.track(frame,show=False,stream=False,persist=True,device=int(id)%4)
|
||||
cap = cv2.VideoCapture(source)
|
||||
if not cap.isOpened():
|
||||
print("Error opening video stream..")
|
||||
cap = cv2.VideoCapture(source)
|
||||
time.sleep(1)
|
||||
if not cap.isOpened():
|
||||
print("Error opening video stream...")
|
||||
time.sleep(3)
|
||||
if not cap.isOpened():
|
||||
print("Error opening video stream....")
|
||||
break
|
||||
continue
|
||||
result = model.track(frame,device=int(id)%4,tracker='botsort.yaml')
|
||||
use += " track:"+str((time.time()*1000) - bgn)
|
||||
del(ret)
|
||||
del(frame)
|
||||
result = result[0]
|
||||
detections = sv.Detections.from_yolov8(result)
|
||||
if result.boxes.id is not None:
|
||||
detections.tracker_id = result.boxes.id.cpu().numpy().astype(int)
|
||||
detections = detections[(detections.tracker_id != None)]
|
||||
else:
|
||||
detections.tracker_id = np.array([])
|
||||
detections.conf = np.array([])
|
||||
detections.xyxy=np.empty((0, 4), dtype=np.float32)
|
||||
# detections = detections[(detections.tracker_id != None)]
|
||||
|
||||
count += 1
|
||||
names = {}
|
||||
|
@ -84,15 +133,21 @@ def worker(id,source,region=None,stream=False):
|
|||
balls[name] = ball
|
||||
names[name] = True
|
||||
names = {}
|
||||
use += " names:"+str((time.time()*1000) - bgn)
|
||||
if count < region:
|
||||
continue
|
||||
json_data = json.dumps({"table":id,"balls":balls,"time":int(time.time()*1000)})
|
||||
data = {"table":id,"balls":balls,"time":int(time.time()*1000)}
|
||||
info(data)
|
||||
json_data = json.dumps(data)
|
||||
balls = {}
|
||||
count = 0
|
||||
use += " dump:"+str((time.time()*1000) - bgn)
|
||||
if not stream:
|
||||
yield json_data
|
||||
else:
|
||||
yield f"data: {json_data}\n\n"
|
||||
use += " yield:"+str((time.time()*1000) - bgn)
|
||||
print("model.track",use)
|
||||
except GeneratorExit:
|
||||
print("Client disconnected at", time.ctime())
|
||||
|
||||
|
@ -102,21 +157,47 @@ def workerloop(stop_event,id,source,target=None,region=None):
|
|||
try:
|
||||
gen = worker(id,source,region)
|
||||
for data in gen:
|
||||
use = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
|
||||
bgn = (time.time()*1000)
|
||||
if stop_event.is_set():
|
||||
break
|
||||
json_data = json.loads(data)
|
||||
# 设置请求头
|
||||
headers = {
|
||||
"Content-Type": "application/json"
|
||||
}
|
||||
use += " loads:"+str((time.time()*1000) - bgn)
|
||||
text = json.dumps({"content":json_data})
|
||||
print(text)
|
||||
response = requests.post(target, data=text, headers=headers)
|
||||
use += " dumps:"+str((time.time()*1000) - bgn)
|
||||
|
||||
print(response.text)
|
||||
# 创建并启动线程
|
||||
thread = threading.Thread(target=post_request, args=(target, text))
|
||||
thread.start()
|
||||
|
||||
use += " post:"+str((time.time()*1000) - bgn)
|
||||
print("workerloop",use)
|
||||
finally:
|
||||
gen.close()
|
||||
|
||||
def post_request(url, data):
|
||||
use = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
|
||||
bgn = (time.time()*1000)
|
||||
headers = {
|
||||
"Content-Type": "application/json"
|
||||
}
|
||||
response = requests.post(url, data=data,headers=headers)
|
||||
use += " post:"+str((time.time()*1000) - bgn ) +"ms"
|
||||
print("post_request",use,response.text)
|
||||
|
||||
# import pstats
|
||||
# import cProfile
|
||||
# def test_function():
|
||||
# url = "rtmp://rtmp03open.ys7.com:1935/v3/openlive/L05874022_1_1?expire=1726389273&id=625006970167889920&t=2c7f371063e4ad672cb7a7c34b2a236e9ff37b02052f818c9c4fe7ae9632cd0e&ev=100"
|
||||
# gen = worker(0,url,5)
|
||||
# count = 0
|
||||
# for data in gen:
|
||||
# count += 1
|
||||
# if count > 10:
|
||||
# break
|
||||
|
||||
if __name__ == '__main__':
|
||||
# cProfile.run('test_function()', 'test_function.profile')
|
||||
# p = pstats.Stats('test_function.profile')
|
||||
# p.sort_stats('cumulative').print_stats(100) # Top 10 by cumulative time
|
||||
app.run("0.0.0.0",threaded=True)
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
# Ultralytics YOLO 🚀, AGPL-3.0 license
|
||||
# Default YOLO tracker settings for BoT-SORT tracker https://github.com/NirAharon/BoT-SORT
|
||||
|
||||
tracker_type: botsort # tracker type, ['botsort', 'bytetrack']
|
||||
track_high_thresh: 0.3 # threshold for the first association
|
||||
track_low_thresh: 0.1 # threshold for the second association
|
||||
new_track_thresh: 0.5 # threshold for init new track if the detection does not match any tracks
|
||||
track_buffer: 10 # buffer to calculate the time when to remove tracks
|
||||
match_thresh: 0.8 # threshold for matching tracks
|
||||
# min_box_area: 10 # threshold for min box areas(for tracker evaluation, not used for now)
|
||||
# mot20: False # for tracker evaluation(not used for now)
|
||||
|
||||
# BoT-SORT settings
|
||||
gmc_method: sparseOptFlow # method of global motion compensation
|
||||
# ReID model related thresh (not supported yet)
|
||||
proximity_thresh: 0.1
|
||||
appearance_thresh: 0.25
|
||||
with_reid: False
|
|
@ -12,6 +12,8 @@ services:
|
|||
runtime: nvidia
|
||||
environment:
|
||||
NVIDIA_VISIBLE_DEVICES: all
|
||||
PYTHONUNBUFFERED: 1
|
||||
# OPENCV_FFMPEG_READ_ATTEMPTS: 16384
|
||||
logging:
|
||||
driver: "json-file"
|
||||
options:
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
import cv2
|
||||
import time
|
||||
|
||||
# 获取 ezopen 协议的 URL
|
||||
url = "rtmp://rtmp03open.ys7.com:1935/v3/openlive/L05874022_1_1?expire=1726487667&id=625419662355599360&t=228dca5d37b6bead201e80cca3fc5fe74140242278e4eb51a99bcce593cae027&ev=100"
|
||||
|
||||
# 创建 VideoCapture 对象
|
||||
cap = cv2.VideoCapture(url)
|
||||
|
||||
cv2.namedWindow("Video", cv2.WINDOW_NORMAL) # Create a named window
|
||||
cv2.resizeWindow("Video", 640, 384) # Resize this window
|
||||
|
||||
start_time = time.time()
|
||||
count = 0
|
||||
|
||||
# 获取视频帧
|
||||
while True:
|
||||
ret, frame = cap.read()
|
||||
if time.time() - start_time < 1: # 循环运行直到1秒过去
|
||||
count += 1
|
||||
else:
|
||||
print(count)
|
||||
start_time = time.time()
|
||||
count = 0
|
||||
|
||||
# print(ret)
|
||||
if not ret:
|
||||
print("Error read video stream.")
|
||||
break
|
||||
# 显示视频帧
|
||||
cv2.imshow("Video", frame)
|
||||
# print("0000000000000",ret)
|
||||
# 等待用户按下任意键退出
|
||||
key = cv2.waitKey(1)
|
||||
if key == 27:
|
||||
break
|
||||
|
||||
# 释放资源
|
||||
cap.release()
|
||||
cv2.destroyAllWindows()
|
|
@ -0,0 +1,245 @@
|
|||
import cv2
|
||||
import json
|
||||
import time
|
||||
import logging
|
||||
import threading
|
||||
import requests
|
||||
import supervision as sv
|
||||
|
||||
from datetime import datetime
|
||||
from ultralytics import YOLO
|
||||
from flask import Flask,request,Response
|
||||
from multiprocessing import Process, Event
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
@app.route('/show',methods=['POST'])
|
||||
def show():
|
||||
# print(request.json)
|
||||
data = request.json["content"]
|
||||
balls = data["balls"]
|
||||
table = data["table"]
|
||||
text = f"table:{table:>3} "
|
||||
for i in range(16):
|
||||
ball = "#" if "ball"+str(i) in balls else " "
|
||||
text += f"| {i} : {ball} "
|
||||
print(datetime.now().strftime('%Y-%m-%d %H:%M:%S'),text)
|
||||
return 'ok'
|
||||
import re
|
||||
@app.route('/mj',methods=['POST'])
|
||||
def mj():
|
||||
print(request.json)
|
||||
if request.json["progress"] == "100%":
|
||||
print(request.json["imageUrl"])
|
||||
sendmsg(request.json["imageUrl"])
|
||||
download_image(request.json["imageUrl"], "MJ", request.json["state"])
|
||||
return 'ok'
|
||||
|
||||
@app.route('/cq',methods=['POST'])
|
||||
def cq():
|
||||
print(request.json)
|
||||
if request.json["post_type"] != "message":
|
||||
return 'ok'
|
||||
if request.json["message_type"] != "group":
|
||||
return 'ok'
|
||||
if request.json["group_id"] != 116277572:
|
||||
return 'ok'
|
||||
# if request.json["user_id"] != 2132960:
|
||||
# return 'ok'
|
||||
|
||||
thread = threading.Thread(target=handle, args=(request.json,))
|
||||
thread.start()
|
||||
return "ok"
|
||||
|
||||
def handle(data):
|
||||
print(data['raw_message'])
|
||||
|
||||
# 正则表达式来匹配URL
|
||||
url_pattern = re.compile(r'url=(.*?)\]')
|
||||
|
||||
# 使用findall来找到所有的URL
|
||||
urls = re.findall(url_pattern, data['raw_message'])
|
||||
|
||||
result = re.sub(r'\[.*?\]', '', data['raw_message'])
|
||||
result = result.replace('\r\n', '')
|
||||
|
||||
name = data["sender"]["card"] or data["sender"]["nickname"]
|
||||
|
||||
base64Array = []
|
||||
# 输出找到的URL
|
||||
for url in urls:
|
||||
print(url)
|
||||
|
||||
download_image(url, "QQ", name)
|
||||
# 从URL下载图片
|
||||
response = requests.get(url)
|
||||
response.raise_for_status() # 如果请求失败,此处将引发异常
|
||||
|
||||
# 将图片数据转换为Base64编码的字节数组
|
||||
image_base64_bytes = base64.b64encode(response.content)
|
||||
|
||||
# 如果您需要将其转换为字符串,您可以使用.decode('utf-8')将字节数组转换为字符串
|
||||
image_base64_str = image_base64_bytes.decode('utf-8')
|
||||
|
||||
# 打印Base64编码的字节数组
|
||||
# print(image_base64_bytes)
|
||||
base64Array.append('data:image/jpeg;base64,'+image_base64_str)
|
||||
|
||||
if len(base64Array) == 0:
|
||||
return 'ok'
|
||||
prompt = 'game assets,game ui,animal,flower,plant,forest,cute,baby,magical,spirit,fairy,elf,glowing light,anime style,seeming very happy,from above,ultra detailed,soft,on white background'
|
||||
if result != '':
|
||||
prompt = result
|
||||
# 示例调用
|
||||
params = {
|
||||
'base64Array':base64Array,
|
||||
'notifyHook': 'http://hk.luanhailiang.cn:5000/mj',
|
||||
'prompt': prompt,
|
||||
'state': name
|
||||
}
|
||||
|
||||
response = imagine(params)
|
||||
print(response.json())
|
||||
time.sleep(3)
|
||||
params['prompt'] = prompt + " --iw 2 --niji 5"
|
||||
params['state'] = name+"_niji"
|
||||
response = imagine(params)
|
||||
print(response.json())
|
||||
time.sleep(3)
|
||||
params['prompt'] = prompt + " --iw 2 --style raw"
|
||||
params['state'] = name+"_raw"
|
||||
response = imagine(params)
|
||||
print(response.json())
|
||||
|
||||
return 'ok'
|
||||
|
||||
def download_image(url, t, name):
|
||||
"""
|
||||
从指定URL下载图片并保存到本地文件。
|
||||
|
||||
:param url: 图片的URL。
|
||||
:param local_filename: 要保存图片的本地文件名。
|
||||
"""
|
||||
|
||||
local_filename = f"y:\美术\参考收集\{t}\{datetime.now().strftime('%Y%m%d%H%M%S')}_{name}"
|
||||
response = requests.get(url)
|
||||
if response.status_code == 200: # HTTP状态码200表示请求成功
|
||||
# 获取Content-Type响应头
|
||||
content_type = response.headers['Content-Type']
|
||||
# 判断图片格式
|
||||
ext = ""
|
||||
if 'jpeg' in content_type or 'jpg' in content_type:
|
||||
ext = '.jpg'
|
||||
print('The image is in JPEG format.')
|
||||
elif 'png' in content_type:
|
||||
ext = '.png'
|
||||
print('The image is in PNG format.')
|
||||
elif 'gif' in content_type:
|
||||
ext = '.gif'
|
||||
print('The image is in GIF format.')
|
||||
elif 'webp' in content_type:
|
||||
ext = '.webp'
|
||||
print('The image is in WEBP format.')
|
||||
else:
|
||||
ext = '.png'
|
||||
print(f'Unknown image format: {content_type}')
|
||||
local_filename += ext
|
||||
with open(local_filename, 'wb') as f:
|
||||
f.write(response.content)
|
||||
print(f"Image successfully downloaded to {local_filename}")
|
||||
else:
|
||||
print(f"Error downloading image, HTTP status code: {response.status_code}")
|
||||
|
||||
|
||||
import base64
|
||||
import requests
|
||||
|
||||
|
||||
def imagine(params):
|
||||
"""
|
||||
提交Imagine任务
|
||||
|
||||
:param params: imagineDTO,一个字典,包含以下键:
|
||||
- base64Array: 垫图base64数组
|
||||
- notifyHook: 回调地址, 为空时使用全局notifyHook
|
||||
- prompt: 提示词
|
||||
- state: 自定义参数
|
||||
:return: 返回服务器的响应
|
||||
"""
|
||||
# API端点
|
||||
url = 'http://127.0.0.1:8080/mj/submit/imagine'
|
||||
|
||||
# 发送POST请求
|
||||
response = requests.post(url, json=params)
|
||||
|
||||
# 如果需要,处理响应(例如,检查响应状态,解析响应主体等)
|
||||
|
||||
return response
|
||||
|
||||
|
||||
def sendmsg(url):
|
||||
# 设置 go-cqhttp 服务的 URL 和端口
|
||||
api_url = 'http://localhost:5700/send_msg'
|
||||
|
||||
# 设置要发送的消息参数
|
||||
data = {
|
||||
'group_id': 5464741, # 接收消息的用户的 QQ 号
|
||||
'message_type': 'group', # 消息类型
|
||||
'message': f'[CQ:image,file={url}]' # 消息内容,使用 CQ码 格式
|
||||
}
|
||||
|
||||
# 发送 POST 请求到 go-cqhttp 服务
|
||||
response = requests.post(api_url, data=data)
|
||||
|
||||
# 输出响应
|
||||
print(response.json())
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
# # 这是包含URL的示例文本
|
||||
# text = '[CQ:image,file=42c93be3dbe10bfa79ad93ce1baed561.image,subType=1,url=https://gchat.qpic.cn/gchatpic_new/1183464602/691534145-2408237736-42C93BE3DBE10BFA79AD93CE1BAED561/0?term=2&is_origin=0][CQ:image,file=42c93be3dbe10bfa79ad93ce1baed561.image,subType=1,url=https://gchat.qpic.cn/gchatpic_new/1183464602/691534145-2408237736-42C93BE3DBE10BFA79AD93CE1BAED561/0?term=2&is_origin=0]'
|
||||
|
||||
# # 正则表达式来匹配URL
|
||||
# url_pattern = re.compile(r'url=(.*?)\]')
|
||||
|
||||
|
||||
|
||||
# # 使用findall来找到所有的URL
|
||||
# urls = re.findall(url_pattern, text)
|
||||
|
||||
# # 输出找到的URL
|
||||
# for url in urls:
|
||||
# print(url)
|
||||
|
||||
|
||||
|
||||
# # 从URL下载图片
|
||||
# response = requests.get(url)
|
||||
# response.raise_for_status() # 如果请求失败,此处将引发异常
|
||||
|
||||
# # 将图片数据转换为Base64编码的字节数组
|
||||
# image_base64_bytes = base64.b64encode(response.content)
|
||||
|
||||
# # 如果您需要将其转换为字符串,您可以使用.decode('utf-8')将字节数组转换为字符串
|
||||
# image_base64_str = image_base64_bytes.decode('utf-8')
|
||||
|
||||
# # 打印Base64编码的字节数组
|
||||
# # print(image_base64_bytes)
|
||||
|
||||
# # 示例调用
|
||||
# params = {
|
||||
# 'base64Array': ['data:image/jpeg;base64,'+image_base64_str],
|
||||
# 'notifyHook': 'http://hk.luanhailiang.cn:5000/mj',
|
||||
# 'prompt': 'character design, game assets, game ui, cute, soft',
|
||||
# 'state': ''
|
||||
# }
|
||||
|
||||
# response = imagine(params)
|
||||
# print(response.json())
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
app.logger.setLevel(logging.ERROR)
|
||||
app.run("0.0.0.0",port=8000,threaded=True)
|
9
test.py
9
test.py
|
@ -3,9 +3,10 @@ from urllib import parse
|
|||
from ultralytics import YOLO
|
||||
|
||||
# Configure the tracking parameters and run the tracker
|
||||
model = YOLO('best.pt')
|
||||
source2 = "rtmp://rtmp03open.ys7.com:1935/v3/openlive/L05874022_1_1?expire=1726487667&id=625419662355599360&t=228dca5d37b6bead201e80cca3fc5fe74140242278e4eb51a99bcce593cae027&ev=100"
|
||||
# model = YOLO('best.pt')
|
||||
# source2 = "rtmp://rtmp03open.ys7.com:1935/v3/openlive/L05874022_1_1?expire=1726487667&id=625419662355599360&t=228dca5d37b6bead201e80cca3fc5fe74140242278e4eb51a99bcce593cae027&ev=100"
|
||||
# source = parse.urlencode({"source": source2})
|
||||
# source = "./videos/123.mp4"
|
||||
results = model.track(source=source2, conf=0.3, iou=0.5, show=True)
|
||||
|
||||
# results = model.track(source=source2, conf=0.3, iou=0.5, show=True)
|
||||
model = YOLO('best.pt')
|
||||
results = model.track(source="./videos/123.mp4", tracker='botsort.yaml', show=True)
|
||||
|
|
Binary file not shown.
Loading…
Reference in New Issue