pybaseutils 2.2.20__tar.gz → 2.2.21__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/PKG-INFO +1 -1
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/__init__.py +1 -1
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/file_utils.py +6 -5
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/font_style/__init__.py +1 -1
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/font_utils.py +19 -5
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/image_utils.py +23 -0
- pybaseutils-2.2.21/pybaseutils/web/demo.py +13 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils.egg-info/PKG-INFO +1 -1
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils.egg-info/SOURCES.txt +1 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/aije/demo_labelme_crop.py +50 -14
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/aije/demo_video_aije.py +3 -2
- pybaseutils-2.2.20/test_py/demo1.py → pybaseutils-2.2.21/test_py/audio_demo1.py +2 -1
- pybaseutils-2.2.21/test_py/demo1.py +14 -0
- pybaseutils-2.2.20/pybaseutils/web/demo.py +0 -85
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/LICENCE +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/README.md +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/audio/__init__.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/audio/audio_utils.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/audio/pyaudio_utils.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/audio/vad_utils.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/base64_utils.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/batch_utils.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/build_utils/__init__.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/build_utils/cython_utils.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/build_utils/pyarmor_utils.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/cluster/__init__.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/cluster/kmean.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/cluster/maxmin_distance.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/cluster/similarity.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/color_utils.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/config_utils.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/converter/__init__.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/converter/build_coco.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/converter/build_cvat.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/converter/build_labelme.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/converter/build_voc.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/converter/concat_coco.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/converter/convert_coco2labelme.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/converter/convert_coco2voc.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/converter/convert_cvat2labelme.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/converter/convert_labelme2coco.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/converter/convert_labelme2cvat.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/converter/convert_labelme2voc.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/converter/convert_labelme2yolo.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/converter/convert_voc2coco.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/converter/convert_voc2labelme.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/converter/convert_voc2voc.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/converter/convert_voc2yolo.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/converter/convert_yolo2voc.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/coords_utils.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/cvutils/__init__.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/cvutils/corner_utils.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/cvutils/monitor.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/cvutils/mouse_utils.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/cvutils/nms_utils.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/cvutils/video_utils.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/dataloader/__init__.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/dataloader/balanced_classes.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/dataloader/base_coco.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/dataloader/base_dataset.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/dataloader/data_resample.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/dataloader/parser_coco_det.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/dataloader/parser_coco_ins.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/dataloader/parser_coco_kps.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/dataloader/parser_image_folder.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/dataloader/parser_image_text.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/dataloader/parser_labelme.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/dataloader/parser_voc.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/dataloader/parser_yolo.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/dataloader/voc_seg_utils.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/filter/QueueTable.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/filter/__init__.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/filter/demo.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/filter/kalman_filter.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/filter/mean_filter.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/filter/motion_filter.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/filter/pose_filter.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/geometry_tools.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/heatmap_utils.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/http_utils.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/json_utils.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/log.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/log_utils.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/metrics/__init__.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/metrics/accuracy.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/metrics/average_meter.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/metrics/class_report.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/metrics/plot_pr.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/metrics/plot_roc.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/numpy_utils.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/pandas_utils.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/plot_utils.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/pose/__init__.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/pose/bones_utils.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/pose/human_pose.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/pose/pose_utils.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/pycpp/__init__.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/pycpp/demo.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/pycpp/main.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/server/__init__.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/server/apm_server.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/setup_config.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/singleton_utils.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/text_utils.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/thread_utils.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/time_utils.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/tracemalloc_utils.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/tracemalloc_utils2.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/tracking/QueueTable.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/tracking/__init__.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/tracking/demo.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/tracking/kalman_filter.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/tracking/mean_filter.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/tracking/motion_filter.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/tracking/pose_filter.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/transforms/__init__.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/transforms/affine_transform.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/transforms/augment_utils.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/transforms/face_alignment.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/transforms/transform_utils.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/web/__init__.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/web/app_flask_image.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/web/app_stweb_image.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/web/app_webio_image.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/word_utils.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/worker.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils/yaml_utils.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils.egg-info/dependency_links.txt +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils.egg-info/not-zip-safe +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/pybaseutils.egg-info/top_level.txt +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/setup.cfg +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/setup.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/Image_enhance/__init__.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/Image_enhance/dmeo01.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/WebCrawler/__init__.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/WebCrawler/search_image.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/WebCrawler/search_image_for_baidu.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/__init__.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/aije/__init__.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/aije/action_dataset.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/aije/build_cython.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/aije/build_pyarmor.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/aije/build_service.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/aije/convert_cvat2labelme.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/aije/convert_labelme2coco.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/aije/convert_labelme2voc.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/aije/copy_move.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/aije/demo_labelme_shock.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/aije/demo_voc_crop.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/aije/demo_voc_vis.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/aije/get_pair_data.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/aije/video_convertor.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/audio/__init__.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/audio/demo.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/audio/main.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/audio/main_read.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/audio/segment.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/audio/speechbrain_asr_indoor_prod.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/audio/speechbrain_demo.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/camera/__init__.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/camera/demo.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/captcha/__init__.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/captcha/demo.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/class_attribute.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/class_names.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/converter/AffectNet.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/converter/AsianMovie.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/converter/BITVehicle2voc.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/converter/BSTLD2voc.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/converter/CCPD.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/converter/CCPD2voc.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/converter/FL3D_dataset.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/converter/FreiHAND2coco.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/converter/MTFL2voc.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/converter/TT100K.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/converter/WaterMeters1.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/converter/WaterMeters2.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/converter/__init__.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/converter/concat_coco.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/converter/convert_coco2voc.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/converter/convert_cvat2labelme.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/converter/convert_gesture2hand.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/converter/convert_labelme2coco.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/converter/convert_labelme2cvat.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/converter/convert_labelme2voc.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/converter/convert_voc2labelme.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/converter/fatigue_driving.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/converter/fdd_dataset.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/converter/get_pair_data.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/converter/handpose2coco.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/converter/insects_for_aichallenger.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/converter/tt100k_utils.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/converter/ua_detrac2voc.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/converter/ucf101_dataset.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/converter/voc_sbd2labelme.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/cython_build/__init__.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/cython_build/build_cython.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/cython_build/build_pyarmor.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/cython_build/cryptography_demo.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/cython_build/fun_sum.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/cython_build/main.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/cython_build/model_des_enctypt.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/cython_build/model_enctypt.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/date_dataset.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/date_demo.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/datedataset_bk.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/demo2.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/demo3.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/demo_async_await1.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/demo_async_await2.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/demo_coco_vis.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/demo_copy_files.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/demo_copy_files_for_voc.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/demo_ffmpy.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/demo_for_pair_file.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/demo_for_polygon.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/demo_for_trt.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/demo_get_file_label.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/demo_get_file_list.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/demo_gif.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/demo_gif_video.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/demo_image_crop.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/demo_kpts.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/demo_labelme.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/demo_labelme_crop.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/demo_lableme_vis.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/demo_metrics.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/demo_mouse.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/demo_nii.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/demo_pandas.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/demo_plot.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/demo_rename.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/demo_standard_image .py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/demo_standard_video .py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/demo_taichi.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/demo_video.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/demo_video_crop.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/demo_voc_crop.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/demo_voc_vis.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/demo_word_similar.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/demo_worker1.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/demo_worker2.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/detector/__init__.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/detector/demo.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/detector/detect_face_person.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/detector/predet_labelme.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/edit_distance/__init__.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/edit_distance/demo.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/edit_distance/text_matching.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/flask_demo/__init__.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/flask_demo/app.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/flask_demo/utils/__init__.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/flask_demo/utils/utils.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/get_file_list.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/image_correction/__init__.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/image_correction/demo_correction_v1.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/image_correction/demo_correction_v2.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/image_correction/demo_correction_v3.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/kafka_worker.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/men_tracemalloc.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/milvus_demo/__init__.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/milvus_demo/demo01.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/milvus_demo/demo02.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/milvus_demo/hello_milvus.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/milvus_demo/milvus_client.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/performance.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/pose/__init__.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/pose/human_pose.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/redis_py/__init__.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/redis_py/knn_search.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/redis_py/redis_client.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/registry/__init__.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/registry/base.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/registry/component.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/registry/main.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/registry/register.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/single_class/GRU.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/single_class/TCN.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/single_class/__init__.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/single_class/demo.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/test_fr/__init__.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/test_fr/demo11.py +0 -0
- {pybaseutils-2.2.20 → pybaseutils-2.2.21}/test_py/test_fr/idcardocr.py +0 -0
|
@@ -107,14 +107,14 @@ def combine_flags(flags: list, use_time=True, info=True):
|
|
|
107
107
|
return out_flags
|
|
108
108
|
|
|
109
109
|
|
|
110
|
-
def write_file(file, data):
|
|
110
|
+
def write_file(file, data, mode='wb'):
|
|
111
111
|
"""写二进制数据"""
|
|
112
|
-
with open(file,
|
|
112
|
+
with open(file, mode) as f: f.write(data)
|
|
113
113
|
|
|
114
114
|
|
|
115
|
-
def read_file(file):
|
|
115
|
+
def read_file(file, mode='rb'):
|
|
116
116
|
"""读取二进制数据"""
|
|
117
|
-
with open(file,
|
|
117
|
+
with open(file, mode) as f: key = f.read()
|
|
118
118
|
return key
|
|
119
119
|
|
|
120
120
|
|
|
@@ -700,7 +700,7 @@ def create_file_path(filename):
|
|
|
700
700
|
return out_path
|
|
701
701
|
|
|
702
702
|
|
|
703
|
-
def get_sub_paths(input_dir):
|
|
703
|
+
def get_sub_paths(input_dir, abspath=False):
|
|
704
704
|
"""
|
|
705
705
|
当前路径下所有子目录
|
|
706
706
|
:param input_dir:
|
|
@@ -714,6 +714,7 @@ def get_sub_paths(input_dir):
|
|
|
714
714
|
# print(dirs) # 当前路径下所有子目录
|
|
715
715
|
# print(files) # 当前路径下所有非目录子文件
|
|
716
716
|
sub_list.sort()
|
|
717
|
+
if abspath: sub_list = [os.path.join(input_dir, p) for p in sub_list]
|
|
717
718
|
return sub_list
|
|
718
719
|
|
|
719
720
|
|
|
@@ -58,9 +58,6 @@ class FontType(object):
|
|
|
58
58
|
return self.font_type
|
|
59
59
|
|
|
60
60
|
|
|
61
|
-
# font_type = FontType()
|
|
62
|
-
|
|
63
|
-
|
|
64
61
|
def get_font_type(size, font=""):
|
|
65
62
|
"""
|
|
66
63
|
Windows字体路径 : /usr/share/fonts/楷体.ttf
|
|
@@ -101,8 +98,7 @@ def draw_image_text(image, point, text, style="楷体", size=20, color=(255, 255
|
|
|
101
98
|
font = ImageFont.truetype(style, size=size, encoding="utf-8")
|
|
102
99
|
else:
|
|
103
100
|
# simhei.ttf 是字体,你如果没有字体,需要下载
|
|
104
|
-
|
|
105
|
-
font = font_type.get_font_type()
|
|
101
|
+
font = get_font_type(size=size)
|
|
106
102
|
draw.text(point, text, fill=color, font=font)
|
|
107
103
|
image = np.asarray(image)
|
|
108
104
|
return image
|
|
@@ -211,6 +207,24 @@ def get_font_char(font_file, only_chinese=False):
|
|
|
211
207
|
return fonts
|
|
212
208
|
|
|
213
209
|
|
|
210
|
+
def set_pyplot_font(font="simhei"):
|
|
211
|
+
"""
|
|
212
|
+
设置 seaborn,matplotlib等默认字体
|
|
213
|
+
:param font: 字体路径或者名称,或者使用默认的,SimHei
|
|
214
|
+
:return:
|
|
215
|
+
"""
|
|
216
|
+
import seaborn
|
|
217
|
+
import matplotlib.pyplot as plt
|
|
218
|
+
import matplotlib.font_manager as fm
|
|
219
|
+
font_file = font if os.path.isfile(font) else FONT_TABLES[font]
|
|
220
|
+
font = os.path.basename(font_file).split(".")[0]
|
|
221
|
+
fm.fontManager.addfont(font_file)
|
|
222
|
+
plt.rcParams['font.sans-serif'] = [font]
|
|
223
|
+
plt.rcParams['axes.unicode_minus'] = False
|
|
224
|
+
seaborn.set_theme(font=font) # 增加一行代码, 设置 seaborn 使用的字体文件
|
|
225
|
+
return font_file
|
|
226
|
+
|
|
227
|
+
|
|
214
228
|
def draw_font_example():
|
|
215
229
|
size = 512
|
|
216
230
|
string = "我"
|
|
@@ -2862,6 +2862,29 @@ def get_image_block(image, grid=[3, 3], same=False):
|
|
|
2862
2862
|
return image_block
|
|
2863
2863
|
|
|
2864
2864
|
|
|
2865
|
+
def apply_mosaic(image, boxes, radius=8, scale=[1.0, 1.0]):
|
|
2866
|
+
"""
|
|
2867
|
+
马赛克
|
|
2868
|
+
:param image: BGR image
|
|
2869
|
+
:param boxes: 人脸框(xmin,ymin,xmax,ymax)
|
|
2870
|
+
:param radius: 马赛克强度
|
|
2871
|
+
:param scale: 人脸框扩大范围
|
|
2872
|
+
:return:
|
|
2873
|
+
"""
|
|
2874
|
+
h, w = image.shape[:2]
|
|
2875
|
+
boxes = np.asarray(boxes, dtype=np.int32)
|
|
2876
|
+
boxes = extend_xyxy(boxes, scale=scale, valid_range=(0, 0, w, h))
|
|
2877
|
+
for box in boxes:
|
|
2878
|
+
x1, y1, x2, y2 = box
|
|
2879
|
+
roi = image[y1:y2, x1:x2]
|
|
2880
|
+
size = (max((x2 - x1) // radius, 5), max((y2 - y1) // radius, 5))
|
|
2881
|
+
img = cv2.resize(roi, size)
|
|
2882
|
+
# img = cv2.resize(roi, (radius, radius))
|
|
2883
|
+
img = cv2.resize(img, (x2 - x1, y2 - y1), interpolation=cv2.INTER_NEAREST)
|
|
2884
|
+
image[y1:y2, x1:x2] = img
|
|
2885
|
+
return image
|
|
2886
|
+
|
|
2887
|
+
|
|
2865
2888
|
def image_composite(image: np.ndarray, alpha: np.ndarray, bg_img=(219, 142, 67)):
|
|
2866
2889
|
"""
|
|
2867
2890
|
图像融合:合成图 = 前景*alpha+背景*(1-alpha)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
"""
|
|
3
|
+
# --------------------------------------------------------
|
|
4
|
+
# @Author : Pan
|
|
5
|
+
# @E-mail :
|
|
6
|
+
# @Date : 2025-02-27 16:03:39
|
|
7
|
+
# @Brief : 基于pywebio实现图像处理web小工具
|
|
8
|
+
# 运行方法:python app_webio_image.py
|
|
9
|
+
# --------------------------------------------------------
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
if __name__ == '__main__':
|
|
13
|
+
pass
|
|
@@ -12,7 +12,7 @@ from pybaseutils.dataloader import parser_labelme
|
|
|
12
12
|
from pybaseutils import image_utils, file_utils
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
def save_object_crops(data_info, out_dir, class_name=None, scale=[], square=False,
|
|
15
|
+
def save_object_crops(data_info, out_dir, class_name=None, target_name=None, scale=[], square=False,
|
|
16
16
|
padding=False, min_size=20 * 20 * 3, flag="", vis=False):
|
|
17
17
|
"""
|
|
18
18
|
对VOC的数据目标进行裁剪
|
|
@@ -51,22 +51,16 @@ def save_object_crops(data_info, out_dir, class_name=None, scale=[], square=Fals
|
|
|
51
51
|
name = class_name[int(labels[i])] if class_name else labels[i]
|
|
52
52
|
if out_dir:
|
|
53
53
|
file_name = "{}_{:0=4d}_{}.jpg".format(image_id, i, flag) if flag else "{}_{:0=4d}.jpg".format(image_id, i)
|
|
54
|
-
|
|
54
|
+
if target_name:
|
|
55
|
+
out_dir_ = out_dir if name in target_name else os.path.join(out_dir, "其他")
|
|
56
|
+
img_file = file_utils.create_dir(out_dir_, name, file_name)
|
|
57
|
+
else:
|
|
58
|
+
img_file = file_utils.create_dir(out_dir, name, file_name)
|
|
55
59
|
cv2.imwrite(img_file, img)
|
|
56
60
|
if vis: image_utils.cv_show_image("crop", img, use_rgb=False, delay=0)
|
|
57
61
|
|
|
58
62
|
|
|
59
|
-
|
|
60
|
-
"""
|
|
61
|
-
对VOC的数据目标进行裁剪
|
|
62
|
-
室内:['主杆', '从此进出标示牌', '其他鞋', '吊物绳', '在此工作标示牌', '垫子', '安全带', '安全帽', '安全绳',
|
|
63
|
-
'导线头', '尖嘴钳', '工具袋', '手', '扳手', '抹布', '未穿工作服','柱式绝缘子', '止步高压危险标示牌',
|
|
64
|
-
'绝缘手套', '绝缘鞋', '脚扣', '螺丝', '身穿工作服', '遮拦杆', '铁架', '铝扎线']
|
|
65
|
-
室外: []
|
|
66
|
-
"""
|
|
67
|
-
anno_dir = "/home/PKing/nasdata/dataset-dmai/AIJE/dataset/aije-v2-det/dataset-v31/images"
|
|
68
|
-
class_name = None # 室内\
|
|
69
|
-
out_dir = os.path.join(os.path.dirname(anno_dir), "crops")
|
|
63
|
+
def crop_dataset(anno_dir, out_dir=None, class_name=None, target_name=None):
|
|
70
64
|
dataset = parser_labelme.LabelMeDatasets(filename=None,
|
|
71
65
|
data_root=None,
|
|
72
66
|
anno_dir=anno_dir,
|
|
@@ -83,4 +77,46 @@ if __name__ == "__main__":
|
|
|
83
77
|
# scale = None
|
|
84
78
|
for i in tqdm(range(len(dataset))):
|
|
85
79
|
data_info = dataset.__getitem__(i)
|
|
86
|
-
save_object_crops(data_info, out_dir, class_name=class_name, scale=scale, flag=flag,
|
|
80
|
+
save_object_crops(data_info, out_dir, class_name=class_name, target_name=target_name, scale=scale, flag=flag,
|
|
81
|
+
vis=False)
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
def get_sub_dataset(data_root):
|
|
85
|
+
sub_paths = file_utils.get_sub_paths(data_root, abspath=True)
|
|
86
|
+
datasets = []
|
|
87
|
+
for sub_path in sub_paths:
|
|
88
|
+
data_list = file_utils.get_sub_paths(sub_path, abspath=True)
|
|
89
|
+
data_list = [os.path.join(p, "images") for p in data_list if os.path.exists(os.path.join(p, "images"))]
|
|
90
|
+
datasets += data_list
|
|
91
|
+
return datasets
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
if __name__ == "__main__":
|
|
95
|
+
"""
|
|
96
|
+
对labelme的数据目标进行裁剪,用于制作分类数据集
|
|
97
|
+
"""
|
|
98
|
+
|
|
99
|
+
target_name = ["身穿工作服", "未穿工作服",
|
|
100
|
+
"绝缘鞋", "脚穿绝缘鞋", "长筒靴", "脚穿长筒靴", "其他鞋", "脚穿其他鞋",
|
|
101
|
+
"手", "绝缘手套", "手穿绝缘手套", "棉纱手套", "手穿棉纱手套", "其他手套", "手穿其他手套",
|
|
102
|
+
"拨动开关分闸", "拨动开关合闸",
|
|
103
|
+
"电容柜开关合闸", "电容柜开关分闸",
|
|
104
|
+
"低压侧总刀闸合闸", "低压侧总刀闸分闸",
|
|
105
|
+
"面板单键开关断开", "面板单键开关合上",
|
|
106
|
+
"面板双键开关断开", "面板双键开关合上",
|
|
107
|
+
"表箱关", "表箱开", "手", "其他",
|
|
108
|
+
]
|
|
109
|
+
datasets = [
|
|
110
|
+
"/home/PKing/nasdata/dataset-dmai/AIJE/dataset/aije-action-cvlm-v2/test-v2/dataset-v01/images",
|
|
111
|
+
"/home/PKing/nasdata/dataset-dmai/AIJE/dataset/aije-action-cvlm-v2/test-v2/dataset-v02/images",
|
|
112
|
+
]
|
|
113
|
+
# dataroot = "/home/PKing/nasdata/dataset-dmai/AIJE/dataset/aije-v2-det"
|
|
114
|
+
# datasets = get_sub_dataset(dataroot)
|
|
115
|
+
class_name = []
|
|
116
|
+
for anno_dir in datasets:
|
|
117
|
+
print(anno_dir)
|
|
118
|
+
out_dir = os.path.join(os.path.dirname(anno_dir), "crops")
|
|
119
|
+
if os.path.exists(out_dir) and out_dir.endswith("crops"): file_utils.remove_dir(out_dir)
|
|
120
|
+
file_utils.create_dir(out_dir)
|
|
121
|
+
file = file_utils.write_file(os.path.join(out_dir, "分类数据集,请勿删除.txt"), data="", mode="w")
|
|
122
|
+
crop_dataset(anno_dir, out_dir=out_dir, class_name=class_name, target_name=target_name)
|
|
@@ -72,7 +72,8 @@ def video2frames_similarity(video_file, out_dir=None, func=None, interval=1, thr
|
|
|
72
72
|
|
|
73
73
|
# thresh_dict = {"1号视角": 0.5, "2号视角": 0.15, "3号视角": 0.3, "4号视角": 0.3}
|
|
74
74
|
# thresh_dict = {"一号位": 0.58, "平视": 0.35, "俯视": 0.35, "右视": 0.25, "左视": 0.3}
|
|
75
|
-
thresh_dict = {"第一视角": 0.50, "主视角": 0.50, "
|
|
75
|
+
thresh_dict = {"第一视角": 0.50, "主视角": 0.50, "主视": 0.50, "平视": 0.30, "俯视": 0.30, "右视": 0.35, "左视": 0.35,
|
|
76
|
+
"全景": 0.30}
|
|
76
77
|
|
|
77
78
|
|
|
78
79
|
# thresh_dict = {"1号位": 0.58, "平视": 0.35, "全景": 0.35, "俯视": 0.35, "右视": 0.25, "左视": 0.3}
|
|
@@ -91,7 +92,7 @@ def video2frames_demo(root, out, prefix="", thresh=0.2):
|
|
|
91
92
|
|
|
92
93
|
|
|
93
94
|
if __name__ == "__main__":
|
|
94
|
-
root = "/home/PKing/
|
|
95
|
+
root = "/home/PKing/Downloads/video/08-更换熔丝"
|
|
95
96
|
prefix = ""
|
|
96
97
|
out = root + "-train"
|
|
97
98
|
video2frames_demo(root, out, prefix=prefix)
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import requests
|
|
2
|
+
from urllib.parse import urljoin, urlparse
|
|
3
|
+
from bs4 import BeautifulSoup
|
|
4
|
+
from pybaseutils import file_utils, json_utils
|
|
5
|
+
import glob
|
|
6
|
+
|
|
7
|
+
# 使用示例
|
|
8
|
+
if __name__ == "__main__":
|
|
9
|
+
data_root = "http://aije-mvp-nginx.partner.dm-ai.com/req-resp/aije-job-m8ch701s-awbg/*.json"
|
|
10
|
+
# data_root = "/media/PKing/新加卷/SDK/base-utils/data/person/*.json"
|
|
11
|
+
file = glob.glob(data_root)
|
|
12
|
+
print(file)
|
|
13
|
+
data =json_utils.read_json_data("http://aije-mvp-nginx.partner.dm-ai.com/req-resp/aije-job-m8ch701s-awbg/nlp-12.json")
|
|
14
|
+
print(data)
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
|
-
"""
|
|
3
|
-
# --------------------------------------------------------
|
|
4
|
-
# @Author : Pan
|
|
5
|
-
# @E-mail :
|
|
6
|
-
# @Date : 2025-02-27 16:03:39
|
|
7
|
-
# @Brief : 基于pywebio实现图像处理web小工具
|
|
8
|
-
# 运行方法:python app_webio_image.py
|
|
9
|
-
# --------------------------------------------------------
|
|
10
|
-
"""
|
|
11
|
-
from pywebio.output import *
|
|
12
|
-
from pywebio.input import file_upload
|
|
13
|
-
from pywebio.session import set_env, defer_call, run_async
|
|
14
|
-
from pywebio import start_server
|
|
15
|
-
import cv2
|
|
16
|
-
import numpy as np
|
|
17
|
-
|
|
18
|
-
current_images = [] # 存储处理后的图像列表
|
|
19
|
-
current_index = 0 # 当前显示索引
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
def apply_blur(image_bytes):
|
|
23
|
-
"""OpenCV高斯模糊处理"""
|
|
24
|
-
img = cv2.imdecode(np.frombuffer(image_bytes, np.uint8), cv2.IMREAD_COLOR)
|
|
25
|
-
blurred = cv2.GaussianBlur(img, (15, 15), 0)
|
|
26
|
-
_, encoded = cv2.imencode('.jpg', blurred)
|
|
27
|
-
return encoded.tobytes()
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
def handle_single_image():
|
|
31
|
-
global current_images, current_index
|
|
32
|
-
file = file_upload("选择图片", accept="image/*")
|
|
33
|
-
if file:
|
|
34
|
-
processed = apply_blur(file['content'])
|
|
35
|
-
current_images = [processed]
|
|
36
|
-
current_index = 0
|
|
37
|
-
with use_scope('main', clear=True):
|
|
38
|
-
put_row([
|
|
39
|
-
put_image(file['content'], width="45%", title="原始图片"),
|
|
40
|
-
put_image(processed, width="45%", title="模糊处理")
|
|
41
|
-
])
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
def handle_batch_images():
|
|
45
|
-
global current_images, current_index
|
|
46
|
-
files = file_upload("选择目录", accept="image/*", multiple=True)
|
|
47
|
-
if files:
|
|
48
|
-
current_images = [apply_blur(f['content']) for f in files]
|
|
49
|
-
current_index = 0
|
|
50
|
-
update_display()
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
def update_display(delta=0):
|
|
54
|
-
global current_index
|
|
55
|
-
if not current_images:
|
|
56
|
-
return
|
|
57
|
-
current_index = (current_index + delta) % len(current_images)
|
|
58
|
-
with use_scope('main', clear=True):
|
|
59
|
-
put_image(current_images[current_index], width="90%",
|
|
60
|
-
title=f"已处理图片 {current_index + 1}/{len(current_images)}")
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
# @defer_call
|
|
64
|
-
# def cleanup():
|
|
65
|
-
# current_images.clear()
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
def main():
|
|
69
|
-
set_env(title="图像模糊处理工具")
|
|
70
|
-
|
|
71
|
-
# 侧边栏布局
|
|
72
|
-
put_row([
|
|
73
|
-
put_button("选择图片", onclick=handle_single_image),
|
|
74
|
-
put_button("选择目录", onclick=handle_batch_images),
|
|
75
|
-
put_buttons(['← 上一张', '下一张 →'],
|
|
76
|
-
onclick=[lambda: update_display(-1), lambda: update_display(1)])
|
|
77
|
-
], position=0, scope='sidebar')
|
|
78
|
-
|
|
79
|
-
# 主显示区初始化
|
|
80
|
-
with use_scope('main'):
|
|
81
|
-
put_markdown("## 欢迎使用图像模糊处理工具!")
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
if __name__ == '__main__':
|
|
85
|
-
start_server(main, port=8080, debug=False, auto_open_webbrowser=True)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|