isapi_smart_regionEntrance.go 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. package isapi
  2. import (
  3. "encoding/json"
  4. "encoding/xml"
  5. )
  6. // RegionEntranceParam 进入区域
  7. type RegionEntranceParam struct {
  8. ID string `xml:"id" json:"id"`
  9. Enabled string `xml:"enabled" json:"enabled"`
  10. NormalizedScreenSize struct {
  11. NormalizedScreenWidth string `xml:"normalizedScreenWidth" json:"normalizedScreenWidth"`
  12. NormalizedScreenHeight string `xml:"normalizedScreenHeight" json:"normalizedScreenHeight"`
  13. } `xml:"normalizedScreenSize" json:"normalizedScreenSize"`
  14. RegionEntranceRegionList struct {
  15. Size string `xml:"size,attr" json:"size"`
  16. RegionEntranceRegion []struct {
  17. ID string `xml:"id" json:"id"`
  18. SensitivityLevel string `xml:"sensitivityLevel" json:"sensitivityLevel"`
  19. DetectionTarget string `xml:"detectionTarget" json:"detectionTarget"`
  20. AlarmConfidence string `xml:"alarmConfidence" json:"alarmConfidence"`
  21. RegionCoordinatesList struct {
  22. RegionCoordinates []struct {
  23. PositionX string `xml:"positionX" json:"positionX"`
  24. PositionY string `xml:"positionY" json:"positionY"`
  25. } `xml:"RegionCoordinates" json:"RegionCoordinates"`
  26. } `xml:"RegionCoordinatesList" json:"RegionCoordinatesList"`
  27. } `xml:"RegionEntranceRegion" json:"RegionEntranceRegion"`
  28. } `xml:"RegionEntranceRegionList" json:"RegionEntranceRegionList"`
  29. IsSupportMultiScene string `xml:"isSupportMultiScene" json:"isSupportMultiScene"`
  30. IsSupportHumanMisinfoFilter string `xml:"isSupportHumanMisinfoFilter" json:"isSupportHumanMisinfoFilter"`
  31. IsSupportVehicleMisinfoFilter string `xml:"isSupportVehicleMisinfoFilter" json:"isSupportVehicleMisinfoFilter"`
  32. IsSupportTargetMultiSelect string `xml:"isSupportTargetMultiSelect" json:"isSupportTargetMultiSelect"`
  33. }
  34. func (c *Client) GetRegionEntranceCap() (resp RegionEntranceCap, err error) {
  35. bytes, err := c.CommonGet("/ISAPI/Smart/regionEntrance/1/capabilities")
  36. if err != nil {
  37. return
  38. }
  39. err = xml.Unmarshal(bytes, &resp)
  40. detection, _ := c.GetRegionEntrance()
  41. for i, v := range detection.RegionEntranceRegionList.RegionEntranceRegion {
  42. resp.RegionEntranceRegionList.RegionEntranceRegion[i].AlarmConfidence.Text = v.AlarmConfidence
  43. }
  44. return
  45. }
  46. func (c *Client) GetSizeRe() (resp SmartCalibrationList, err error) {
  47. bytes, err := c.CommonGet("/ISAPI/Smart/channels/1/calibrations/regionEntrance")
  48. if err != nil {
  49. return
  50. }
  51. err = xml.Unmarshal(bytes, &resp)
  52. return
  53. }
  54. func (c *Client) PutSizeRe(data []byte) (resp ResponseStatus, err error) {
  55. var info SmartCalibrationList
  56. err = json.Unmarshal(data, &info)
  57. if err != nil {
  58. return ResponseStatus{}, err
  59. }
  60. marshal, err := xml.Marshal(info)
  61. if err != nil {
  62. return ResponseStatus{}, err
  63. }
  64. respData, err := c.CommonPut(marshal, "/ISAPI/Smart/channels/1/calibrations/regionEntrance")
  65. if err != nil {
  66. return ResponseStatus{}, err
  67. }
  68. err = xml.Unmarshal(respData, &resp)
  69. if err != nil {
  70. return ResponseStatus{}, err
  71. }
  72. return
  73. }
  74. // GetRegionEntrance 获取区域侦测参数
  75. func (c *Client) GetRegionEntrance() (resp RegionEntranceParam, err error) {
  76. bytes, err := c.CommonGet("/ISAPI/Smart/regionEntrance/1")
  77. if err != nil {
  78. return
  79. }
  80. err = xml.Unmarshal(bytes, &resp)
  81. return
  82. }
  83. // PutRegionEntrance 配置区域侦测参数
  84. func (c *Client) PutRegionEntrance(data []byte) (resp ResponseStatus, err error) {
  85. var info RegionEntranceParam
  86. err = json.Unmarshal(data, &info)
  87. if err != nil {
  88. return ResponseStatus{}, err
  89. }
  90. marshal, err := xml.Marshal(info)
  91. if err != nil {
  92. return ResponseStatus{}, err
  93. }
  94. respData, err := c.CommonPut(marshal, "/ISAPI/Smart/regionEntrance/1")
  95. if err != nil {
  96. return ResponseStatus{}, err
  97. }
  98. err = xml.Unmarshal(respData, &resp)
  99. if err != nil {
  100. return ResponseStatus{}, err
  101. }
  102. return
  103. }
  104. type RegionEntranceCap struct {
  105. ID string `xml:"id"`
  106. Enabled struct {
  107. Text string `xml:",chardata" json:"value"`
  108. Opt string `xml:"opt,attr" json:"opt"`
  109. } `xml:"enabled" json:"enabled"`
  110. NormalizedScreenSize struct {
  111. NormalizedScreenWidth string `xml:"normalizedScreenWidth" json:"normalizedScreenWidth"`
  112. NormalizedScreenHeight string `xml:"normalizedScreenHeight" json:"normalizedScreenHeight"`
  113. } `xml:"normalizedScreenSize" json:"normalizedScreenSize"`
  114. RegionEntranceRegionList struct {
  115. Size string `xml:"size,attr" json:"size"`
  116. RegionEntranceRegion []struct {
  117. ID string `xml:"id" json:"id"`
  118. SensitivityLevel struct {
  119. Text string `xml:",chardata" json:"value"`
  120. Min string `xml:"min,attr" json:"min"`
  121. Max string `xml:"max,attr" json:"max"`
  122. } `xml:"sensitivityLevel" json:"sensitivityLevel"`
  123. RegionCoordinatesList struct {
  124. RegionCoordinates []struct {
  125. PositionX string `xml:"positionX" json:"positionX"`
  126. PositionY string `xml:"positionY" json:"positionY"`
  127. } `xml:"RegionCoordinates" json:"RegionCoordinates"`
  128. } `xml:"RegionCoordinatesList" json:"RegionCoordinatesList"`
  129. MinRegionCoordinatesNum string `xml:"minRegionCoordinatesNum" json:"minRegionCoordinatesNum"`
  130. MaxRegionCoordinatesNum string `xml:"maxRegionCoordinatesNum" json:"maxRegionCoordinatesNum"`
  131. DetectionTarget struct {
  132. Text string `xml:",chardata" json:"value"`
  133. Opt string `xml:"opt,attr" json:"opt"`
  134. } `xml:"detectionTarget" json:"detectionTarget"`
  135. AlarmConfidence struct {
  136. Text string `xml:",chardata" json:"value"`
  137. Opt string `xml:"opt,attr" json:"opt"`
  138. Def string `xml:"def,attr" json:"def"`
  139. } `xml:"alarmConfidence" json:"alarmConfidence"`
  140. } `xml:"RegionEntranceRegion" json:"RegionEntranceRegion"`
  141. } `xml:"RegionEntranceRegionList" json:"RegionEntranceRegionList"`
  142. IsSupportMultiScene string `xml:"isSupportMultiScene" json:"isSupportMultiScene"`
  143. IsSupportHumanMisinfoFilter string `xml:"isSupportHumanMisinfoFilter" json:"isSupportHumanMisinfoFilter"`
  144. IsSupportVehicleMisinfoFilter string `xml:"isSupportVehicleMisinfoFilter" json:"isSupportVehicleMisinfoFilter"`
  145. IsSupportTargetMultiSelect string `xml:"isSupportTargetMultiSelect" json:"isSupportTargetMultiSelect"`
  146. IsSupportAllDayUpload string `xml:"isSupportAllDayUpload" json:"isSupportAllDayUpload"`
  147. }