pybaseutils 2.2.3__tar.gz → 2.2.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 (271) hide show
  1. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/PKG-INFO +1 -1
  2. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/__init__.py +1 -1
  3. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/converter/build_labelme.py +3 -3
  4. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/dataloader/parser_labelme.py +58 -2
  5. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils.egg-info/PKG-INFO +1 -1
  6. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils.egg-info/SOURCES.txt +1 -0
  7. pybaseutils-2.2.4/test_py/aije/demo_labelme_shock.py +115 -0
  8. pybaseutils-2.2.4/test_py/demo2.py +24 -0
  9. pybaseutils-2.2.3/test_py/demo2.py +0 -37
  10. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/LICENCE +0 -0
  11. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/README.md +0 -0
  12. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/audio/__init__.py +0 -0
  13. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/audio/audio_utils.py +0 -0
  14. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/audio/pyaudio_utils.py +0 -0
  15. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/audio/vad_utils.py +0 -0
  16. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/base64_utils.py +0 -0
  17. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/batch_utils.py +0 -0
  18. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/build_utils/__init__.py +0 -0
  19. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/build_utils/cython_utils.py +0 -0
  20. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/build_utils/pyarmor_utils.py +0 -0
  21. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/cluster/__init__.py +0 -0
  22. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/cluster/kmean.py +0 -0
  23. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/cluster/maxmin_distance.py +0 -0
  24. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/cluster/similarity.py +0 -0
  25. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/color_utils.py +0 -0
  26. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/config_utils.py +0 -0
  27. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/converter/__init__.py +0 -0
  28. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/converter/build_coco.py +0 -0
  29. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/converter/build_cvat.py +0 -0
  30. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/converter/build_voc.py +0 -0
  31. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/converter/concat_coco.py +0 -0
  32. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/converter/convert_coco2labelme.py +0 -0
  33. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/converter/convert_coco2voc.py +0 -0
  34. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/converter/convert_cvat2labelme.py +0 -0
  35. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/converter/convert_labelme2coco.py +0 -0
  36. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/converter/convert_labelme2cvat.py +0 -0
  37. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/converter/convert_labelme2voc.py +0 -0
  38. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/converter/convert_labelme2yolo.py +0 -0
  39. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/converter/convert_voc2coco.py +0 -0
  40. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/converter/convert_voc2labelme.py +0 -0
  41. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/converter/convert_voc2voc.py +0 -0
  42. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/converter/convert_voc2yolo.py +0 -0
  43. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/converter/convert_yolo2voc.py +0 -0
  44. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/coords_utils.py +0 -0
  45. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/cvutils/__init__.py +0 -0
  46. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/cvutils/corner_utils.py +0 -0
  47. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/cvutils/monitor.py +0 -0
  48. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/cvutils/mouse_utils.py +0 -0
  49. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/cvutils/nms_utils.py +0 -0
  50. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/cvutils/video_utils.py +0 -0
  51. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/dataloader/__init__.py +0 -0
  52. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/dataloader/balanced_classes.py +0 -0
  53. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/dataloader/base_coco.py +0 -0
  54. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/dataloader/base_dataset.py +0 -0
  55. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/dataloader/data_resample.py +0 -0
  56. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/dataloader/parser_coco_det.py +0 -0
  57. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/dataloader/parser_coco_ins.py +0 -0
  58. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/dataloader/parser_coco_kps.py +0 -0
  59. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/dataloader/parser_image_folder.py +0 -0
  60. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/dataloader/parser_image_text.py +0 -0
  61. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/dataloader/parser_voc.py +0 -0
  62. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/dataloader/parser_yolo.py +0 -0
  63. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/dataloader/voc_seg_utils.py +0 -0
  64. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/file_utils.py +0 -0
  65. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/filter/QueueTable.py +0 -0
  66. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/filter/__init__.py +0 -0
  67. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/filter/demo.py +0 -0
  68. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/filter/kalman_filter.py +0 -0
  69. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/filter/mean_filter.py +0 -0
  70. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/filter/motion_filter.py +0 -0
  71. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/filter/pose_filter.py +0 -0
  72. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/font_style/__init__.py +0 -0
  73. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/font_utils.py +0 -0
  74. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/geometry_tools.py +0 -0
  75. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/heatmap_utils.py +0 -0
  76. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/image_utils.py +0 -0
  77. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/json_utils.py +0 -0
  78. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/log.py +0 -0
  79. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/log_utils.py +0 -0
  80. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/logger.py +0 -0
  81. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/metrics/__init__.py +0 -0
  82. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/metrics/accuracy.py +0 -0
  83. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/metrics/average_meter.py +0 -0
  84. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/metrics/class_report.py +0 -0
  85. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/metrics/plot_pr.py +0 -0
  86. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/metrics/plot_roc.py +0 -0
  87. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/numpy_utils.py +0 -0
  88. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/pandas_utils.py +0 -0
  89. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/plot_utils.py +0 -0
  90. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/pose/__init__.py +0 -0
  91. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/pose/bones_utils.py +0 -0
  92. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/pose/human_pose.py +0 -0
  93. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/pose/pose_utils.py +0 -0
  94. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/pycpp/__init__.py +0 -0
  95. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/pycpp/demo.py +0 -0
  96. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/pycpp/main.py +0 -0
  97. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/server/__init__.py +0 -0
  98. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/server/apm_server.py +0 -0
  99. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/setup_config.py +0 -0
  100. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/singleton_utils.py +0 -0
  101. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/text_utils.py +0 -0
  102. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/thread_utils.py +0 -0
  103. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/time_utils.py +0 -0
  104. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/tracemalloc_utils.py +0 -0
  105. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/tracemalloc_utils2.py +0 -0
  106. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/tracking/QueueTable.py +0 -0
  107. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/tracking/__init__.py +0 -0
  108. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/tracking/demo.py +0 -0
  109. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/tracking/kalman_filter.py +0 -0
  110. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/tracking/mean_filter.py +0 -0
  111. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/tracking/motion_filter.py +0 -0
  112. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/tracking/pose_filter.py +0 -0
  113. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/transforms/__init__.py +0 -0
  114. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/transforms/affine_transform.py +0 -0
  115. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/transforms/augment_utils.py +0 -0
  116. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/transforms/face_alignment.py +0 -0
  117. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/transforms/transform_utils.py +0 -0
  118. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/word_utils.py +0 -0
  119. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/worker.py +0 -0
  120. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils/yaml_utils.py +0 -0
  121. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils.egg-info/dependency_links.txt +0 -0
  122. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils.egg-info/not-zip-safe +0 -0
  123. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/pybaseutils.egg-info/top_level.txt +0 -0
  124. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/setup.cfg +0 -0
  125. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/setup.py +0 -0
  126. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/Image_enhance/__init__.py +0 -0
  127. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/Image_enhance/dmeo01.py +0 -0
  128. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/WebCrawler/__init__.py +0 -0
  129. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/WebCrawler/search_image.py +0 -0
  130. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/WebCrawler/search_image_for_baidu.py +0 -0
  131. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/__init__.py +0 -0
  132. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/aije/__init__.py +0 -0
  133. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/aije/action_dataset.py +0 -0
  134. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/aije/build_cython.py +0 -0
  135. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/aije/build_pyarmor.py +0 -0
  136. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/aije/build_service.py +0 -0
  137. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/aije/convert_cvat2labelme.py +0 -0
  138. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/aije/convert_labelme2coco.py +0 -0
  139. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/aije/convert_labelme2voc.py +0 -0
  140. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/aije/copy_move.py +0 -0
  141. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/aije/demo_labelme_crop.py +0 -0
  142. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/aije/demo_video_aije.py +0 -0
  143. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/aije/demo_voc_crop.py +0 -0
  144. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/aije/demo_voc_vis.py +0 -0
  145. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/aije/get_pair_data.py +0 -0
  146. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/aije/video_convertor.py +0 -0
  147. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/audio/__init__.py +0 -0
  148. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/audio/demo.py +0 -0
  149. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/audio/main.py +0 -0
  150. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/audio/main_read.py +0 -0
  151. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/audio/segment.py +0 -0
  152. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/audio/speechbrain_asr_indoor_prod.py +0 -0
  153. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/audio/speechbrain_demo.py +0 -0
  154. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/captcha/__init__.py +0 -0
  155. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/captcha/demo.py +0 -0
  156. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/class_attribute.py +0 -0
  157. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/class_names.py +0 -0
  158. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/converter/AffectNet.py +0 -0
  159. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/converter/AsianMovie.py +0 -0
  160. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/converter/BITVehicle2voc.py +0 -0
  161. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/converter/BSTLD2voc.py +0 -0
  162. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/converter/CCPD.py +0 -0
  163. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/converter/CCPD2voc.py +0 -0
  164. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/converter/FL3D_dataset.py +0 -0
  165. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/converter/FreiHAND2coco.py +0 -0
  166. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/converter/MTFL2voc.py +0 -0
  167. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/converter/TT100K.py +0 -0
  168. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/converter/WaterMeters1.py +0 -0
  169. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/converter/WaterMeters2.py +0 -0
  170. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/converter/__init__.py +0 -0
  171. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/converter/concat_coco.py +0 -0
  172. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/converter/convert_coco2voc.py +0 -0
  173. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/converter/convert_cvat2labelme.py +0 -0
  174. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/converter/convert_gesture2hand.py +0 -0
  175. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/converter/convert_labelme2coco.py +0 -0
  176. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/converter/convert_labelme2cvat.py +0 -0
  177. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/converter/convert_labelme2voc.py +0 -0
  178. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/converter/convert_voc2labelme.py +0 -0
  179. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/converter/fatigue_driving.py +0 -0
  180. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/converter/fdd_dataset.py +0 -0
  181. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/converter/get_pair_data.py +0 -0
  182. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/converter/handpose2coco.py +0 -0
  183. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/converter/insects_for_aichallenger.py +0 -0
  184. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/converter/tt100k_utils.py +0 -0
  185. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/converter/ua_detrac2voc.py +0 -0
  186. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/converter/ucf101_dataset.py +0 -0
  187. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/converter/voc_sbd2labelme.py +0 -0
  188. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/cython_build/__init__.py +0 -0
  189. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/cython_build/build_cython.py +0 -0
  190. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/cython_build/build_pyarmor.py +0 -0
  191. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/cython_build/cryptography_demo.py +0 -0
  192. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/cython_build/fun_sum.py +0 -0
  193. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/cython_build/main.py +0 -0
  194. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/cython_build/model_des_enctypt.py +0 -0
  195. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/cython_build/model_enctypt.py +0 -0
  196. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/demo1.py +0 -0
  197. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/demo3.py +0 -0
  198. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/demo_async_await1.py +0 -0
  199. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/demo_async_await2.py +0 -0
  200. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/demo_coco_vis.py +0 -0
  201. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/demo_copy_files.py +0 -0
  202. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/demo_copy_files_for_voc.py +0 -0
  203. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/demo_ffmpy.py +0 -0
  204. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/demo_for_pair_file.py +0 -0
  205. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/demo_for_polygon.py +0 -0
  206. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/demo_for_trt.py +0 -0
  207. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/demo_get_file_label.py +0 -0
  208. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/demo_get_file_list.py +0 -0
  209. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/demo_gif.py +0 -0
  210. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/demo_gif_video.py +0 -0
  211. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/demo_image_crop.py +0 -0
  212. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/demo_kpts.py +0 -0
  213. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/demo_labelme.py +0 -0
  214. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/demo_labelme_crop.py +0 -0
  215. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/demo_lableme_vis.py +0 -0
  216. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/demo_metrics.py +0 -0
  217. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/demo_mouse.py +0 -0
  218. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/demo_nii.py +0 -0
  219. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/demo_pandas.py +0 -0
  220. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/demo_plot.py +0 -0
  221. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/demo_rename.py +0 -0
  222. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/demo_standard_image .py +0 -0
  223. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/demo_standard_video .py +0 -0
  224. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/demo_taichi.py +0 -0
  225. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/demo_video.py +0 -0
  226. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/demo_video_crop.py +0 -0
  227. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/demo_voc_crop.py +0 -0
  228. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/demo_voc_vis.py +0 -0
  229. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/demo_word_similar.py +0 -0
  230. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/demo_worker1.py +0 -0
  231. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/demo_worker2.py +0 -0
  232. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/detector/__init__.py +0 -0
  233. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/detector/demo.py +0 -0
  234. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/detector/detect_face_person.py +0 -0
  235. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/detector/predet_labelme.py +0 -0
  236. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/edit_distance/__init__.py +0 -0
  237. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/edit_distance/demo.py +0 -0
  238. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/edit_distance/text_matching.py +0 -0
  239. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/flask_demo/__init__.py +0 -0
  240. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/flask_demo/func.py +0 -0
  241. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/flask_demo/server.py +0 -0
  242. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/get_file_list.py +0 -0
  243. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/image_correction/__init__.py +0 -0
  244. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/image_correction/demo_correction_v1.py +0 -0
  245. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/image_correction/demo_correction_v2.py +0 -0
  246. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/image_correction/demo_correction_v3.py +0 -0
  247. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/kafka_worker.py +0 -0
  248. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/men_tracemalloc.py +0 -0
  249. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/milvus_demo/__init__.py +0 -0
  250. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/milvus_demo/demo01.py +0 -0
  251. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/milvus_demo/demo02.py +0 -0
  252. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/milvus_demo/hello_milvus.py +0 -0
  253. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/milvus_demo/milvus_client.py +0 -0
  254. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/performance.py +0 -0
  255. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/pose/__init__.py +0 -0
  256. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/pose/human_pose.py +0 -0
  257. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/redis_py/__init__.py +0 -0
  258. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/redis_py/knn_search.py +0 -0
  259. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/redis_py/redis_client.py +0 -0
  260. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/registry/__init__.py +0 -0
  261. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/registry/base.py +0 -0
  262. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/registry/component.py +0 -0
  263. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/registry/main.py +0 -0
  264. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/registry/register.py +0 -0
  265. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/single_class/GRU.py +0 -0
  266. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/single_class/TCN.py +0 -0
  267. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/single_class/__init__.py +0 -0
  268. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/single_class/demo.py +0 -0
  269. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/test_fr/__init__.py +0 -0
  270. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/test_py/test_fr/demo11.py +0 -0
  271. {pybaseutils-2.2.3 → pybaseutils-2.2.4}/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.3
3
+ Version: 2.2.4
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.3'
8
+ __version__ = '2.2.4'
@@ -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, image_bs64=None):
15
+ def maker_labelme(json_file, points, labels, image_name, image_size, keypoints=[], image_bs64=None):
16
16
  """
17
17
  制作label数据格式
18
18
  :param json_file: 保存json文件路径
@@ -30,8 +30,8 @@ def maker_labelme(json_file, points, labels, image_name, image_size, image_bs64=
30
30
  # point = [[x1,y1],[x2,y2],...,[xn,yn]]
31
31
  if isinstance(point, np.ndarray): point = point.tolist()
32
32
  if not isinstance(point[0], list): point = [point]
33
- item = {"label": label, "line_color": None, "fill_color": None,
34
- "points": point, "shape_type": "polygon", "flags": {}}
33
+ item = {"label": label, "score": None, "keypoints": keypoints, "line_color": None, "fill_color": None,
34
+ "group_id": None, "points": point, "shape_type": "polygon", "flags": {}, "description": ""}
35
35
  shapes.append(item)
36
36
  data = {
37
37
  "version": "3.16.7", "flags": {},
@@ -11,10 +11,9 @@ import cv2
11
11
  import glob
12
12
  import random
13
13
  import numbers
14
- import torch
15
14
  import json
16
15
  from tqdm import tqdm
17
- from pybaseutils import image_utils, file_utils, json_utils
16
+ from pybaseutils import image_utils, file_utils, json_utils, text_utils
18
17
  from pybaseutils.dataloader.base_dataset import Dataset, ConcatDataset
19
18
 
20
19
 
@@ -327,6 +326,63 @@ class LabelMeDataset(Dataset):
327
326
  height = -1
328
327
  return annos, width, height
329
328
 
329
+ @staticmethod
330
+ def get_targets(data_info: dict, targets, keys=['points', 'boxes', 'labels', 'groups', 'names']):
331
+ names = data_info["names"]
332
+ out = {}
333
+ for i in range(len(names)):
334
+ matches = text_utils.find_match_texts(texts=[names[i]], pattern=targets, org=True)
335
+ if len(matches) > 0:
336
+ for k in keys:
337
+ if k in data_info: out[k] = out.get(k, []) + [data_info[k][i]]
338
+ return out
339
+
340
+ @staticmethod
341
+ def get_sub2superclass(data_info, superclass, subclass, scale=[], square=True, vis=False):
342
+ """
343
+ 通过IOU的方式,将子类属性分配给父类中
344
+ :param data_info:
345
+ :param superclass: 父类
346
+ :param subclass: 子类
347
+ :param scale: 对superclass进行缩放
348
+ :param square: 对superclass
349
+ :param vis:
350
+ :return:
351
+ """
352
+ image, file = data_info["image"], data_info["image_file"]
353
+ target_info = LabelMeDataset.get_targets(data_info, targets=superclass)
354
+ attibu_info = LabelMeDataset.get_targets(data_info, targets=subclass)
355
+ item_list = []
356
+ for i in range(len(target_info.get("boxes", []))):
357
+ tbbox = [target_info["boxes"][i]]
358
+ tname = [target_info["names"][i]]
359
+ if square:
360
+ tbbox = image_utils.get_square_boxes(tbbox, use_max=True, baseline=-1)
361
+ if scale:
362
+ tbbox = image_utils.extend_xyxy(tbbox, scale=scale)
363
+ item = {} #
364
+ for j in range(len(attibu_info.get("boxes", []))):
365
+ abox = attibu_info["boxes"][j]
366
+ iou = image_utils.get_box_iom(tbbox[0], abox)
367
+ if iou > 0:
368
+ item["ious"] = item.get("ious", []) + [iou]
369
+ for k, v in attibu_info.items():
370
+ item[k] = item.get(k, []) + [v[j]]
371
+ item_list.append(dict(file=file, box=tbbox[0], name=tname[0], attribute=item))
372
+ if vis:
373
+ image = image_utils.draw_image_boxes_texts(image, tbbox, tname, thickness=2, fontScale=1.0,
374
+ drawType="ch", color=image_utils.color_table[i + 1])
375
+ texts = [f"{n} {s:3.2f}" for n, s in zip(item.get("names", []), item.get("ious", []))]
376
+ image = image_utils.draw_image_boxes_texts(image,
377
+ item.get("boxes", []),
378
+ texts,
379
+ thickness=2,
380
+ fontScale=1.0,
381
+ color=image_utils.color_table[i + 1],
382
+ drawType="ch")
383
+ image_utils.cv_show_image("instance", image)
384
+ return item_list
385
+
330
386
 
331
387
  def LabelMeDatasets(filename=None,
332
388
  data_root=None,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pybaseutils
3
- Version: 2.2.3
3
+ Version: 2.2.4
4
4
  Summary: pybaseutils
5
5
  Home-page: https://github.com/PanJinquan/base-utils
6
6
  Author: PanJinquan
@@ -177,6 +177,7 @@ test_py/aije/convert_labelme2coco.py
177
177
  test_py/aije/convert_labelme2voc.py
178
178
  test_py/aije/copy_move.py
179
179
  test_py/aije/demo_labelme_crop.py
180
+ test_py/aije/demo_labelme_shock.py
180
181
  test_py/aije/demo_video_aije.py
181
182
  test_py/aije/demo_voc_crop.py
182
183
  test_py/aije/demo_voc_vis.py
@@ -0,0 +1,115 @@
1
+ # -*-coding: utf-8 -*-
2
+ """
3
+ @Author : PKing
4
+ @E-mail : 390737991@qq.com
5
+ @Date : 2022-11-29 18:11:47
6
+ @Brief :
7
+ """
8
+ import os
9
+ import cv2
10
+ from tqdm import tqdm
11
+ from pybaseutils.dataloader import parser_labelme
12
+ from pybaseutils import image_utils, file_utils, json_utils
13
+
14
+
15
+ def save_object_crops(data_info, item_list, out_dir, class_name=None, scale=[], square=False,
16
+ padding=False, min_size=20 * 20 * 3, flag="", vis=False):
17
+ """
18
+ 对VOC的数据目标进行裁剪
19
+ :param image:
20
+ :param out_dir:
21
+ :param bboxes:
22
+ :param labels:
23
+ :param image_id:
24
+ :param class_name:
25
+ :param scale:
26
+ :param square:
27
+ :param padding:
28
+ :param flag:
29
+ :param vis:
30
+ :return:
31
+ """
32
+ image_file, image = data_info["image_file"], data_info["image"]
33
+ image_id = os.path.basename(image_file).split(".")[0]
34
+ h, w = image.shape[:2]
35
+ for i, item in enumerate(item_list):
36
+ if len(item['box']) == 0: continue
37
+ bboxes = [item['box']]
38
+ labels = [item['name']]
39
+ attrib_name = json_utils.get_value(item, key=['attribute', 'names'], default=[])
40
+ if square:
41
+ bboxes = image_utils.get_square_boxes(bboxes, use_max=True, baseline=-1)
42
+ if scale:
43
+ bboxes = image_utils.extend_xyxy(bboxes, scale=scale)
44
+ if padding:
45
+ crops = image_utils.get_bboxes_crop_padding(image, bboxes)
46
+ else:
47
+ crops = image_utils.get_bboxes_crop(image, bboxes)
48
+ img = crops[0]
49
+ if img.size < min_size: continue
50
+ name = "_".join(labels + list(set(attrib_name)))
51
+ if out_dir:
52
+ file_name = "{}_{:0=4d}_{}.jpg".format(image_id, i, flag) if flag else "{}_{:0=4d}.jpg".format(image_id,
53
+ i)
54
+ img_file = file_utils.create_dir(out_dir, name, file_name)
55
+ cv2.imwrite(img_file, img)
56
+ if vis:
57
+ m = image_utils.draw_image_bboxes_labels(image.copy(), bboxes, labels, class_name=class_name,
58
+ thickness=2, fontScale=0.8, drawType="chinese")
59
+ image_utils.cv_show_image("image", m, use_rgb=False, delay=0)
60
+
61
+
62
+ if __name__ == "__main__":
63
+ """
64
+ 对VOC的数据目标进行裁剪
65
+ 室内:['主杆', '从此进出标示牌', '其他鞋', '吊物绳', '在此工作标示牌', '垫子', '安全带', '安全帽', '安全绳',
66
+ '导线头', '尖嘴钳', '工具袋', '手', '扳手', '抹布', '未穿工作服','柱式绝缘子', '止步高压危险标示牌',
67
+ '绝缘手套', '绝缘鞋', '脚扣', '螺丝', '身穿工作服', '遮拦杆', '铁架', '铝扎线']
68
+ 室外: []
69
+ """
70
+ # TODO 其他试题
71
+ anno_dir = [
72
+ "/home/PKing/nasdata/dataset-dmai/AIJE/dataset/aije-v2-det/dataset-v21/images",
73
+ "/home/PKing/nasdata/dataset-dmai/AIJE/dataset/aije-v2-det/dataset-v22/images",
74
+ "/home/PKing/nasdata/dataset-dmai/AIJE/dataset/aije-v2-det/dataset-v23/images",
75
+ "/home/PKing/nasdata/dataset-dmai/AIJE/dataset/aije-v2-det/dataset-v24/images",
76
+ "/home/PKing/nasdata/dataset-dmai/AIJE/dataset/aije-v2-det/dataset-v26/images",
77
+ "/home/PKing/nasdata/dataset-dmai/AIJE/dataset/aije-v2-det/dataset-v27/images",
78
+ "/home/PKing/nasdata/dataset-dmai/AIJE/dataset/aije-v2-det/dataset-v29/images",
79
+ "/home/PKing/nasdata/dataset-dmai/AIJE/dataset/aije-v2-det/dataset-v29-test/images",
80
+ ]
81
+ out_dir = "/home/PKing/nasdata/dataset-dmai/AIJE/dataset/aije-shock/dataset-others/待分类"
82
+
83
+ # TODO 更换绝缘子
84
+ # anno_dir = [
85
+ # "/home/PKing/nasdata/dataset-dmai/AIJE/dataset/aije-v2-det/dataset-v25/images",
86
+ # "/home/PKing/nasdata/dataset-dmai/AIJE/dataset/aije-v2-det/dataset-v28/images",
87
+ # "/home/PKing/nasdata/dataset-dmai/AIJE/dataset/aije-shock/dataset-sample/images",
88
+ # ]
89
+ # out_dir = "/home/PKing/nasdata/dataset-dmai/AIJE/dataset/aije-shock/dataset-v1/待分类"
90
+
91
+ superclass = ["主杆"]
92
+ subclass = ['未穿工作服', '身穿工作服']
93
+ class_name = superclass + subclass
94
+ dataset = parser_labelme.LabelMeDatasets(filename=None,
95
+ data_root=None,
96
+ anno_dir=anno_dir,
97
+ image_dir=None,
98
+ class_name=class_name,
99
+ check=False,
100
+ phase="val",
101
+ shuffle=False)
102
+ print("have num:{}".format(len(dataset)))
103
+ class_name = dataset.class_name
104
+ scale = [1.0, 1.0]
105
+ flag = str(scale[0]).replace(".", "p")
106
+ flag = None
107
+ for i in tqdm(range(len(dataset))):
108
+ data_info = dataset.__getitem__(i)
109
+ item_list = parser_labelme.LabelMeDataset.get_sub2superclass(data_info,
110
+ superclass=superclass,
111
+ subclass=subclass,
112
+ square=True,
113
+ scale=scale,
114
+ vis=False)
115
+ save_object_crops(data_info, item_list, out_dir, flag=flag, vis=False)
@@ -0,0 +1,24 @@
1
+ # -*-coding: utf-8 -*-
2
+ """
3
+ @Author : PKing
4
+ @E-mail : 390737991@qq.com
5
+ @Date : 2022-12-31 11:37:30
6
+ @Brief : https://blog.csdn.net/qdPython/article/details/121381363
7
+ """
8
+ import os
9
+ import cv2
10
+ import random
11
+ import types
12
+ import torch
13
+ import numpy as np
14
+ from typing import Callable
15
+ from pybaseutils import image_utils, file_utils, text_utils
16
+ from pybaseutils.cvutils import video_utils
17
+ import cv2
18
+ import re
19
+
20
+ if __name__ == '__main__':
21
+ file = "/home/PKing/nasdata/dataset-dmai/AIJE/dataset/aije-action-cvlm-v2/action-names.txt"
22
+ outputs = [torch.tensor(1, dtype=torch.int64), torch.tensor(1, dtype=torch.int64)]
23
+ data = torch.stack(outputs)
24
+ print(data)
@@ -1,37 +0,0 @@
1
- # -*-coding: utf-8 -*-
2
- """
3
- @Author : PKing
4
- @E-mail : 390737991@qq.com
5
- @Date : 2022-12-31 11:37:30
6
- @Brief : https://blog.csdn.net/qdPython/article/details/121381363
7
- """
8
- import os
9
- import cv2
10
- import random
11
- import types
12
- import torch
13
- import numpy as np
14
- from typing import Callable
15
- from pybaseutils import image_utils, file_utils, text_utils
16
- from pybaseutils.cvutils import video_utils
17
- import cv2
18
- import re
19
-
20
- if __name__ == '__main__':
21
- file = "/home/PKing/nasdata/dataset-dmai/AIJE/dataset/aije-action-cvlm-v2/action-names.txt"
22
- files = file_utils.read_data(file, split=None)
23
- names = []
24
- for file in files:
25
- name = os.path.basename(file)
26
- names.append(name)
27
- names = list(set(names))
28
- names = text_utils.find_match_texts(texts=names, pattern=["手拿*"])
29
- names = list(set(names))
30
- print(names)
31
- names = ['手拿钳形电流表', '手拿相序表', '手拿护目镜', '手拿万用表', '手拿尖嘴钳', '手拿螺丝刀', '手拿万能表', '手拿扳手',
32
- '手拿安全帽', '手拿安全带', '手拿安全围网', '手拿安全绳', '手拿吊物绳', '手拿抹布', '手拿熔断器熔管', '手拿工具袋',
33
- '手拿采集器', '手拿瓷横担绝缘子', '手拿玻璃绝缘子', '手拿棉纱手套', '手拿绝缘手套,手拿橡胶手套,手拿其他手套',
34
- '手拿长筒靴', '手拿绝缘垫', '手拿垫子', '手拿熔断器', '手拿卡线器', '手拿紧线器', '手拿验电器', '手拿验电笔', '手拿遮拦杆',
35
- '手拿核相器', '手拿钢丝绳', '手拿美工刀', '手拿脚扣', '手拿兆欧表', '手拿绝缘胶布', '手拿绝缘杆', '手拿绝缘棒',
36
- '手拿绝缘挡板', '手拿从此进入指示牌,手拿从此进出标示牌,手拿止步高压危险指示牌,手拿止步高压危险表示牌,手拿止步高压危险标示牌,手拿在此工作标示牌,手拿禁止合闸线路有人工作标示牌']
37
- print(len(names))
File without changes
File without changes
File without changes
File without changes