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.
Files changed (304) hide show
  1. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/PKG-INFO +5 -8
  2. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/__init__.py +1 -1
  3. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/base64_utils.py +6 -4
  4. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/batch_utils.py +6 -4
  5. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/converter/build_cvat.py +6 -4
  6. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/converter/build_labelme.py +3 -3
  7. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/converter/build_voc.py +6 -4
  8. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/converter/concat_coco.py +4 -4
  9. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/converter/convert_coco2labelme.py +6 -4
  10. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/converter/convert_coco2voc.py +6 -4
  11. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/converter/convert_cvat2labelme.py +6 -4
  12. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/converter/convert_labelme2cvat.py +6 -4
  13. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/converter/convert_labelme2labelme.py +7 -5
  14. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/converter/convert_labelme2voc.py +3 -3
  15. pybaseutils-2.3.4/pybaseutils/converter/convert_labelme2yolo.py +55 -0
  16. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/converter/convert_voc2coco.py +4 -4
  17. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/converter/convert_voc2labelme.py +6 -4
  18. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/converter/convert_voc2voc.py +6 -4
  19. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/converter/convert_voc2yolo.py +6 -4
  20. pybaseutils-2.3.4/pybaseutils/converter/convert_yolo2labelme.py +61 -0
  21. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/converter/convert_yolo2voc.py +7 -4
  22. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/cvutils/video_utils.py +6 -2
  23. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/dataloader/base_coco.py +8 -6
  24. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/dataloader/base_dataset.py +6 -4
  25. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/dataloader/data_resample.py +6 -3
  26. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/dataloader/parser_coco_det.py +6 -4
  27. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/dataloader/parser_coco_ins.py +6 -4
  28. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/dataloader/parser_coco_kps.py +12 -9
  29. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/dataloader/parser_image_folder.py +4 -2
  30. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/dataloader/parser_image_text.py +4 -3
  31. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/dataloader/parser_labelme.py +6 -4
  32. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/dataloader/parser_labelme_crop.py +4 -2
  33. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/dataloader/parser_voc.py +3 -2
  34. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/dataloader/parser_yolo.py +80 -36
  35. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/file_utils.py +25 -0
  36. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/geometry_tools.py +6 -4
  37. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/heatmap_utils.py +6 -3
  38. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/image_utils.py +82 -62
  39. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/json_utils.py +6 -4
  40. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/log.py +6 -4
  41. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/log_utils.py +6 -4
  42. pybaseutils-2.3.4/pybaseutils/media/__init__.py +9 -0
  43. pybaseutils-2.3.4/pybaseutils/media/ffmpeg_utils.py +161 -0
  44. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/numpy_utils.py +6 -4
  45. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/pandas_utils.py +6 -3
  46. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/plot_utils.py +6 -5
  47. pybaseutils-2.3.4/pybaseutils/setup_config.py +17 -0
  48. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/singleton_utils.py +6 -5
  49. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/text_utils.py +7 -4
  50. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/time_utils.py +6 -4
  51. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/word_utils.py +6 -4
  52. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils.egg-info/PKG-INFO +5 -8
  53. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils.egg-info/SOURCES.txt +3 -0
  54. pybaseutils-2.3.4/test_py/aije/demo_labelme_crop.py +138 -0
  55. pybaseutils-2.3.4/test_py/demo1.py +44 -0
  56. pybaseutils-2.3.4/test_py/demo2.py +55 -0
  57. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_copy_files.py +11 -3
  58. pybaseutils-2.3.4/test_py/demo_rename.py +28 -0
  59. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_voc_vis.py +3 -1
  60. pybaseutils-2.3.2/pybaseutils/converter/convert_labelme2yolo.py +0 -85
  61. pybaseutils-2.3.2/pybaseutils/setup_config.py +0 -13
  62. pybaseutils-2.3.2/test_py/aije/demo_labelme_crop.py +0 -211
  63. pybaseutils-2.3.2/test_py/demo1.py +0 -35
  64. pybaseutils-2.3.2/test_py/demo2.py +0 -33
  65. pybaseutils-2.3.2/test_py/demo_rename.py +0 -33
  66. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/LICENCE +0 -0
  67. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/README.md +0 -0
  68. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/audio/__init__.py +0 -0
  69. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/audio/audio_utils.py +0 -0
  70. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/audio/pyaudio_utils.py +0 -0
  71. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/audio/vad_utils.py +0 -0
  72. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/base/__init__.py +0 -0
  73. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/base/dict_queue.py +0 -0
  74. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/base/list_queue.py +0 -0
  75. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/build_utils/__init__.py +0 -0
  76. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/build_utils/cython_utils.py +0 -0
  77. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/build_utils/pyarmor_utils.py +0 -0
  78. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/cluster/__init__.py +0 -0
  79. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/cluster/kmean.py +0 -0
  80. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/cluster/maxmin_distance.py +0 -0
  81. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/cluster/similarity.py +0 -0
  82. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/color_utils.py +0 -0
  83. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/config_utils.py +0 -0
  84. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/converter/__init__.py +0 -0
  85. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/converter/build_coco.py +0 -0
  86. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/converter/convert_labelme2coco.py +0 -0
  87. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/converter/prelabelme.py +0 -0
  88. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/coords_utils.py +0 -0
  89. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/cvutils/__init__.py +0 -0
  90. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/cvutils/corner_utils.py +0 -0
  91. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/cvutils/monitor.py +0 -0
  92. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/cvutils/mouse_utils.py +0 -0
  93. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/cvutils/nms_utils.py +0 -0
  94. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/data_utils.py +0 -0
  95. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/dataloader/__init__.py +0 -0
  96. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/dataloader/balanced_classes.py +0 -0
  97. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/dataloader/voc_seg_utils.py +0 -0
  98. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/filter/QueueTable.py +0 -0
  99. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/filter/__init__.py +0 -0
  100. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/filter/demo.py +0 -0
  101. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/filter/kalman_filter.py +0 -0
  102. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/filter/mean_filter.py +0 -0
  103. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/filter/motion_filter.py +0 -0
  104. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/filter/pose_filter.py +0 -0
  105. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/font_style/__init__.py +0 -0
  106. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/font_utils.py +0 -0
  107. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/http_utils.py +0 -0
  108. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/metrics/__init__.py +0 -0
  109. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/metrics/accuracy.py +0 -0
  110. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/metrics/average_meter.py +0 -0
  111. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/metrics/class_report.py +0 -0
  112. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/metrics/plot_pr.py +0 -0
  113. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/metrics/plot_roc.py +0 -0
  114. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/pose/__init__.py +0 -0
  115. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/pose/bones_utils.py +0 -0
  116. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/pose/human_pose.py +0 -0
  117. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/pose/pose_utils.py +0 -0
  118. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/pycpp/__init__.py +0 -0
  119. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/pycpp/demo.py +0 -0
  120. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/pycpp/main.py +0 -0
  121. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/server/__init__.py +0 -0
  122. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/server/apm_server.py +0 -0
  123. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/thread_utils.py +0 -0
  124. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/tracemalloc_utils.py +0 -0
  125. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/tracemalloc_utils2.py +0 -0
  126. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/tracking/QueueTable.py +0 -0
  127. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/tracking/__init__.py +0 -0
  128. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/tracking/demo.py +0 -0
  129. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/tracking/kalman_filter.py +0 -0
  130. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/tracking/mean_filter.py +0 -0
  131. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/tracking/motion_filter.py +0 -0
  132. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/tracking/pose_filter.py +0 -0
  133. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/transforms/__init__.py +0 -0
  134. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/transforms/affine_transform.py +0 -0
  135. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/transforms/augment_utils.py +0 -0
  136. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/transforms/face_alignment.py +0 -0
  137. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/transforms/transform_utils.py +0 -0
  138. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/web/__init__.py +0 -0
  139. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/web/app_gradio_image.py +0 -0
  140. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/web/app_stweb_image.py +0 -0
  141. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/web/app_webio_image.py +0 -0
  142. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/web/demo.py +0 -0
  143. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/worker.py +0 -0
  144. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils/yaml_utils.py +0 -0
  145. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils.egg-info/dependency_links.txt +0 -0
  146. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils.egg-info/not-zip-safe +0 -0
  147. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/pybaseutils.egg-info/top_level.txt +0 -0
  148. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/setup.cfg +0 -0
  149. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/setup.py +0 -0
  150. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/Image_enhance/__init__.py +0 -0
  151. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/Image_enhance/dmeo01.py +0 -0
  152. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/WebCrawler/__init__.py +0 -0
  153. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/WebCrawler/search_baidu.py +0 -0
  154. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/WebCrawler/search_biying.py +0 -0
  155. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/__init__.py +0 -0
  156. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/aije/__init__.py +0 -0
  157. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/aije/action_dataset.py +0 -0
  158. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/aije/build_cython.py +0 -0
  159. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/aije/build_pyarmor.py +0 -0
  160. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/aije/build_service.py +0 -0
  161. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/aije/convert_cvat2labelme.py +0 -0
  162. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/aije/convert_labelme2coco.py +0 -0
  163. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/aije/convert_labelme2voc.py +0 -0
  164. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/aije/copy_move.py +0 -0
  165. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/aije/demo_labelme_shock.py +0 -0
  166. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/aije/demo_video_aije.py +0 -0
  167. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/aije/demo_voc_crop.py +0 -0
  168. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/aije/demo_voc_vis.py +0 -0
  169. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/aije/get_pair_data.py +0 -0
  170. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/aije/video_convertor.py +0 -0
  171. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/audio/__init__.py +0 -0
  172. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/audio/demo.py +0 -0
  173. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/audio/main.py +0 -0
  174. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/audio/main_read.py +0 -0
  175. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/audio/segment.py +0 -0
  176. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/audio/speechbrain_asr_indoor_prod.py +0 -0
  177. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/audio/speechbrain_demo.py +0 -0
  178. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/audio_demo1.py +0 -0
  179. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/camera/__init__.py +0 -0
  180. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/camera/demo.py +0 -0
  181. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/captcha/__init__.py +0 -0
  182. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/captcha/demo.py +0 -0
  183. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/class_attribute.py +0 -0
  184. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/class_names.py +0 -0
  185. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/AffectNet.py +0 -0
  186. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/AsianMovie.py +0 -0
  187. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/BITVehicle2voc.py +0 -0
  188. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/BSTLD2voc.py +0 -0
  189. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/CCPD.py +0 -0
  190. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/CCPD2voc.py +0 -0
  191. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/FL3D_dataset.py +0 -0
  192. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/FreiHAND2coco.py +0 -0
  193. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/MTFL2voc.py +0 -0
  194. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/TT100K.py +0 -0
  195. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/WaterMeters1.py +0 -0
  196. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/WaterMeters2.py +0 -0
  197. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/__init__.py +0 -0
  198. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/concat_coco.py +0 -0
  199. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/convert_coco2voc.py +0 -0
  200. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/convert_cvat2labelme.py +0 -0
  201. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/convert_gesture2hand.py +0 -0
  202. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/convert_labelme2coco.py +0 -0
  203. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/convert_labelme2cvat.py +0 -0
  204. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/convert_labelme2labelme.py +0 -0
  205. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/convert_labelme2voc.py +0 -0
  206. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/convert_voc2labelme.py +0 -0
  207. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/fatigue_driving.py +0 -0
  208. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/fdd_dataset.py +0 -0
  209. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/get_pair_data.py +0 -0
  210. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/handpose2coco.py +0 -0
  211. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/insects_for_aichallenger.py +0 -0
  212. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/tt100k_utils.py +0 -0
  213. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/ua_detrac2voc.py +0 -0
  214. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/ucf101_dataset.py +0 -0
  215. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/converter/voc_sbd2labelme.py +0 -0
  216. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/cython_build/__init__.py +0 -0
  217. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/cython_build/build_cython.py +0 -0
  218. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/cython_build/build_pyarmor.py +0 -0
  219. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/cython_build/cryptography_demo.py +0 -0
  220. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/cython_build/fun_sum.py +0 -0
  221. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/cython_build/main.py +0 -0
  222. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/cython_build/model_des_enctypt.py +0 -0
  223. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/cython_build/model_enctypt.py +0 -0
  224. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/date_dataset.py +0 -0
  225. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/date_demo.py +0 -0
  226. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/datedataset_bk.py +0 -0
  227. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo3.py +0 -0
  228. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_async_await1.py +0 -0
  229. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_async_await2.py +0 -0
  230. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_coco_vis.py +0 -0
  231. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_copy_files_for_voc.py +0 -0
  232. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_ffmpy.py +0 -0
  233. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_for_annular_to_rect.py +0 -0
  234. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_for_pair_file.py +0 -0
  235. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_for_polygon.py +0 -0
  236. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_for_trt.py +0 -0
  237. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_get_file_label.py +0 -0
  238. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_get_file_list.py +0 -0
  239. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_gif.py +0 -0
  240. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_gif_video.py +0 -0
  241. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_image_crop.py +0 -0
  242. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_kpts.py +0 -0
  243. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_labelme.py +0 -0
  244. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_labelme_crop.py +0 -0
  245. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_lableme_vis.py +0 -0
  246. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_metrics.py +0 -0
  247. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_mosaic.py +0 -0
  248. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_mouse.py +0 -0
  249. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_nii.py +0 -0
  250. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_pandas.py +0 -0
  251. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_plot.py +0 -0
  252. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_prelabelme.py +0 -0
  253. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_standard_image .py +0 -0
  254. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_standard_video .py +0 -0
  255. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_taichi.py +0 -0
  256. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_video.py +0 -0
  257. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_video_crop.py +0 -0
  258. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_voc_crop.py +0 -0
  259. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_word_similar.py +0 -0
  260. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_worker1.py +0 -0
  261. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/demo_worker2.py +0 -0
  262. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/detector/__init__.py +0 -0
  263. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/detector/demo.py +0 -0
  264. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/detector/detect_face_person.py +0 -0
  265. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/detector/predet_labelme.py +0 -0
  266. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/edit_distance/__init__.py +0 -0
  267. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/edit_distance/demo.py +0 -0
  268. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/edit_distance/text_matching.py +0 -0
  269. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/flask_demo/__init__.py +0 -0
  270. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/flask_demo/app.py +0 -0
  271. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/flask_demo/utils/__init__.py +0 -0
  272. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/flask_demo/utils/utils.py +0 -0
  273. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/get_file_list.py +0 -0
  274. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/gradio_app.py +0 -0
  275. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/gradio_app_v2.py +0 -0
  276. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/image_correction/__init__.py +0 -0
  277. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/image_correction/demo_correction_v1.py +0 -0
  278. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/image_correction/demo_correction_v2.py +0 -0
  279. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/image_correction/demo_correction_v3.py +0 -0
  280. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/kafka_worker.py +0 -0
  281. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/men_tracemalloc.py +0 -0
  282. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/milvus_demo/__init__.py +0 -0
  283. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/milvus_demo/demo01.py +0 -0
  284. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/milvus_demo/demo02.py +0 -0
  285. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/milvus_demo/hello_milvus.py +0 -0
  286. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/milvus_demo/milvus_client.py +0 -0
  287. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/performance.py +0 -0
  288. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/pose/__init__.py +0 -0
  289. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/pose/human_pose.py +0 -0
  290. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/redis_py/__init__.py +0 -0
  291. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/redis_py/knn_search.py +0 -0
  292. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/redis_py/redis_client.py +0 -0
  293. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/registry/__init__.py +0 -0
  294. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/registry/base.py +0 -0
  295. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/registry/component.py +0 -0
  296. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/registry/main.py +0 -0
  297. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/registry/register.py +0 -0
  298. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/single_class/GRU.py +0 -0
  299. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/single_class/TCN.py +0 -0
  300. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/single_class/__init__.py +0 -0
  301. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/single_class/demo.py +0 -0
  302. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/test_fr/__init__.py +0 -0
  303. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/test_fr/demo11.py +0 -0
  304. {pybaseutils-2.3.2 → pybaseutils-2.3.4}/test_py/test_fr/idcardocr.py +0 -0
@@ -1,18 +1,13 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.1
2
2
  Name: pybaseutils
3
- Version: 2.3.2
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
+
@@ -8,4 +8,4 @@
8
8
  # --------------------------------------------------------
9
9
  """
10
10
 
11
- __version__ = '2.3.2'
11
+ __version__ = '2.3.4'
@@ -1,9 +1,11 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  """
3
- @Author : Pan
4
- @E-mail : 390737991@qq.com
5
- @Date : 2022-03-22 09:11:35
6
- @Brief :
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
- @Author : Pan
4
- @E-mail : 390737991@qq.com
5
- @Date : 2022-06-06 14:34:38
6
- @Brief :
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
- @Author : Pan
4
- @E-mail : 390737991@qq.com
5
- @Date : 2022-09-05 19:48:52
6
- @Brief :
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
- @Author : Pan
4
- @E-mail : 390737991@qq.com
5
- @Date : 2022-09-05 19:48:52
6
- @Brief :
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
- # @Project:
5
- # @Author : panjq
6
- # @Date : 2020-02-12 18:28:16
7
- # @url :
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
- @Author : Pan
4
- @E-mail : 390737991@qq.com
5
- @Date : 2022-10-12 16:21:55
6
- @Brief :
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
- @Author : Pan
4
- @E-mail : 390737991@qq.com
5
- @Date : 2022-10-12 16:21:55
6
- @Brief :
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
- @Author : Pan
4
- @E-mail : 390737991@qq.com
5
- @Date : 2022-10-12 16:21:55
6
- @Brief :
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
- @Author : Pan
4
- @E-mail : 390737991@qq.com
5
- @Date : 2022-10-12 16:21:55
6
- @Brief :
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
- @Author : Pan
4
- @E-mail : 390737991@qq.com
5
- @Date : 2022-10-12 16:21:55
6
- @Brief :
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 : 390737991@qq.com
7
- # @Date : 2020-02-14 09:15:52
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
- # @Project:
5
- # @Author : panjq
6
- # @Date : 2020-02-12 18:28:16
7
- # @url :
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
- @Author : Pan
4
- @E-mail : 390737991@qq.com
5
- @Date : 2022-10-12 16:21:55
6
- @Brief :
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
- @Author : Pan
4
- @E-mail : 390737991@qq.com
5
- @Date : 2022-10-12 16:21:55
6
- @Brief :
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
- @Author : Pan
4
- @E-mail : 390737991@qq.com
5
- @Date : 2022-10-12 16:21:55
6
- @Brief :
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
- @Author : Pan
4
- @E-mail : 390737991@qq.com
5
- @Date : 2022-10-12 16:21:55
6
- @Brief :
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
- @Author : PKing
4
- @E-mail :
5
- @Date : 2023-08-10 10:18:32
6
- @Brief :
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
- @Author : PKing
4
- @E-mail :
5
- @Date : 2023-08-10 10:18:32
6
- @Brief :
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
- @Author : Pan
4
- @E-mail :
5
- @Date : 2021-04-21 09:41:34
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
- @Author : PKing
4
- @E-mail :
5
- @Date : 2023-08-10 10:18:32
6
- @Brief :
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
- @Author : PKing
4
- @E-mail :
5
- @Date : 2023-08-10 10:18:32
6
- @Brief :
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
- @Author : PKing
4
- @E-mail :
5
- @Date : 2023-08-10 10:18:32
6
- @Brief :
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 = "/media/PKing/新加卷1/SDK/base-utils/data/coco/JPEGImages"
139
- anno_file = "/media/PKing/新加卷1/SDK/base-utils/data/coco/coco_kps.json"
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)):