pybaseutils 2.3.2__tar.gz → 2.3.4__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.3.2 → pybaseutils-2.3.4}/PKG-INFO +5 -8
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/__init__.py +1 -1
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/base64_utils.py +6 -4
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/batch_utils.py +6 -4
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/converter/build_cvat.py +6 -4
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/converter/build_labelme.py +3 -3
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/converter/build_voc.py +6 -4
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/converter/concat_coco.py +4 -4
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/converter/convert_coco2labelme.py +6 -4
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/converter/convert_coco2voc.py +6 -4
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/converter/convert_cvat2labelme.py +6 -4
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/converter/convert_labelme2cvat.py +6 -4
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/converter/convert_labelme2labelme.py +7 -5
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/converter/convert_labelme2voc.py +3 -3
- pybaseutils-2.3.4/pybaseutils/converter/convert_labelme2yolo.py +55 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/converter/convert_voc2coco.py +4 -4
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/converter/convert_voc2labelme.py +6 -4
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/converter/convert_voc2voc.py +6 -4
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/converter/convert_voc2yolo.py +6 -4
- pybaseutils-2.3.4/pybaseutils/converter/convert_yolo2labelme.py +61 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/converter/convert_yolo2voc.py +7 -4
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/cvutils/video_utils.py +6 -2
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/dataloader/base_coco.py +8 -6
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/dataloader/base_dataset.py +6 -4
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/dataloader/data_resample.py +6 -3
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/dataloader/parser_coco_det.py +6 -4
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/dataloader/parser_coco_ins.py +6 -4
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/dataloader/parser_coco_kps.py +12 -9
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/dataloader/parser_image_folder.py +4 -2
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/dataloader/parser_image_text.py +4 -3
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/dataloader/parser_labelme.py +6 -4
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/dataloader/parser_labelme_crop.py +4 -2
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/dataloader/parser_voc.py +3 -2
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/dataloader/parser_yolo.py +80 -36
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/file_utils.py +25 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/geometry_tools.py +6 -4
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/heatmap_utils.py +6 -3
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/image_utils.py +82 -62
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/json_utils.py +6 -4
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/log.py +6 -4
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/log_utils.py +6 -4
- pybaseutils-2.3.4/pybaseutils/media/__init__.py +9 -0
- pybaseutils-2.3.4/pybaseutils/media/ffmpeg_utils.py +161 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/numpy_utils.py +6 -4
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/pandas_utils.py +6 -3
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/plot_utils.py +6 -5
- pybaseutils-2.3.4/pybaseutils/setup_config.py +17 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/singleton_utils.py +6 -5
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/text_utils.py +7 -4
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/time_utils.py +6 -4
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/word_utils.py +6 -4
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils.egg-info/PKG-INFO +5 -8
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils.egg-info/SOURCES.txt +3 -0
- pybaseutils-2.3.4/test_py/aije/demo_labelme_crop.py +138 -0
- pybaseutils-2.3.4/test_py/demo1.py +44 -0
- pybaseutils-2.3.4/test_py/demo2.py +55 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_copy_files.py +11 -3
- pybaseutils-2.3.4/test_py/demo_rename.py +28 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_voc_vis.py +3 -1
- pybaseutils-2.3.2/pybaseutils/converter/convert_labelme2yolo.py +0 -85
- pybaseutils-2.3.2/pybaseutils/setup_config.py +0 -13
- pybaseutils-2.3.2/test_py/aije/demo_labelme_crop.py +0 -211
- pybaseutils-2.3.2/test_py/demo1.py +0 -35
- pybaseutils-2.3.2/test_py/demo2.py +0 -33
- pybaseutils-2.3.2/test_py/demo_rename.py +0 -33
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/LICENCE +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/README.md +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/audio/__init__.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/audio/audio_utils.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/audio/pyaudio_utils.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/audio/vad_utils.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/base/__init__.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/base/dict_queue.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/base/list_queue.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/build_utils/__init__.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/build_utils/cython_utils.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/build_utils/pyarmor_utils.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/cluster/__init__.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/cluster/kmean.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/cluster/maxmin_distance.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/cluster/similarity.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/color_utils.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/config_utils.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/converter/__init__.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/converter/build_coco.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/converter/convert_labelme2coco.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/converter/prelabelme.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/coords_utils.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/cvutils/__init__.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/cvutils/corner_utils.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/cvutils/monitor.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/cvutils/mouse_utils.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/cvutils/nms_utils.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/data_utils.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/dataloader/__init__.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/dataloader/balanced_classes.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/dataloader/voc_seg_utils.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/filter/QueueTable.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/filter/__init__.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/filter/demo.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/filter/kalman_filter.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/filter/mean_filter.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/filter/motion_filter.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/filter/pose_filter.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/font_style/__init__.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/font_utils.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/http_utils.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/metrics/__init__.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/metrics/accuracy.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/metrics/average_meter.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/metrics/class_report.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/metrics/plot_pr.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/metrics/plot_roc.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/pose/__init__.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/pose/bones_utils.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/pose/human_pose.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/pose/pose_utils.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/pycpp/__init__.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/pycpp/demo.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/pycpp/main.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/server/__init__.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/server/apm_server.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/thread_utils.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/tracemalloc_utils.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/tracemalloc_utils2.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/tracking/QueueTable.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/tracking/__init__.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/tracking/demo.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/tracking/kalman_filter.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/tracking/mean_filter.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/tracking/motion_filter.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/tracking/pose_filter.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/transforms/__init__.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/transforms/affine_transform.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/transforms/augment_utils.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/transforms/face_alignment.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/transforms/transform_utils.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/web/__init__.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/web/app_gradio_image.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/web/app_stweb_image.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/web/app_webio_image.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/web/demo.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/worker.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/yaml_utils.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils.egg-info/dependency_links.txt +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils.egg-info/not-zip-safe +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils.egg-info/top_level.txt +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/setup.cfg +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/setup.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/Image_enhance/__init__.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/Image_enhance/dmeo01.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/WebCrawler/__init__.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/WebCrawler/search_baidu.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/WebCrawler/search_biying.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/__init__.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/aije/__init__.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/aije/action_dataset.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/aije/build_cython.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/aije/build_pyarmor.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/aije/build_service.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/aije/convert_cvat2labelme.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/aije/convert_labelme2coco.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/aije/convert_labelme2voc.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/aije/copy_move.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/aije/demo_labelme_shock.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/aije/demo_video_aije.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/aije/demo_voc_crop.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/aije/demo_voc_vis.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/aije/get_pair_data.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/aije/video_convertor.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/audio/__init__.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/audio/demo.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/audio/main.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/audio/main_read.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/audio/segment.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/audio/speechbrain_asr_indoor_prod.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/audio/speechbrain_demo.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/audio_demo1.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/camera/__init__.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/camera/demo.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/captcha/__init__.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/captcha/demo.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/class_attribute.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/class_names.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/AffectNet.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/AsianMovie.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/BITVehicle2voc.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/BSTLD2voc.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/CCPD.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/CCPD2voc.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/FL3D_dataset.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/FreiHAND2coco.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/MTFL2voc.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/TT100K.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/WaterMeters1.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/WaterMeters2.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/__init__.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/concat_coco.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/convert_coco2voc.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/convert_cvat2labelme.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/convert_gesture2hand.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/convert_labelme2coco.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/convert_labelme2cvat.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/convert_labelme2labelme.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/convert_labelme2voc.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/convert_voc2labelme.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/fatigue_driving.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/fdd_dataset.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/get_pair_data.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/handpose2coco.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/insects_for_aichallenger.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/tt100k_utils.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/ua_detrac2voc.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/ucf101_dataset.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/voc_sbd2labelme.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/cython_build/__init__.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/cython_build/build_cython.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/cython_build/build_pyarmor.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/cython_build/cryptography_demo.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/cython_build/fun_sum.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/cython_build/main.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/cython_build/model_des_enctypt.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/cython_build/model_enctypt.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/date_dataset.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/date_demo.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/datedataset_bk.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo3.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_async_await1.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_async_await2.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_coco_vis.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_copy_files_for_voc.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_ffmpy.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_for_annular_to_rect.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_for_pair_file.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_for_polygon.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_for_trt.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_get_file_label.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_get_file_list.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_gif.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_gif_video.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_image_crop.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_kpts.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_labelme.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_labelme_crop.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_lableme_vis.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_metrics.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_mosaic.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_mouse.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_nii.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_pandas.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_plot.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_prelabelme.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_standard_image .py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_standard_video .py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_taichi.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_video.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_video_crop.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_voc_crop.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_word_similar.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_worker1.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_worker2.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/detector/__init__.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/detector/demo.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/detector/detect_face_person.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/detector/predet_labelme.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/edit_distance/__init__.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/edit_distance/demo.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/edit_distance/text_matching.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/flask_demo/__init__.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/flask_demo/app.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/flask_demo/utils/__init__.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/flask_demo/utils/utils.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/get_file_list.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/gradio_app.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/gradio_app_v2.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/image_correction/__init__.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/image_correction/demo_correction_v1.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/image_correction/demo_correction_v2.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/image_correction/demo_correction_v3.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/kafka_worker.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/men_tracemalloc.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/milvus_demo/__init__.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/milvus_demo/demo01.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/milvus_demo/demo02.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/milvus_demo/hello_milvus.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/milvus_demo/milvus_client.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/performance.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/pose/__init__.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/pose/human_pose.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/redis_py/__init__.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/redis_py/knn_search.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/redis_py/redis_client.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/registry/__init__.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/registry/base.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/registry/component.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/registry/main.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/registry/register.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/single_class/GRU.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/single_class/TCN.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/single_class/__init__.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/single_class/demo.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/test_fr/__init__.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/test_fr/demo11.py +0 -0
- {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/test_fr/idcardocr.py +0 -0
|
@@ -1,18 +1,13 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
2
|
Name: pybaseutils
|
|
3
|
-
Version: 2.3.
|
|
3
|
+
Version: 2.3.4
|
|
4
4
|
Summary: pybaseutils
|
|
5
5
|
Home-page: https://github.com/PanJinquan/base-utils
|
|
6
6
|
Author: PanJinquan
|
|
7
7
|
Author-email: 390737991@qq.com
|
|
8
8
|
License: MIT
|
|
9
|
+
Platform: UNKNOWN
|
|
9
10
|
License-File: LICENCE
|
|
10
|
-
Dynamic: author
|
|
11
|
-
Dynamic: author-email
|
|
12
|
-
Dynamic: description
|
|
13
|
-
Dynamic: home-page
|
|
14
|
-
Dynamic: license
|
|
15
|
-
Dynamic: summary
|
|
16
11
|
|
|
17
12
|
base-utils
|
|
18
13
|
==========
|
|
@@ -147,3 +142,5 @@ base_utils(C++)
|
|
|
147
142
|
DEBUG_IMSHOW("image", image);
|
|
148
143
|
return 0;
|
|
149
144
|
}
|
|
145
|
+
|
|
146
|
+
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
"""
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
# --------------------------------------------------------
|
|
4
|
+
# @Author : Pan
|
|
5
|
+
# @E-mail :
|
|
6
|
+
# @Date : 2022-04-29 09:13:09
|
|
7
|
+
# @Brief :
|
|
8
|
+
# --------------------------------------------------------
|
|
7
9
|
"""
|
|
8
10
|
import sys
|
|
9
11
|
import os
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
"""
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
# --------------------------------------------------------
|
|
4
|
+
# @Author : Pan
|
|
5
|
+
# @E-mail :
|
|
6
|
+
# @Date : 2022-04-29 09:13:09
|
|
7
|
+
# @Brief :
|
|
8
|
+
# --------------------------------------------------------
|
|
7
9
|
"""
|
|
8
10
|
from typing import Tuple, List, Dict
|
|
9
11
|
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
"""
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
# --------------------------------------------------------
|
|
4
|
+
# @Author : Pan
|
|
5
|
+
# @E-mail :
|
|
6
|
+
# @Date : 2025-04-29 09:13:09
|
|
7
|
+
# @Brief :
|
|
8
|
+
# --------------------------------------------------------
|
|
7
9
|
"""
|
|
8
10
|
import os
|
|
9
11
|
import numpy as np
|
|
@@ -15,13 +15,13 @@ from pybaseutils import image_utils, file_utils, json_utils
|
|
|
15
15
|
def save_labelme(out_root, image_file, points, names, class_dict, image=None, prefix="",
|
|
16
16
|
index=0, vis=False, delay=0):
|
|
17
17
|
"""
|
|
18
|
-
:param out_root:
|
|
18
|
+
:param out_root: 输出根目录
|
|
19
19
|
:param image_file: 图片路径
|
|
20
20
|
:param points: 目标轮廓
|
|
21
21
|
:param names: 目标名称
|
|
22
22
|
:param class_dict: 需要映射的类别
|
|
23
23
|
:param image: 图像
|
|
24
|
-
:param prefix:
|
|
24
|
+
:param prefix: 前缀,如果提供,则重新命名
|
|
25
25
|
:param index: 提供前缀需要重新名称
|
|
26
26
|
:return:
|
|
27
27
|
"""
|
|
@@ -32,7 +32,7 @@ def save_labelme(out_root, image_file, points, names, class_dict, image=None, pr
|
|
|
32
32
|
print("Error: image is None,image_file={},names={}".format(image_file, names))
|
|
33
33
|
return
|
|
34
34
|
if vis:
|
|
35
|
-
image = image_utils.draw_image_contours(image, points, texts=names)
|
|
35
|
+
image = image_utils.draw_image_contours(image, points, texts=names, alpha=0.3)
|
|
36
36
|
image = image_utils.show_image("image", image, delay=delay)
|
|
37
37
|
image_name = os.path.basename(image_file)
|
|
38
38
|
image_id, postfix = file_utils.split_postfix(image_name)
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
"""
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
# --------------------------------------------------------
|
|
4
|
+
# @Author : Pan
|
|
5
|
+
# @E-mail :
|
|
6
|
+
# @Date : 2025-04-29 09:13:09
|
|
7
|
+
# @Brief :
|
|
8
|
+
# --------------------------------------------------------
|
|
7
9
|
"""
|
|
8
10
|
|
|
9
11
|
import cv2
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
"""
|
|
3
3
|
# --------------------------------------------------------
|
|
4
|
-
# @
|
|
5
|
-
# @
|
|
6
|
-
# @Date :
|
|
7
|
-
# @
|
|
4
|
+
# @Author : Pan
|
|
5
|
+
# @E-mail :
|
|
6
|
+
# @Date : 2025-04-29 09:13:09
|
|
7
|
+
# @Brief :
|
|
8
8
|
# --------------------------------------------------------
|
|
9
9
|
"""
|
|
10
10
|
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
"""
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
# --------------------------------------------------------
|
|
4
|
+
# @Author : Pan
|
|
5
|
+
# @E-mail :
|
|
6
|
+
# @Date : 2025-04-29 09:13:09
|
|
7
|
+
# @Brief :
|
|
8
|
+
# --------------------------------------------------------
|
|
7
9
|
"""
|
|
8
10
|
import os
|
|
9
11
|
import numpy as np
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
"""
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
# --------------------------------------------------------
|
|
4
|
+
# @Author : Pan
|
|
5
|
+
# @E-mail :
|
|
6
|
+
# @Date : 2025-04-29 09:13:09
|
|
7
|
+
# @Brief :
|
|
8
|
+
# --------------------------------------------------------
|
|
7
9
|
"""
|
|
8
10
|
import os
|
|
9
11
|
import numpy as np
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
"""
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
# --------------------------------------------------------
|
|
4
|
+
# @Author : Pan
|
|
5
|
+
# @E-mail :
|
|
6
|
+
# @Date : 2025-04-29 09:13:09
|
|
7
|
+
# @Brief :
|
|
8
|
+
# --------------------------------------------------------
|
|
7
9
|
"""
|
|
8
10
|
import os
|
|
9
11
|
import numpy as np
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
"""
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
# --------------------------------------------------------
|
|
4
|
+
# @Author : Pan
|
|
5
|
+
# @E-mail :
|
|
6
|
+
# @Date : 2025-04-29 09:13:09
|
|
7
|
+
# @Brief :
|
|
8
|
+
# --------------------------------------------------------
|
|
7
9
|
"""
|
|
8
10
|
import os
|
|
9
11
|
import numpy as np
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
"""
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
# --------------------------------------------------------
|
|
4
|
+
# @Author : Pan
|
|
5
|
+
# @E-mail :
|
|
6
|
+
# @Date : 2025-04-29 09:13:09
|
|
7
|
+
# @Brief :
|
|
8
|
+
# --------------------------------------------------------
|
|
7
9
|
"""
|
|
8
10
|
import os
|
|
9
11
|
import numpy as np
|
|
@@ -28,7 +30,7 @@ def convert_labelme2labelme(anno_dir,
|
|
|
28
30
|
:param out_root: 输出labelme根目录
|
|
29
31
|
:param class_name: 需要选择的类别,None表示全部
|
|
30
32
|
:param class_dict: 类别映射
|
|
31
|
-
:param prefix:
|
|
33
|
+
:param prefix: 提供文件名前缀,则进行重新命名
|
|
32
34
|
:param max_num: 最多转换样本个数
|
|
33
35
|
"""
|
|
34
36
|
if anno_dir and not out_root: out_root = os.path.join(os.path.dirname(anno_dir), "labelme")
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
"""
|
|
3
3
|
# --------------------------------------------------------
|
|
4
|
-
# @Project: AlphaPose
|
|
5
4
|
# @Author : Pan
|
|
6
|
-
# @E-mail :
|
|
7
|
-
# @Date :
|
|
5
|
+
# @E-mail :
|
|
6
|
+
# @Date : 2025-04-29 09:13:09
|
|
7
|
+
# @Brief :
|
|
8
8
|
# --------------------------------------------------------
|
|
9
9
|
"""
|
|
10
10
|
import sys
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
"""
|
|
3
|
+
# --------------------------------------------------------
|
|
4
|
+
# @Author : Pan
|
|
5
|
+
# @E-mail :
|
|
6
|
+
# @Date : 2025-04-29 09:13:09
|
|
7
|
+
# @Brief :
|
|
8
|
+
# --------------------------------------------------------
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
import os
|
|
12
|
+
import numpy as np
|
|
13
|
+
import cv2
|
|
14
|
+
from tqdm import tqdm
|
|
15
|
+
from pybaseutils.dataloader import parser_labelme, parser_yolo
|
|
16
|
+
from pybaseutils import file_utils, image_utils
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def convert_labelme2yolo(anno_dir, out_root=None, class_name=None, use_seg=False, max_num=-1, vis=True, **kwargs):
|
|
20
|
+
"""
|
|
21
|
+
将labelme格式转换为YOLO数据格式
|
|
22
|
+
:param anno_dir: 输入labelme根目录(图片和json文件必须放在同一目录)
|
|
23
|
+
:param out_root: 输出YOLO数据格根目录
|
|
24
|
+
:param class_name: 需要选择的类别,None表示全部
|
|
25
|
+
:param use_seg: 数据格式,True是YOLO实例分割数据格式 [class_index, cx, cy, w, h]
|
|
26
|
+
False是YOLO目标检测格式 [class_index, x1, y1, x2, y2, x3, y3, x4, y4,....]
|
|
27
|
+
:param max_num: 最多转换样本个数
|
|
28
|
+
:param vis: 可视化标注效果
|
|
29
|
+
"""
|
|
30
|
+
if anno_dir and not out_root: out_root = os.path.join(os.path.dirname(anno_dir), "yolo")
|
|
31
|
+
dataset = parser_labelme.LabelMeDatasets(filename=None,
|
|
32
|
+
data_root=None,
|
|
33
|
+
anno_dir=anno_dir,
|
|
34
|
+
image_dir=None,
|
|
35
|
+
class_name=class_name,
|
|
36
|
+
check=False,
|
|
37
|
+
phase="val",
|
|
38
|
+
shuffle=False)
|
|
39
|
+
print("have num:{}".format(len(dataset)))
|
|
40
|
+
nums = min(len(dataset), max_num) if max_num > 0 else len(dataset)
|
|
41
|
+
for i in tqdm(range(nums)):
|
|
42
|
+
data_info = dataset.__getitem__(i)
|
|
43
|
+
labels, points, boxes = data_info["labels"], data_info["points"], data_info["boxes"]
|
|
44
|
+
image, image_file = data_info["image"], data_info["image_file"]
|
|
45
|
+
parser_yolo.save_yolo(out_root, image_file=image_file, boxes=boxes, points=points, labels=labels,
|
|
46
|
+
use_seg=use_seg, image=image, vis=vis)
|
|
47
|
+
file_utils.write_data(os.path.join(out_root, "class_name.txt"), dataset.class_name)
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
if __name__ == "__main__":
|
|
51
|
+
class_name = ['AngelFish', 'BlueTang', 'ButterflyFish', 'ClownFish', 'GoldFish', 'Gourami', 'MorishIdol',
|
|
52
|
+
'PlatyFish', 'RibbonedSweetlips', 'ThreeStripedDamselfish', 'YellowCichlid', 'YellowTang',
|
|
53
|
+
'ZebraFish']
|
|
54
|
+
anno_dir = "/home/PKing/nasdata/tmp/tmp/Fish/train/images"
|
|
55
|
+
convert_labelme2yolo(anno_dir, class_name=class_name, use_seg=False, vis=False)
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
"""
|
|
3
3
|
# --------------------------------------------------------
|
|
4
|
-
# @
|
|
5
|
-
# @
|
|
6
|
-
# @Date :
|
|
7
|
-
# @
|
|
4
|
+
# @Author : Pan
|
|
5
|
+
# @E-mail :
|
|
6
|
+
# @Date : 2025-04-29 09:13:09
|
|
7
|
+
# @Brief :
|
|
8
8
|
# --------------------------------------------------------
|
|
9
9
|
"""
|
|
10
10
|
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
"""
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
# --------------------------------------------------------
|
|
4
|
+
# @Author : Pan
|
|
5
|
+
# @E-mail :
|
|
6
|
+
# @Date : 2025-04-29 09:13:09
|
|
7
|
+
# @Brief :
|
|
8
|
+
# --------------------------------------------------------
|
|
7
9
|
"""
|
|
8
10
|
import os
|
|
9
11
|
import numpy as np
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
"""
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
# --------------------------------------------------------
|
|
4
|
+
# @Author : Pan
|
|
5
|
+
# @E-mail :
|
|
6
|
+
# @Date : 2025-04-29 09:13:09
|
|
7
|
+
# @Brief :
|
|
8
|
+
# --------------------------------------------------------
|
|
7
9
|
"""
|
|
8
10
|
import os
|
|
9
11
|
import numpy as np
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
"""
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
# --------------------------------------------------------
|
|
4
|
+
# @Author : Pan
|
|
5
|
+
# @E-mail :
|
|
6
|
+
# @Date : 2025-04-29 09:13:09
|
|
7
|
+
# @Brief :
|
|
8
|
+
# --------------------------------------------------------
|
|
7
9
|
"""
|
|
8
10
|
import os
|
|
9
11
|
import numpy as np
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
"""
|
|
3
|
+
# --------------------------------------------------------
|
|
4
|
+
# @Author : Pan
|
|
5
|
+
# @E-mail :
|
|
6
|
+
# @Date : 2025-04-29 09:13:09
|
|
7
|
+
# @Brief :
|
|
8
|
+
# --------------------------------------------------------
|
|
9
|
+
"""
|
|
10
|
+
import os
|
|
11
|
+
import numpy as np
|
|
12
|
+
import cv2
|
|
13
|
+
from tqdm import tqdm
|
|
14
|
+
from pybaseutils.converter import build_labelme
|
|
15
|
+
from pybaseutils.dataloader import parser_yolo
|
|
16
|
+
from pybaseutils import file_utils, image_utils
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def convert_yolo2labelme(data_root,
|
|
20
|
+
out_root=None,
|
|
21
|
+
class_name=None,
|
|
22
|
+
class_dict={},
|
|
23
|
+
prefix="",
|
|
24
|
+
max_num=-1,
|
|
25
|
+
vis=True,
|
|
26
|
+
**kwargs):
|
|
27
|
+
"""
|
|
28
|
+
将labelme格式转换为labelme格式
|
|
29
|
+
:param data_root: 输入labelme根目录
|
|
30
|
+
:param out_root: 输出labelme根目录
|
|
31
|
+
:param class_name: 需要选择的类别,None表示全部
|
|
32
|
+
:param class_dict: 类别映射
|
|
33
|
+
:param prefix: 提供文件名前缀,则进行重新命名
|
|
34
|
+
:param max_num: 最多转换样本个数
|
|
35
|
+
"""
|
|
36
|
+
if data_root and not out_root: out_root = os.path.join(data_root, "labelme")
|
|
37
|
+
dataset = parser_yolo.YOLODataset(filename=None,
|
|
38
|
+
data_root=data_root,
|
|
39
|
+
anno_dir=None,
|
|
40
|
+
image_dir=None,
|
|
41
|
+
class_name=class_name,
|
|
42
|
+
check=False,
|
|
43
|
+
phase="val",
|
|
44
|
+
shuffle=False)
|
|
45
|
+
print("have num:{}".format(len(dataset)))
|
|
46
|
+
nums = min(len(dataset), max_num) if max_num > 0 else len(dataset)
|
|
47
|
+
for i in tqdm(range(nums)):
|
|
48
|
+
data_info = dataset.__getitem__(i)
|
|
49
|
+
image, names, points = data_info["image"], data_info["names"], data_info["points"]
|
|
50
|
+
image_file = data_info["image_file"]
|
|
51
|
+
build_labelme.save_labelme(out_root, image_file=image_file, points=points, names=names,
|
|
52
|
+
class_dict=class_dict, image=image, prefix=prefix, index=i, vis=vis)
|
|
53
|
+
file_utils.write_data(os.path.join(out_root, "class_name.txt"), dataset.class_name)
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
if __name__ == "__main__":
|
|
57
|
+
class_name = ['AngelFish', 'BlueTang', 'ButterflyFish', 'ClownFish', 'GoldFish', 'Gourami', 'MorishIdol',
|
|
58
|
+
'PlatyFish', 'RibbonedSweetlips', 'ThreeStripedDamselfish', 'YellowCichlid', 'YellowTang',
|
|
59
|
+
'ZebraFish']
|
|
60
|
+
data_root = "/home/PKing/nasdata/tmp/tmp/Fish/test/labelme/images"
|
|
61
|
+
convert_yolo2labelme(data_root, class_name=class_name, prefix="test", vis=False)
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
"""
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
# --------------------------------------------------------
|
|
4
|
+
# @Author : Pan
|
|
5
|
+
# @E-mail :
|
|
6
|
+
# @Date : 2025-04-29 09:13:09
|
|
7
|
+
# @Brief :
|
|
8
|
+
# --------------------------------------------------------
|
|
7
9
|
"""
|
|
10
|
+
|
|
8
11
|
import os
|
|
9
12
|
import numpy as np
|
|
10
13
|
import cv2
|
|
@@ -212,7 +212,7 @@ def resize_video(video_file, save_video, size=(), start=0, interval=1, vis=True,
|
|
|
212
212
|
video_writer.release()
|
|
213
213
|
|
|
214
214
|
|
|
215
|
-
def video_capture(video_file: int or str, save_video: str or int = None, interval=1, task: Callable = None,
|
|
215
|
+
def video_capture(video_file: int or str, save_video: str or int = None, interval=1, freq=0, task: Callable = None,
|
|
216
216
|
vis=True, **kwargs):
|
|
217
217
|
"""
|
|
218
218
|
读取摄像头或者视频流
|
|
@@ -220,6 +220,7 @@ def video_capture(video_file: int or str, save_video: str or int = None, interva
|
|
|
220
220
|
Int 摄像头ID,如0,1,2
|
|
221
221
|
:param save_video: 保存task视频处理后的结果
|
|
222
222
|
:param interval: 抽帧处理间隔
|
|
223
|
+
:param freq: 抽帧频率,当freq>0,表示interval=int(fps / freq)
|
|
223
224
|
:param task: 回调函数: def task(frame, **kwargs)
|
|
224
225
|
:param kwargs:回调函数输入参数,
|
|
225
226
|
delay: 控制显示延时
|
|
@@ -234,6 +235,7 @@ def video_capture(video_file: int or str, save_video: str or int = None, interva
|
|
|
234
235
|
if num_frames <= 0: num_frames = end
|
|
235
236
|
end = min(end, num_frames) # TODO 当num_frames<0时,使用0<end<count继续播放
|
|
236
237
|
interval = fps if interval == -1 else interval # 当interval=-1,表示interval=fps,即一秒一帧
|
|
238
|
+
interval = int(fps / freq) if freq > 0 else interval
|
|
237
239
|
save_fps = max(kwargs.get("speed", 1) * fps // interval, 1)
|
|
238
240
|
count = 0
|
|
239
241
|
video_writer = None
|
|
@@ -257,7 +259,7 @@ def video_capture(video_file: int or str, save_video: str or int = None, interva
|
|
|
257
259
|
video_writer.release()
|
|
258
260
|
|
|
259
261
|
|
|
260
|
-
def video_iterator(video_file: int or str, save_video: str or int = None, interval=1, task: Callable = None,
|
|
262
|
+
def video_iterator(video_file: int or str, save_video: str or int = None, interval=1, freq=0, task: Callable = None,
|
|
261
263
|
vis=False, **kwargs):
|
|
262
264
|
"""
|
|
263
265
|
读取摄像头或者视频流迭代器
|
|
@@ -271,6 +273,7 @@ def video_iterator(video_file: int or str, save_video: str or int = None, interv
|
|
|
271
273
|
Int 摄像头ID,如0,1,2
|
|
272
274
|
:param save_video: 保存task视频处理后的结果
|
|
273
275
|
:param interval: 抽帧处理间隔,当interval=-1,表示当interval=fps,即一秒一帧
|
|
276
|
+
:param freq: 抽帧频率,当freq>0,表示interval=int(fps / freq)
|
|
274
277
|
:param task: 回调函数: def task(frame, **kwargs)
|
|
275
278
|
:param kwargs:回调函数输入参数,
|
|
276
279
|
delay: 控制显示延时,默认10S
|
|
@@ -287,6 +290,7 @@ def video_iterator(video_file: int or str, save_video: str or int = None, interv
|
|
|
287
290
|
end = int(kwargs.get("end", num_frames / fps) * fps) if fps > 0 else 0
|
|
288
291
|
end = min(end, num_frames) if end > 0 else num_frames # TODO 当num_frames<0时,使用0<end<count继续播放
|
|
289
292
|
interval = fps if interval == -1 else interval # 当interval=-1,表示interval=fps,即一秒一帧
|
|
293
|
+
interval = int(fps / freq) if freq > 0 else interval
|
|
290
294
|
save_fps = max(kwargs.get("speed", 1) * fps // interval, 1)
|
|
291
295
|
count = 0
|
|
292
296
|
video_writer = None
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
"""
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
# --------------------------------------------------------
|
|
4
|
+
# @Author : Pan
|
|
5
|
+
# @E-mail :
|
|
6
|
+
# @Date : 2025-04-29 09:13:09
|
|
7
|
+
# @Brief :
|
|
8
|
+
# --------------------------------------------------------
|
|
7
9
|
"""
|
|
8
10
|
import os
|
|
9
11
|
import numpy as np
|
|
@@ -365,8 +367,8 @@ class CocoDataset(object):
|
|
|
365
367
|
continue
|
|
366
368
|
keypoint = ann.get('keypoints', [])
|
|
367
369
|
if len(keypoint) == 0: continue
|
|
368
|
-
keypoint = np.asarray(keypoint).reshape(num_joints, 3)
|
|
369
|
-
keypoint = keypoint[:, 0:2]
|
|
370
|
+
keypoint = np.asarray(keypoint).reshape(num_joints, 3) # (N,3)
|
|
371
|
+
# keypoint = keypoint[:, 0:2]
|
|
370
372
|
keypoints.append(keypoint)
|
|
371
373
|
label = self.class_dict[name]
|
|
372
374
|
rects.append(ann['bbox'])
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
"""
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
# --------------------------------------------------------
|
|
4
|
+
# @Author : Pan
|
|
5
|
+
# @E-mail :
|
|
6
|
+
# @Date : 2025-04-29 09:13:09
|
|
7
|
+
# @Brief :
|
|
8
|
+
# --------------------------------------------------------
|
|
7
9
|
"""
|
|
8
10
|
import os
|
|
9
11
|
import numpy as np
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
"""
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
# --------------------------------------------------------
|
|
4
|
+
# @Author : Pan
|
|
5
|
+
# @E-mail :
|
|
6
|
+
# @Date : 2025-04-29 09:13:09
|
|
7
|
+
# @Brief :
|
|
8
|
+
# --------------------------------------------------------
|
|
6
9
|
"""
|
|
7
10
|
import random
|
|
8
11
|
import numpy as np
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
"""
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
# --------------------------------------------------------
|
|
4
|
+
# @Author : Pan
|
|
5
|
+
# @E-mail :
|
|
6
|
+
# @Date : 2025-04-29 09:13:09
|
|
7
|
+
# @Brief :
|
|
8
|
+
# --------------------------------------------------------
|
|
7
9
|
"""
|
|
8
10
|
import os
|
|
9
11
|
import numpy as np
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
"""
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
# --------------------------------------------------------
|
|
4
|
+
# @Author : Pan
|
|
5
|
+
# @E-mail :
|
|
6
|
+
# @Date : 2025-04-29 09:13:09
|
|
7
|
+
# @Brief :
|
|
8
|
+
# --------------------------------------------------------
|
|
7
9
|
"""
|
|
8
10
|
import os
|
|
9
11
|
import numpy as np
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
"""
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
# --------------------------------------------------------
|
|
4
|
+
# @Author : Pan
|
|
5
|
+
# @E-mail :
|
|
6
|
+
# @Date : 2025-04-29 09:13:09
|
|
7
|
+
# @Brief :
|
|
8
|
+
# --------------------------------------------------------
|
|
7
9
|
"""
|
|
8
10
|
import os
|
|
9
11
|
import numpy as np
|
|
@@ -71,6 +73,7 @@ class CocoKeypoint(base_coco.CocoDataset):
|
|
|
71
73
|
anns_info, file_info = self.get_object_annotations(image_id)
|
|
72
74
|
image, width, height, image_file = self.get_object_image(file_info)
|
|
73
75
|
boxes, labels, keypoints = self.get_keypoint_info(anns_info, self.num_joints)
|
|
76
|
+
# TODO keypoints is (1,N,3); v=0未标注点; v=1标注了但是图像中不可见(例如遮挡);v=2标注了并图像可见
|
|
74
77
|
data = {"image": image, "boxes": boxes, "labels": labels,
|
|
75
78
|
"segs": [], "mask": [], "keypoints": keypoints, "target": [],
|
|
76
79
|
"image_id": image_id, "annotations": anns_info, "file_info": file_info,
|
|
@@ -135,16 +138,16 @@ if __name__ == "__main__":
|
|
|
135
138
|
# image_dir = coco_root + 'val2017/images'
|
|
136
139
|
# anno_file = coco_root + 'annotations/person_keypoints_val2017.json'
|
|
137
140
|
|
|
138
|
-
image_dir = "
|
|
139
|
-
anno_file = "
|
|
141
|
+
image_dir = "../../data/coco/JPEGImages"
|
|
142
|
+
anno_file = "../../data/coco/coco_kps.json"
|
|
140
143
|
class_name = ["person"]
|
|
141
144
|
|
|
142
145
|
# hand
|
|
143
|
-
image_dir = ""
|
|
146
|
+
# image_dir = ""
|
|
144
147
|
# anno_file = "/home/PKing/nasdata/dataset/tmp/hand-pose/HandPose-v2/train/train_anno.json"
|
|
145
148
|
# anno_file = "/home/PKing/nasdata/dataset/tmp/hand-pose/HandPose-v1/test/test_anno.json"
|
|
146
|
-
anno_file = "/home/PKing/nasdata/dataset/tmp/hand-pose/HandPose-v2/train/train_anno.json"
|
|
147
|
-
class_name = []
|
|
149
|
+
# anno_file = "/home/PKing/nasdata/dataset/tmp/hand-pose/HandPose-v2/train/train_anno.json"
|
|
150
|
+
# class_name = []
|
|
148
151
|
dataset = CocoKeypoint(anno_file, image_dir, class_name=class_name)
|
|
149
152
|
skeleton = dataset.skeleton
|
|
150
153
|
for i in range(len(dataset)):
|