ss="lines-num lines-num-new"> 439
+
440
+            # print elapsed time to console
441
+            elapsed_time = time.time()-start_time
442
+            print("-- %s seconds --" % round(elapsed_time,2))
443
+
444
+            # output video
445
+            frame = cv2.cvtColor(frame, cv2.COLOR_HSV2BGR)
446
+
447
+            # draw dividing line
448
+            # flash green when new car counted
449
+            if current_count > total_cars:
450
+                cv2.line(frame, (0, int(2*frame_h/3)),(frame_w, int(2*frame_h/3)),
451
+                     (0,255,0), 2*LINE_THICKNESS)
452
+            else:
453
+                cv2.line(frame, (0, int(2*frame_h/3)),(frame_w, int(2*frame_h/3)),
454
+                 (0,0,255), LINE_THICKNESS)
455
+
456
+             # update with latest count
457
+            total_cars = current_count
458
+
459
+            # draw upper limit
460
+            cv2.line(frame, (0, 100),(frame_w, 100), (0,0,0), LINE_THICKNESS)
461
+
462
+            ret, buffer = cv2.imencode('.jpg', frame)
463
+            frame2 = buffer.tobytes()
464
+            yield (b'--frame\r\n'
465
+                b'Content-Type: image/jpeg\r\n\r\n' + frame2 + b'\r\n')  # concat frame one by one and show result
466
+
467
+            #cv2.imshow("preview", frame)
468
+            #cv2.imwrite("../flask-hls-demo/static/frame.jpg", frame)
469
+            out.write(frame)
470
+
471
+            if cv2.waitKey(27) and 0xFF == ord('q'):
472
+                break
473
+        else:
474
+            break
475
+
476
+    #cv2.line()
477
+    #cv2.destroyAllWindows()
478
+    #cap.release()
479
+    #out.release()
480
+
481
+from flask import Flask, render_template, Response
482
+import cv2
483
+
484
+app = Flask(__name__)
485
+
486
+
487
+def find_camera(id):
488
+    '''
489
+    cameras = ['rtsp://username:password@ip_address:554/user=username_password='password'_channel=channel_number_stream=0.sdp',
490
+    'rtsp://username:password@ip_address:554/user=username_password='password'_channel=channel_number_stream=0.sdp']
491
+    '''
492
+    cameras = ['rtsp://admin:@Unv123456@192.168.10.252:554/unicast/c1/s1/live']
493
+    return cameras[int(id)]
494
+#  for cctv camera use rtsp://username:password@ip_address:554/user=username_password='password'_channel=channel_number_stream=0.sdp' instead of camera
495
+#  for webcam use zero(0)
496
+
497
+
498
+def gen_frames(camera_id):
499
+
500
+    cam = find_camera(camera_id)
501
+    cap=  cv2.VideoCapture(cam)
502
+
503
+    while True:
504
+        # for cap in caps:
505
+        # # Capture frame-by-frame
506
+        success, frame = cap.read()  # read the camera frame
507
+        if not success:
508
+            break
509
+        else:
510
+            ret, buffer = cv2.imencode('.jpg', frame)
511
+            frame = buffer.tobytes()
512
+            yield (b'--frame\r\n'
513
+                b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n')  # concat frame one by one and show result
514
+@app.route('/video_feed/<string:id>/', methods=["GET"])
515
+def video_feed(id):
516
+
517
+    """Video streaming route. Put this in the src attribute of an img tag."""
518
+    '''
519
+    return Response(gen_frames(id),
520
+                    mimetype='multipart/x-mixed-replace; boundary=frame')
521
+    '''
522
+    return Response(process_video(),
523
+                    mimetype='multipart/x-mixed-replace; boundary=frame')
524
+
525
+@app.route('/', methods=["GET"])
526
+def index():
527
+    return render_template('index.html')
528
+
529
+
530
+if __name__ == '__main__':
531
+    app.run(debug=True, port=9099)

BIN
cap/frame0.jpg


BIN
cap/frame1.jpg


BIN
cap/frame10.jpg


BIN
cap/frame100.jpg


BIN
cap/frame101.jpg


BIN
cap/frame102.jpg


BIN
cap/frame103.jpg


BIN
cap/frame104.jpg


BIN
cap/frame105.jpg


BIN
cap/frame106.jpg


BIN
cap/frame107.jpg


BIN
cap/frame108.jpg


BIN
cap/frame109.jpg


BIN
cap/frame11.jpg


BIN
cap/frame110.jpg


BIN
cap/frame111.jpg


BIN
cap/frame112.jpg


BIN
cap/frame113.jpg


BIN
cap/frame114.jpg


BIN
cap/frame115.jpg


BIN
cap/frame116.jpg


BIN
cap/frame117.jpg


BIN
cap/frame118.jpg


BIN
cap/frame119.jpg


BIN
cap/frame12.jpg


BIN
cap/frame120.jpg


BIN
cap/frame121.jpg


BIN
cap/frame122.jpg


BIN
cap/frame123.jpg


BIN
cap/frame124.jpg


BIN
cap/frame125.jpg


BIN
cap/frame126.jpg


BIN
cap/frame127.jpg


BIN
cap/frame128.jpg


BIN
cap/frame129.jpg


BIN
cap/frame13.jpg


BIN
cap/frame130.jpg


BIN
cap/frame131.jpg


BIN
cap/frame132.jpg


BIN
cap/frame133.jpg


BIN
cap/frame134.jpg


BIN
cap/frame135.jpg


BIN
cap/frame136.jpg


BIN
cap/frame137.jpg


BIN
cap/frame138.jpg


BIN
cap/frame139.jpg


BIN
cap/frame14.jpg


BIN
cap/frame140.jpg


BIN
cap/frame141.jpg


BIN
cap/frame142.jpg


BIN
cap/frame143.jpg


BIN
cap/frame144.jpg


BIN
cap/frame145.jpg


BIN
cap/frame146.jpg


BIN
cap/frame147.jpg


BIN
cap/frame148.jpg


BIN
cap/frame149.jpg


BIN
cap/frame15.jpg


BIN
cap/frame150.jpg


BIN
cap/frame151.jpg


BIN
cap/frame152.jpg


BIN
cap/frame153.jpg


BIN
cap/frame154.jpg


BIN
cap/frame155.jpg


BIN
cap/frame156.jpg


BIN
cap/frame157.jpg


BIN
cap/frame158.jpg


BIN
cap/frame159.jpg


BIN
cap/frame16.jpg


BIN
cap/frame160.jpg


BIN
cap/frame161.jpg


BIN
cap/frame162.jpg


BIN
cap/frame163.jpg


BIN
cap/frame164.jpg


BIN
cap/frame165.jpg


BIN
cap/frame166.jpg


BIN
cap/frame167.jpg


BIN
cap/frame168.jpg


BIN
cap/frame169.jpg


BIN
cap/frame17.jpg


BIN
cap/frame170.jpg


BIN
cap/frame171.jpg


BIN
cap/frame172.jpg


BIN
cap/frame173.jpg


BIN
cap/frame174.jpg


BIN
cap/frame175.jpg


BIN
cap/frame176.jpg


BIN
cap/frame177.jpg


BIN
cap/frame178.jpg


BIN
cap/frame179.jpg


BIN
cap/frame18.jpg


BIN
cap/frame180.jpg


BIN
cap/frame181.jpg


+ 0 - 0
cap/frame182.jpg


Некоторые файлы не были показаны из-за большого количества измененных файлов

tum/soc - Gogs: Simplico Git Service

説明なし

docker-compose.yml 5.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. services:
  2. frontend:
  3. image: ghcr.io/shuffle/shuffle-frontend:latest
  4. container_name: shuffle-frontend
  5. hostname: shuffle-frontend
  6. ports:
  7. - "${FRONTEND_PORT}:80"
  8. - "${FRONTEND_PORT_HTTPS}:443"
  9. networks:
  10. - shuffle
  11. environment:
  12. - BACKEND_HOSTNAME=${BACKEND_HOSTNAME}
  13. restart: unless-stopped
  14. depends_on:
  15. - backend
  16. backend:
  17. image: ghcr.io/shuffle/shuffle-backend:latest
  18. container_name: shuffle-backend
  19. hostname: ${BACKEND_HOSTNAME}
  20. # Here for debugging:
  21. ports:
  22. - "${BACKEND_PORT}:5001"
  23. networks:
  24. - shuffle
  25. volumes:
  26. - /var/run/docker.sock:/var/run/docker.sock
  27. - ${SHUFFLE_APP_HOTLOAD_LOCATION}:/shuffle-apps:z
  28. - ${SHUFFLE_FILE_LOCATION}:/shuffle-files:z
  29. env_file: .env
  30. environment:
  31. #- DOCKER_HOST=tcp://docker-socket-proxy:2375
  32. - SHUFFLE_APP_HOTLOAD_FOLDER=/shuffle-apps
  33. - SHUFFLE_FILE_LOCATION=/shuffle-files
  34. restart: unless-stopped
  35. orborus:
  36. image: ghcr.io/shuffle/shuffle-orborus:latest
  37. container_name: shuffle-orborus
  38. hostname: shuffle-orborus
  39. networks:
  40. - shuffle
  41. volumes:
  42. - /var/run/docker.sock:/var/run/docker.sock
  43. environment:
  44. - SHUFFLE_APP_SDK_TIMEOUT=300
  45. - ENVIRONMENT_NAME=Shuffle
  46. - ORG_ID=Shuffle
  47. - BASE_URL=http://${OUTER_HOSTNAME}:5001
  48. - DOCKER_API_VERSION=${DOCKER_API_VERSION:-1.44}
  49. - HTTP_PROXY=${HTTP_PROXY}
  50. - HTTPS_PROXY=${HTTPS_PROXY}
  51. - SHUFFLE_PASS_WORKER_PROXY=${SHUFFLE_PASS_WORKER_PROXY}
  52. - SHUFFLE_PASS_APP_PROXY=${SHUFFLE_PASS_APP_PROXY}
  53. - SHUFFLE_SKIP_PIPELINES=${SHUFFLE_SKIP_PIPELINES:-true}
  54. - SHUFFLE_PIPELINE_ENABLED=${SHUFFLE_PIPELINE_ENABLED:-false}
  55. # - SHUFFLE_APP_REPLICAS=${SHUFFLE_APP_REPLICAS}
  56. - SHUFFLE_STATS_DISABLED=true
  57. - SHUFFLE_LOGS_DISABLED=true
  58. - SHUFFLE_SWARM_CONFIG=run
  59. - CLEANUP=false
  60. - SHUFFLE_WORKER_IMAGE=ghcr.io/shuffle/shuffle-worker:latest
  61. env_file: .env
  62. restart: unless-stopped
  63. security_opt:
  64. - seccomp:unconfined
  65. opensearch:
  66. image: opensearchproject/opensearch:3.2.0
  67. hostname: shuffle-opensearch
  68. container_name: shuffle-opensearch
  69. environment:
  70. - "OPENSEARCH_JAVA_OPTS=${SHUFFLE_OPENSEARCH_JAVA_OPTS:--Xms1024m -Xmx1024m}" # override in .env for larger hosts
  71. - bootstrap.memory_lock=true
  72. - DISABLE_PERFORMANCE_ANALYZER_AGENT_CLI=true
  73. - cluster.initial_master_nodes=shuffle-opensearch
  74. - cluster.routing.allocation.disk.threshold_enabled=false
  75. - cluster.name=shuffle-cluster
  76. - node.name=shuffle-opensearch
  77. - node.store.allow_mmap=false
  78. - discovery.seed_hosts=shuffle-opensearch
  79. - OPENSEARCH_INITIAL_ADMIN_PASSWORD=${SHUFFLE_OPENSEARCH_PASSWORD}
  80. ulimits:
  81. memlock:
  82. soft: -1
  83. hard: -1
  84. nofile:
  85. soft: 65536
  86. hard: 65536
  87. volumes:
  88. - shuffle-database:/usr/share/opensearch/data:z
  89. ports:
  90. - "${SHUFFLE_OPENSEARCH_PORT:-9200}:9200"
  91. networks:
  92. - shuffle
  93. restart: unless-stopped
  94. # OPTIONAL: advanced monitoring with cAdvisor
  95. # If you have a seperate orborus config YAML on another server,
  96. # Please add it there as well if you want to monitor that server too.
  97. # FYI: both servers will show up on different dashboards.
  98. # cadvisor:
  99. # image: gcr.io/cadvisor/cadvisor:latest
  100. # volumes:
  101. # - /:/rootfs:ro
  102. # - /var/run:/var/run:ro
  103. # - /sys:/sys:ro
  104. # - /var/lib/docker/:/var/lib/docker:ro
  105. # - /dev/disk/:/dev/disk:ro
  106. # - /var/run/docker.sock:/var/run/docker.sock:ro
  107. # ports:
  108. # - "8080:8080"
  109. # privileged: true
  110. # devices:
  111. # - /dev/kmsg:/dev/kmsg
  112. # networks:
  113. # - shuffle
  114. #memcached:
  115. # image: memcached:latest
  116. # container_name: shuffle-cache
  117. # hostname: shuffle-cache
  118. # command: memcached -m 2048 -c 2500
  119. # environment:
  120. # - MEMCACHED_MEMORY=2048
  121. # - MEMCACHED_MAX_CONNECTIONS=2500
  122. # ports:
  123. # - 11211:11211
  124. # networks:
  125. # - shuffle
  126. # - swarm_executions
  127. #docker-socket-proxy:
  128. # image: tecnativa/docker-socket-proxy
  129. # container_name: docker-socket-proxy
  130. # hostname: docker-socket-proxy
  131. # privileged: true
  132. # environment:
  133. # - SERVICES=1
  134. # - TASKS=1
  135. # - NETWORKS=1
  136. # - NODES=1
  137. # - BUILD=1
  138. # - IMAGES=1
  139. # - GRPC=1
  140. # - CONTAINERS=1
  141. # - PLUGINS=1
  142. # - SYSTEM=1
  143. # - VOLUMES=1
  144. # - INFO=1
  145. # - DISTRIBUTION=1
  146. # - POST=1
  147. # - AUTH=1
  148. # - SECRETS=1
  149. # - SWARM=1
  150. # volumes:
  151. # - /var/run/docker.sock:/var/run/docker.sock
  152. # networks:
  153. # - shuffle
  154. #
  155. volumes:
  156. shuffle-database:
  157. driver: local
  158. driver_opts:
  159. type: none
  160. device: ${DB_LOCATION}
  161. o: bind
  162. networks:
  163. shuffle:
  164. driver: bridge
  165. # driver_opts:
  166. # com.docker.network.driver.mtu: 1460
  167. # uncomment to set MTU for swarm mode. MTU should be whatever is your host's preferred MTU is: https://shuffler.io/docs/troubleshooting#TLS_timeout_error/Timeout_Errors/EOF_Errors