test01.py 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. import numpy as np
  2. import cv2
  3. points = [
  4. [
  5. 350,
  6. 329
  7. ],
  8. [
  9. 347,
  10. 332
  11. ],
  12. [
  13. 304,
  14. 332
  15. ],
  16. [
  17. 301,
  18. 335
  19. ],
  20. [
  21. 301,
  22. 2045
  23. ],
  24. [
  25. 297,
  26. 2049
  27. ],
  28. [
  29. 297,
  30. 2262
  31. ],
  32. [
  33. 301,
  34. 2266
  35. ],
  36. [
  37. 301,
  38. 2371
  39. ],
  40. [
  41. 297,
  42. 2374
  43. ],
  44. [
  45. 297,
  46. 3136
  47. ],
  48. [
  49. 301,
  50. 3140
  51. ],
  52. [
  53. 301,
  54. 3607
  55. ],
  56. [
  57. 304,
  58. 3611
  59. ],
  60. [
  61. 1611,
  62. 3611
  63. ],
  64. [
  65. 1614,
  66. 3607
  67. ],
  68. [
  69. 1689,
  70. 3607
  71. ],
  72. [
  73. 1692,
  74. 3611
  75. ],
  76. [
  77. 2563,
  78. 3611
  79. ],
  80. [
  81. 2566,
  82. 3614
  83. ],
  84. [
  85. 2591,
  86. 3614
  87. ],
  88. [
  89. 2594,
  90. 3611
  91. ],
  92. [
  93. 2597,
  94. 3611
  95. ],
  96. [
  97. 2600,
  98. 3607
  99. ],
  100. [
  101. 2600,
  102. 3592
  103. ],
  104. [
  105. 2597,
  106. 3589
  107. ],
  108. [
  109. 2597,
  110. 3462
  111. ],
  112. [
  113. 2600,
  114. 3459
  115. ],
  116. [
  117. 2600,
  118. 1760
  119. ],
  120. [
  121. 2603,
  122. 1757
  123. ],
  124. [
  125. 2603,
  126. 1674
  127. ],
  128. [
  129. 2600,
  130. 1670
  131. ],
  132. [
  133. 2600,
  134. 1593
  135. ],
  136. [
  137. 2603,
  138. 1590
  139. ],
  140. [
  141. 2603,
  142. 335
  143. ],
  144. [
  145. 2597,
  146. 335
  147. ],
  148. [
  149. 2594,
  150. 332
  151. ],
  152. [
  153. 2572,
  154. 332
  155. ],
  156. [
  157. 2569,
  158. 335
  159. ],
  160. [
  161. 2553,
  162. 335
  163. ],
  164. [
  165. 2550,
  166. 332
  167. ],
  168. [
  169. 2144,
  170. 332
  171. ],
  172. [
  173. 2141,
  174. 335
  175. ],
  176. [
  177. 1872,
  178. 335
  179. ],
  180. [
  181. 1869,
  182. 332
  183. ],
  184. [
  185. 1841,
  186. 332
  187. ],
  188. [
  189. 1838,
  190. 335
  191. ],
  192. [
  193. 1751,
  194. 335
  195. ],
  196. [
  197. 1748,
  198. 332
  199. ],
  200. [
  201. 449,
  202. 332
  203. ],
  204. [
  205. 446,
  206. 329
  207. ]
  208. ]
  209. points = np.array(points, dtype=np.int32)
  210. x, y, w, h = cv2.boundingRect(points)
  211. # 2. 构造 4 个顶点坐标
  212. result = np.array([
  213. [x, y], # 左上
  214. [x + w, y], # 右上
  215. [x + w, y + h], # 右下
  216. [x, y + h] # 左下
  217. ], dtype=np.int32).tolist()
  218. print(f"Bounding Rect (x,y,w,h): {x}, {y}, {w}, {h}")
  219. print(f"Result (4 points):\n{result}")