pybaseutils 2.2.4__tar.gz → 2.2.5__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 (270) hide show
  1. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/PKG-INFO +1 -1
  2. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/__init__.py +1 -1
  3. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/converter/build_labelme.py +7 -3
  4. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/converter/convert_labelme2cvat.py +2 -1
  5. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/dataloader/parser_labelme.py +40 -38
  6. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/file_utils.py +13 -1
  7. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/transforms/augment_utils.py +63 -5
  8. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils.egg-info/PKG-INFO +1 -1
  9. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/LICENCE +0 -0
  10. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/README.md +0 -0
  11. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/audio/__init__.py +0 -0
  12. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/audio/audio_utils.py +0 -0
  13. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/audio/pyaudio_utils.py +0 -0
  14. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/audio/vad_utils.py +0 -0
  15. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/base64_utils.py +0 -0
  16. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/batch_utils.py +0 -0
  17. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/build_utils/__init__.py +0 -0
  18. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/build_utils/cython_utils.py +0 -0
  19. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/build_utils/pyarmor_utils.py +0 -0
  20. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/cluster/__init__.py +0 -0
  21. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/cluster/kmean.py +0 -0
  22. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/cluster/maxmin_distance.py +0 -0
  23. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/cluster/similarity.py +0 -0
  24. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/color_utils.py +0 -0
  25. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/config_utils.py +0 -0
  26. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/converter/__init__.py +0 -0
  27. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/converter/build_coco.py +0 -0
  28. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/converter/build_cvat.py +0 -0
  29. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/converter/build_voc.py +0 -0
  30. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/converter/concat_coco.py +0 -0
  31. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/converter/convert_coco2labelme.py +0 -0
  32. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/converter/convert_coco2voc.py +0 -0
  33. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/converter/convert_cvat2labelme.py +0 -0
  34. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/converter/convert_labelme2coco.py +0 -0
  35. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/converter/convert_labelme2voc.py +0 -0
  36. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/converter/convert_labelme2yolo.py +0 -0
  37. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/converter/convert_voc2coco.py +0 -0
  38. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/converter/convert_voc2labelme.py +0 -0
  39. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/converter/convert_voc2voc.py +0 -0
  40. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/converter/convert_voc2yolo.py +0 -0
  41. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/converter/convert_yolo2voc.py +0 -0
  42. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/coords_utils.py +0 -0
  43. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/cvutils/__init__.py +0 -0
  44. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/cvutils/corner_utils.py +0 -0
  45. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/cvutils/monitor.py +0 -0
  46. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/cvutils/mouse_utils.py +0 -0
  47. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/cvutils/nms_utils.py +0 -0
  48. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/cvutils/video_utils.py +0 -0
  49. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/dataloader/__init__.py +0 -0
  50. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/dataloader/balanced_classes.py +0 -0
  51. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/dataloader/base_coco.py +0 -0
  52. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/dataloader/base_dataset.py +0 -0
  53. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/dataloader/data_resample.py +0 -0
  54. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/dataloader/parser_coco_det.py +0 -0
  55. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/dataloader/parser_coco_ins.py +0 -0
  56. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/dataloader/parser_coco_kps.py +0 -0
  57. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/dataloader/parser_image_folder.py +0 -0
  58. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/dataloader/parser_image_text.py +0 -0
  59. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/dataloader/parser_voc.py +0 -0
  60. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/dataloader/parser_yolo.py +0 -0
  61. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/dataloader/voc_seg_utils.py +0 -0
  62. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/filter/QueueTable.py +0 -0
  63. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/filter/__init__.py +0 -0
  64. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/filter/demo.py +0 -0
  65. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/filter/kalman_filter.py +0 -0
  66. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/filter/mean_filter.py +0 -0
  67. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/filter/motion_filter.py +0 -0
  68. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/filter/pose_filter.py +0 -0
  69. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/font_style/__init__.py +0 -0
  70. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/font_utils.py +0 -0
  71. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/geometry_tools.py +0 -0
  72. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/heatmap_utils.py +0 -0
  73. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/image_utils.py +0 -0
  74. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/json_utils.py +0 -0
  75. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/log.py +0 -0
  76. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/log_utils.py +0 -0
  77. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/logger.py +0 -0
  78. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/metrics/__init__.py +0 -0
  79. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/metrics/accuracy.py +0 -0
  80. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/metrics/average_meter.py +0 -0
  81. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/metrics/class_report.py +0 -0
  82. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/metrics/plot_pr.py +0 -0
  83. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/metrics/plot_roc.py +0 -0
  84. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/numpy_utils.py +0 -0
  85. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/pandas_utils.py +0 -0
  86. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/plot_utils.py +0 -0
  87. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/pose/__init__.py +0 -0
  88. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/pose/bones_utils.py +0 -0
  89. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/pose/human_pose.py +0 -0
  90. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/pose/pose_utils.py +0 -0
  91. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/pycpp/__init__.py +0 -0
  92. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/pycpp/demo.py +0 -0
  93. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/pycpp/main.py +0 -0
  94. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/server/__init__.py +0 -0
  95. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/server/apm_server.py +0 -0
  96. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/setup_config.py +0 -0
  97. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/singleton_utils.py +0 -0
  98. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/text_utils.py +0 -0
  99. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/thread_utils.py +0 -0
  100. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/time_utils.py +0 -0
  101. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/tracemalloc_utils.py +0 -0
  102. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/tracemalloc_utils2.py +0 -0
  103. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/tracking/QueueTable.py +0 -0
  104. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/tracking/__init__.py +0 -0
  105. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/tracking/demo.py +0 -0
  106. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/tracking/kalman_filter.py +0 -0
  107. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/tracking/mean_filter.py +0 -0
  108. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/tracking/motion_filter.py +0 -0
  109. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/tracking/pose_filter.py +0 -0
  110. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/transforms/__init__.py +0 -0
  111. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/transforms/affine_transform.py +0 -0
  112. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/transforms/face_alignment.py +0 -0
  113. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/transforms/transform_utils.py +0 -0
  114. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/word_utils.py +0 -0
  115. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/worker.py +0 -0
  116. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils/yaml_utils.py +0 -0
  117. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils.egg-info/SOURCES.txt +0 -0
  118. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils.egg-info/dependency_links.txt +0 -0
  119. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils.egg-info/not-zip-safe +0 -0
  120. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/pybaseutils.egg-info/top_level.txt +0 -0
  121. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/setup.cfg +0 -0
  122. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/setup.py +0 -0
  123. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/Image_enhance/__init__.py +0 -0
  124. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/Image_enhance/dmeo01.py +0 -0
  125. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/WebCrawler/__init__.py +0 -0
  126. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/WebCrawler/search_image.py +0 -0
  127. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/WebCrawler/search_image_for_baidu.py +0 -0
  128. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/__init__.py +0 -0
  129. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/aije/__init__.py +0 -0
  130. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/aije/action_dataset.py +0 -0
  131. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/aije/build_cython.py +0 -0
  132. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/aije/build_pyarmor.py +0 -0
  133. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/aije/build_service.py +0 -0
  134. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/aije/convert_cvat2labelme.py +0 -0
  135. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/aije/convert_labelme2coco.py +0 -0
  136. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/aije/convert_labelme2voc.py +0 -0
  137. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/aije/copy_move.py +0 -0
  138. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/aije/demo_labelme_crop.py +0 -0
  139. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/aije/demo_labelme_shock.py +0 -0
  140. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/aije/demo_video_aije.py +0 -0
  141. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/aije/demo_voc_crop.py +0 -0
  142. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/aije/demo_voc_vis.py +0 -0
  143. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/aije/get_pair_data.py +0 -0
  144. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/aije/video_convertor.py +0 -0
  145. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/audio/__init__.py +0 -0
  146. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/audio/demo.py +0 -0
  147. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/audio/main.py +0 -0
  148. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/audio/main_read.py +0 -0
  149. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/audio/segment.py +0 -0
  150. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/audio/speechbrain_asr_indoor_prod.py +0 -0
  151. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/audio/speechbrain_demo.py +0 -0
  152. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/captcha/__init__.py +0 -0
  153. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/captcha/demo.py +0 -0
  154. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/class_attribute.py +0 -0
  155. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/class_names.py +0 -0
  156. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/converter/AffectNet.py +0 -0
  157. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/converter/AsianMovie.py +0 -0
  158. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/converter/BITVehicle2voc.py +0 -0
  159. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/converter/BSTLD2voc.py +0 -0
  160. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/converter/CCPD.py +0 -0
  161. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/converter/CCPD2voc.py +0 -0
  162. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/converter/FL3D_dataset.py +0 -0
  163. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/converter/FreiHAND2coco.py +0 -0
  164. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/converter/MTFL2voc.py +0 -0
  165. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/converter/TT100K.py +0 -0
  166. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/converter/WaterMeters1.py +0 -0
  167. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/converter/WaterMeters2.py +0 -0
  168. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/converter/__init__.py +0 -0
  169. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/converter/concat_coco.py +0 -0
  170. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/converter/convert_coco2voc.py +0 -0
  171. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/converter/convert_cvat2labelme.py +0 -0
  172. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/converter/convert_gesture2hand.py +0 -0
  173. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/converter/convert_labelme2coco.py +0 -0
  174. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/converter/convert_labelme2cvat.py +0 -0
  175. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/converter/convert_labelme2voc.py +0 -0
  176. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/converter/convert_voc2labelme.py +0 -0
  177. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/converter/fatigue_driving.py +0 -0
  178. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/converter/fdd_dataset.py +0 -0
  179. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/converter/get_pair_data.py +0 -0
  180. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/converter/handpose2coco.py +0 -0
  181. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/converter/insects_for_aichallenger.py +0 -0
  182. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/converter/tt100k_utils.py +0 -0
  183. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/converter/ua_detrac2voc.py +0 -0
  184. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/converter/ucf101_dataset.py +0 -0
  185. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/converter/voc_sbd2labelme.py +0 -0
  186. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/cython_build/__init__.py +0 -0
  187. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/cython_build/build_cython.py +0 -0
  188. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/cython_build/build_pyarmor.py +0 -0
  189. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/cython_build/cryptography_demo.py +0 -0
  190. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/cython_build/fun_sum.py +0 -0
  191. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/cython_build/main.py +0 -0
  192. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/cython_build/model_des_enctypt.py +0 -0
  193. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/cython_build/model_enctypt.py +0 -0
  194. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/demo1.py +0 -0
  195. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/demo2.py +0 -0
  196. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/demo3.py +0 -0
  197. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/demo_async_await1.py +0 -0
  198. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/demo_async_await2.py +0 -0
  199. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/demo_coco_vis.py +0 -0
  200. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/demo_copy_files.py +0 -0
  201. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/demo_copy_files_for_voc.py +0 -0
  202. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/demo_ffmpy.py +0 -0
  203. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/demo_for_pair_file.py +0 -0
  204. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/demo_for_polygon.py +0 -0
  205. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/demo_for_trt.py +0 -0
  206. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/demo_get_file_label.py +0 -0
  207. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/demo_get_file_list.py +0 -0
  208. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/demo_gif.py +0 -0
  209. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/demo_gif_video.py +0 -0
  210. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/demo_image_crop.py +0 -0
  211. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/demo_kpts.py +0 -0
  212. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/demo_labelme.py +0 -0
  213. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/demo_labelme_crop.py +0 -0
  214. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/demo_lableme_vis.py +0 -0
  215. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/demo_metrics.py +0 -0
  216. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/demo_mouse.py +0 -0
  217. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/demo_nii.py +0 -0
  218. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/demo_pandas.py +0 -0
  219. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/demo_plot.py +0 -0
  220. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/demo_rename.py +0 -0
  221. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/demo_standard_image .py +0 -0
  222. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/demo_standard_video .py +0 -0
  223. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/demo_taichi.py +0 -0
  224. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/demo_video.py +0 -0
  225. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/demo_video_crop.py +0 -0
  226. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/demo_voc_crop.py +0 -0
  227. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/demo_voc_vis.py +0 -0
  228. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/demo_word_similar.py +0 -0
  229. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/demo_worker1.py +0 -0
  230. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/demo_worker2.py +0 -0
  231. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/detector/__init__.py +0 -0
  232. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/detector/demo.py +0 -0
  233. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/detector/detect_face_person.py +0 -0
  234. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/detector/predet_labelme.py +0 -0
  235. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/edit_distance/__init__.py +0 -0
  236. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/edit_distance/demo.py +0 -0
  237. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/edit_distance/text_matching.py +0 -0
  238. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/flask_demo/__init__.py +0 -0
  239. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/flask_demo/func.py +0 -0
  240. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/flask_demo/server.py +0 -0
  241. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/get_file_list.py +0 -0
  242. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/image_correction/__init__.py +0 -0
  243. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/image_correction/demo_correction_v1.py +0 -0
  244. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/image_correction/demo_correction_v2.py +0 -0
  245. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/image_correction/demo_correction_v3.py +0 -0
  246. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/kafka_worker.py +0 -0
  247. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/men_tracemalloc.py +0 -0
  248. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/milvus_demo/__init__.py +0 -0
  249. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/milvus_demo/demo01.py +0 -0
  250. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/milvus_demo/demo02.py +0 -0
  251. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/milvus_demo/hello_milvus.py +0 -0
  252. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/milvus_demo/milvus_client.py +0 -0
  253. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/performance.py +0 -0
  254. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/pose/__init__.py +0 -0
  255. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/pose/human_pose.py +0 -0
  256. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/redis_py/__init__.py +0 -0
  257. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/redis_py/knn_search.py +0 -0
  258. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/redis_py/redis_client.py +0 -0
  259. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/registry/__init__.py +0 -0
  260. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/registry/base.py +0 -0
  261. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/registry/component.py +0 -0
  262. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/registry/main.py +0 -0
  263. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/registry/register.py +0 -0
  264. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/single_class/GRU.py +0 -0
  265. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/single_class/TCN.py +0 -0
  266. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/single_class/__init__.py +0 -0
  267. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/single_class/demo.py +0 -0
  268. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/test_fr/__init__.py +0 -0
  269. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/test_fr/demo11.py +0 -0
  270. {pybaseutils-2.2.4 → pybaseutils-2.2.5}/test_py/test_fr/idcardocr.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pybaseutils
3
- Version: 2.2.4
3
+ Version: 2.2.5
4
4
  Summary: pybaseutils
5
5
  Home-page: https://github.com/PanJinquan/base-utils
6
6
  Author: PanJinquan
@@ -5,4 +5,4 @@
5
5
  @Date : 2019-05-07 17:40:27
6
6
  """
7
7
 
8
- __version__ = '2.2.4'
8
+ __version__ = '2.2.5'
@@ -12,7 +12,7 @@ from tqdm import tqdm
12
12
  from pybaseutils import image_utils, file_utils, json_utils
13
13
 
14
14
 
15
- def maker_labelme(json_file, points, labels, image_name, image_size, keypoints=[], image_bs64=None):
15
+ def maker_labelme(json_file, points, labels, image_name, image_size, image_bs64=None, keypoints=[]):
16
16
  """
17
17
  制作label数据格式
18
18
  :param json_file: 保存json文件路径
@@ -21,16 +21,20 @@ def maker_labelme(json_file, points, labels, image_name, image_size, keypoints=[
21
21
  :param image_name: 图片名称,如果存在则进行拷贝到json_file同一级目录
22
22
  :param image_size: (W,H)
23
23
  :param image_bs64: 图片base64编码,可为None
24
+ :param keypoints: [(N,3),(N,3),...]
24
25
  :return:
25
26
  """
26
27
  assert len(points) == len(labels)
27
28
  file_utils.create_file_path(json_file)
28
29
  shapes = []
29
- for point, label in zip(points, labels):
30
+ if isinstance(keypoints, np.ndarray): keypoints = keypoints.tolist()
31
+ for i in range(len(points)):
30
32
  # point = [[x1,y1],[x2,y2],...,[xn,yn]]
33
+ point, label = points[i], labels[i]
31
34
  if isinstance(point, np.ndarray): point = point.tolist()
32
35
  if not isinstance(point[0], list): point = [point]
33
- item = {"label": label, "score": None, "keypoints": keypoints, "line_color": None, "fill_color": None,
36
+ kpts = keypoints[i] if keypoints else []
37
+ item = {"label": label, "score": None, "keypoints": kpts, "line_color": None, "fill_color": None,
34
38
  "group_id": None, "points": point, "shape_type": "polygon", "flags": {}, "description": ""}
35
39
  shapes.append(item)
36
40
  data = {
@@ -27,7 +27,8 @@ def convert_labelme2cvat(anno_dir, image_dir="", vis=False):
27
27
  image_name = os.path.basename(image_file)
28
28
  json_file = os.path.join(anno_dir, image_name.split(".")[0] + ".json")
29
29
  xml_file = os.path.join(image_dir, image_name.split(".")[0] + ".xml")
30
- boxes, labels, points, groups = parser_labelme.parser_labelme(json_file, class_dict={})
30
+ info = parser_labelme.parser_labelme(json_file, class_dict={})
31
+ boxes, labels, points = info["boxes"], info["points"], info["labels"]
31
32
  image = cv2.imread(image_file)
32
33
  h, w = image.shape[:2]
33
34
  build_cvat.maker_cvat(xml_file, points, labels, image_name, image_size=[w, h])
@@ -114,13 +114,12 @@ class LabelMeDataset(Dataset):
114
114
  if not os.path.exists(image_file):
115
115
  continue
116
116
  annotation, width, height = self.load_annotations(anno_file)
117
- box, label, point, group, names = self.parser_annotation(annotation, self.class_dict,
118
- min_points=self.min_points,
119
- unique=self.unique)
120
- if len(label) == 0:
117
+ info = self.parser_annotation(annotation, self.class_dict, min_points=self.min_points, unique=self.unique)
118
+ labels = info["labels"]
119
+ if len(labels) == 0:
121
120
  continue
122
121
  dst_ids.append(image_id)
123
- class_name += label
122
+ class_name += labels
124
123
  if self.class_name is None:
125
124
  class_name = sorted(list(set(class_name)))
126
125
  self.class_name, self.class_dict = self.parser_classes(class_name)
@@ -170,11 +169,12 @@ class LabelMeDataset(Dataset):
170
169
  annotation, width, height = self.load_annotations(anno_file)
171
170
  image = self.read_image(image_file, use_rgb=self.use_rgb)
172
171
  shape = image.shape
173
- boxes, labels, points, groups, names = self.parser_annotation(annotation, self.class_dict, shape,
174
- min_points=self.min_points, unique=self.unique)
175
- data = {"image": image, "points": points, "boxes": boxes, "labels": labels, "groups": groups, "names": names,
176
- "image_file": image_file, "anno_file": anno_file, "size": [shape[1], shape[0]]}
177
- return data
172
+ data_info = self.parser_annotation(annotation, self.class_dict, shape, min_points=self.min_points,
173
+ unique=self.unique)
174
+ # TODO dict(boxes, labels, points, groups, names, keypoints)
175
+ data_info.update({"image": image, "image_file": image_file, "anno_file": anno_file,
176
+ "size": [shape[1], shape[0]]})
177
+ return data_info
178
178
 
179
179
  @staticmethod
180
180
  def parser_annotation(annotation: dict, class_dict={}, shape=None, min_points=-1, unique=False):
@@ -185,7 +185,7 @@ class LabelMeDataset(Dataset):
185
185
  :param min_points: 当标注的轮廓点的个数小于等于min_points,会被剔除;负数不剔除
186
186
  :return:
187
187
  """
188
- bboxes, labels, points, groups, names = [], [], [], [], []
188
+ bboxes, labels, points, groups, names, keypoints = [], [], [], [], [], []
189
189
  for anno in annotation:
190
190
  name = "unique" if unique else anno["label"]
191
191
  label = name
@@ -198,8 +198,9 @@ class LabelMeDataset(Dataset):
198
198
  pts = np.asarray(anno["points"], dtype=np.int32)
199
199
  if min_points > 0 and len(pts) <= min_points:
200
200
  continue
201
- group_id = json_utils.get_value(anno, key=["group_id"], default=0)
202
- group_id = group_id if group_id else 0
201
+ gid = json_utils.get_value(anno, key=["group_id"], default=0)
202
+ gid = gid if gid else 0
203
+ kpt = json_utils.get_value(anno, key=["keypoints"], default=[])
203
204
  if shape:
204
205
  h, w = shape[:2]
205
206
  pts[:, 0] = np.clip(pts[:, 0], 0, w - 1)
@@ -209,8 +210,9 @@ class LabelMeDataset(Dataset):
209
210
  labels.append(label)
210
211
  bboxes.append(box)
211
212
  points.append(pts)
212
- groups.append(group_id)
213
- return bboxes, labels, points, groups, names
213
+ groups.append(gid)
214
+ keypoints.append(kpt)
215
+ return dict(boxes=bboxes, labels=labels, points=points, groups=groups, names=names, keypoints=keypoints)
214
216
 
215
217
  def index2id(self, index):
216
218
  """
@@ -327,7 +329,7 @@ class LabelMeDataset(Dataset):
327
329
  return annos, width, height
328
330
 
329
331
  @staticmethod
330
- def get_targets(data_info: dict, targets, keys=['points', 'boxes', 'labels', 'groups', 'names']):
332
+ def get_targets(data_info: dict, targets, keys=['points', 'boxes', 'labels', 'groups', 'names', 'keypoints']):
331
333
  names = data_info["names"]
332
334
  out = {}
333
335
  for i in range(len(names)):
@@ -439,16 +441,28 @@ def parser_labelme(anno_file, class_dict={}, shape=None):
439
441
  :return:
440
442
  """
441
443
  annotation, width, height = LabelMeDataset.load_annotations(anno_file)
442
- bboxes, labels, points, groups, names = LabelMeDataset.parser_annotation(annotation, class_dict, shape)
443
- return bboxes, labels, points, groups, names
444
+ info = LabelMeDataset.parser_annotation(annotation, class_dict, shape)
445
+ return info
444
446
 
445
447
 
446
- def show_target_image(image, bboxes, labels, points, color=(), thickness=1):
447
- # image = image_utils.draw_image_bboxes_text(image, bboxes, labels, color=(255, 0, 0),
448
- # thickness=2, fontScale=1.2, drawType="chinese")
448
+ def draw_keypoints_image(image, boxes, keypoints):
449
+ """绘制keypoints"""
449
450
  # image = image_utils.draw_landmark(image, points, color=(0, 255, 0))
450
451
  # image = image_utils.draw_key_point_in_image(image, points)
452
+ if len(keypoints) > 0:
453
+ from pybaseutils.pose import bones_utils
454
+ target_bones = bones_utils.get_target_bones("coco_person")
455
+ image = image_utils.draw_key_point_in_image(image, keypoints, pointline=target_bones["skeleton"],
456
+ colors=target_bones["colors"], thickness=2,
457
+ boxes=boxes, vis_id=False)
458
+ return image
459
+
460
+
461
+ def show_target_image(image, boxes, labels, points, keypoints=[], color=(), thickness=1):
462
+ # image = image_utils.draw_image_bboxes_text(image, boxes, labels, color=(255, 0, 0),
463
+ # thickness=2, fontScale=1.2, drawType="chinese")
451
464
  image = image_utils.draw_image_contours(image, points, labels, color=color, thickness=thickness)
465
+ image = draw_keypoints_image(image, boxes, keypoints)
452
466
  image_utils.cv_show_image("det", image)
453
467
  return image
454
468
 
@@ -456,20 +470,8 @@ def show_target_image(image, bboxes, labels, points, color=(), thickness=1):
456
470
  if __name__ == "__main__":
457
471
  from pybaseutils.converter import build_labelme
458
472
 
459
- anno_dir = "/home/PKing/nasdata/dataset-dmai/AIJE/dataset/aije-indoor-det/dataset-v1/json"
460
- anno_dir = "/home/PKing/nasdata/dataset-dmai/AIJE/dataset/aije-indoor-det/dataset-v7/json"
461
- anno_dir = "/home/PKing/nasdata/dataset-dmai/AIJE/dataset/使用钳形电流表测量低压线路电流/dataset-v1/json"
462
- # anno_dir = [anno_dir, anno_dir]
463
- names = ['A相电线', 'B相电线', 'C相电线', 'N相电线']
464
-
465
- anno_dir = "/home/PKing/nasdata/dataset-dmai/AIJE/dataset/aije-indoor-det/dataset-v11/json"
466
- # anno_dir = "/home/PKing/Downloads/labelme/json"
467
- # anno_dir = "/media/PKing/新加卷1/SDK/base-utils/data/coco/json"
468
- # # names = ["car", "dog", "person", "unique"]
469
- # names = ["BG", "unique"]
470
- # # names = ["car", "dog", "person"]
471
- # # names = ["dog", "car,person"]
472
- # # names = {"car": 1, "person": 0}
473
+ anno_dir = "/home/PKing/Downloads/sample/images"
474
+ # anno_dir = "/home/PKing/Downloads/冲击试验/sample/images"
473
475
  names = None
474
476
  dataset = LabelMeDatasets(filename=None,
475
477
  data_root=None,
@@ -482,9 +484,9 @@ if __name__ == "__main__":
482
484
  print("have num:{}".format(len(dataset)))
483
485
  for i in range(len(dataset)):
484
486
  print(i) # i=20
485
- data = dataset.__getitem__(12)
486
- image, points, bboxes, labels = data["image"], data["points"], data["boxes"], data["labels"]
487
+ data = dataset.__getitem__(i)
488
+ image, points, boxes, labels = data["image"], data["points"], data["boxes"], data["labels"]
487
489
  h, w = image.shape[:2]
488
490
  image_file = data["image_file"]
489
491
  anno_file = os.path.join("masker", "{}.json".format(os.path.basename(image_file).split(".")[0]))
490
- show_target_image(image, bboxes, labels, points)
492
+ show_target_image(image, boxes, labels, points, keypoints=data["keypoints"])
@@ -24,7 +24,7 @@ from datetime import datetime
24
24
  from tqdm import tqdm
25
25
 
26
26
  IMG_POSTFIX = ['*.jpg', '*.jpeg', '*.png', '*.tif', "*.JPG", "*.bmp"]
27
- VIDEO_POSTFIX = ['*.mp4', '*.avi', '*.mov', "*.flv"]
27
+ VIDEO_POSTFIX = ['*.mp4', '*.avi', '*.mov', "*.flv", "*.dav"]
28
28
  AUDIO_POSTFIX = ['*.mp3', '*.wav']
29
29
 
30
30
 
@@ -363,6 +363,18 @@ def get_basename(file_list):
363
363
  return dest_list
364
364
 
365
365
 
366
+ def change_postfix(file: str, postfix: str):
367
+ """
368
+ 修改后缀名称
369
+ :param file:
370
+ :param postfix:
371
+ :return:
372
+ """
373
+ src_pos = file.split(".")[-1]
374
+ file = file[:-len(f".{src_pos}")] + postfix
375
+ return file
376
+
377
+
366
378
  def randam_select_images(image_list, nums, shuffle=True):
367
379
  """
368
380
  randam select nums images
@@ -3,7 +3,8 @@
3
3
  @Author : PKing
4
4
  @E-mail :
5
5
  @Date : 2024-07-25 08:33:57
6
- @Brief : https://imgaug.readthedocs.io/en/latest/index.html
6
+ @Brief : https://github.com/aleju/imgaug-doc
7
+ https://imgaug.readthedocs.io/en/latest/index.html
7
8
  """
8
9
  import os
9
10
  import cv2
@@ -14,8 +15,11 @@ from imgaug import augmenters as iaa
14
15
  from imgaug import parameters as iap
15
16
  import imgaug.augmenters.meta as meta
16
17
  from pybaseutils import file_utils, image_utils
18
+ import imgaug as ia
17
19
  from imgaug.augmentables.segmaps import SegmentationMapsOnImage
18
20
  from imgaug.augmentables.kps import KeypointsOnImage
21
+ from imgaug.augmentables import Keypoint, KeypointsOnImage
22
+ from imgaug.augmentables.polys import Polygon, PolygonsOnImage
19
23
 
20
24
 
21
25
  class Compose(object):
@@ -70,8 +74,8 @@ class Transpose(meta.Augmenter):
70
74
 
71
75
  class Normalize(meta.Augmenter):
72
76
  def __init__(self, mean, std, p=1, seed=None, name=None, random_state="deprecated", deterministic="deprecated"):
73
- self.mean = mean
74
- self.std = std
77
+ self.mean = np.array(mean, dtype=np.float32)
78
+ self.std = np.array(std, dtype=np.float32)
75
79
  super(Normalize, self).__init__(
76
80
  seed=seed, name=name,
77
81
  random_state=random_state, deterministic=deterministic)
@@ -91,6 +95,40 @@ class Normalize(meta.Augmenter):
91
95
  return image
92
96
 
93
97
 
98
+ def decode_polygons(polygons: List, shape) -> ia.PolygonsOnImage:
99
+ """
100
+ :param polygons: [(N,2),(N,2),....,]
101
+ :param shape:
102
+ :return:
103
+ """
104
+ polygons = [Polygon(c) for c in polygons]
105
+ P = ia.PolygonsOnImage(polygons, shape=shape)
106
+ return P
107
+
108
+
109
+ def encode_polygons(polygons: ia.PolygonsOnImage) -> List:
110
+ polygons = [item.coords for item in polygons.polygons]
111
+ return polygons
112
+
113
+
114
+ aug_seq = iaa.Sequential([
115
+ iaa.MotionBlur(k=15), # 运动模糊
116
+ iaa.Clouds(), # 云雾
117
+ iaa.imgcorruptlike.Fog(severity=1), # 多雾/霜
118
+ iaa.imgcorruptlike.Snow(severity=2), # 下雨、大雪
119
+ iaa.Rain(drop_size=(0.10, 0.20), speed=(0.2, 0.3)), # 雨
120
+ iaa.Rain(speed=(0.3, 0.5)), # 雨
121
+ iaa.Snowflakes(flake_size=(0.6, 0.7), speed=(0.02, 0.03)), # 雪点
122
+ iaa.imgcorruptlike.Spatter(severity=2), # 溅 123水滴、45泥
123
+ iaa.contrast.LinearContrast((0.5, 2.0), per_channel=0.5), # 对比度变为原来的一半或者二倍
124
+ iaa.imgcorruptlike.Brightness(severity=2), # 亮度增加
125
+ iaa.imgcorruptlike.Saturate(severity=3), # 色彩饱和度
126
+ iaa.FastSnowyLandscape(lightness_threshold=(100, 255), lightness_multiplier=(1.5, 2.0)),
127
+ # 雪地亮度阈值是从 uniform(100, 255)(每张图像)和来自 uniform(1.5, 2.0)(每张图像)的乘数采样的。
128
+ iaa.Cartoon(blur_ksize=3, segmentation_size=1.0, saturation=2.0, edge_prevalence=1.0), # 卡通
129
+ ])
130
+
131
+
94
132
  def augment_example(input_size=(224, 224)):
95
133
  transforms = [
96
134
  iaa.Resize({"width": int(input_size[0] * 1.2), "height": "keep-aspect-ratio"}),
@@ -158,7 +196,7 @@ def demo_for_keypoint():
158
196
  image = image_utils.read_image("../../data/test.png")
159
197
  mask = image_utils.read_image("../../data/mask.png")
160
198
  mask = image_utils.get_image_mask(mask)
161
- contours = image_utils.find_mask_contours(mask) # [(N,2)]
199
+ contours = image_utils.find_mask_contours(mask)
162
200
  auimg, contours = augment(image=image, keypoints=contours)
163
201
  h, w = auimg.shape[:2]
164
202
  mask = image_utils.draw_mask_contours(contours, size=(w, h))
@@ -167,7 +205,27 @@ def demo_for_keypoint():
167
205
  image_utils.cv_show_image("image", result)
168
206
 
169
207
 
208
+ def demo_for_polygons():
209
+ transforms = augment_example()
210
+ augment = Compose(transforms=transforms, fixed=True)
211
+ for i in range(100):
212
+ image = image_utils.read_image("../../data/test.png")
213
+ mask = image_utils.read_image("../../data/mask.png")
214
+ mask = image_utils.get_image_mask(mask)
215
+ contours = image_utils.find_mask_contours(mask)
216
+ contours = contours * 3
217
+ polygons = decode_polygons(contours, image.shape)
218
+ auimg, polygons = augment(image=image, polygons=polygons)
219
+ contours = encode_polygons(polygons)
220
+ h, w = auimg.shape[:2]
221
+ mask = image_utils.draw_mask_contours(contours, size=(w, h))
222
+ color_image = image_utils.draw_image_contours(auimg, contours)
223
+ result = image_utils.image_hstack([image, color_image, mask])
224
+ image_utils.cv_show_image("image", result)
225
+
226
+
170
227
  if __name__ == "__main__":
171
228
  # demo_for_image()
172
229
  # demo_for_segment()
173
- demo_for_keypoint()
230
+ # demo_for_keypoint()
231
+ demo_for_polygons()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pybaseutils
3
- Version: 2.2.4
3
+ Version: 2.2.5
4
4
  Summary: pybaseutils
5
5
  Home-page: https://github.com/PanJinquan/base-utils
6
6
  Author: PanJinquan
File without changes
File without changes