回転台に乗せての撮影
0:26
YOLO NAS pose
1:16
10 ай бұрын
Programmable LED
2:05
Жыл бұрын
LEDアラーム
0:41
Жыл бұрын
DuckBrothers検出
2:49
Жыл бұрын
Пікірлер
@正体教えて-777
@正体教えて-777 4 күн бұрын
電話怖い
@تات-ظ1ع
@تات-ظ1ع 13 күн бұрын
ثض١١١١١
@藤平英夫
@藤平英夫 2 ай бұрын
l
@sosokatk53193
@sosokatk53193 3 ай бұрын
ただの詐欺の 電話だから、 詐欺師は、 卑怯なことするから だめだと思います😢
@ラーナーズ
@ラーナーズ 3 ай бұрын
突然のコメント失礼します。 現在大学で人物追跡に関して勉強しています。 いくつかお聞きしたいことがあるのですが、よろしいでしょうか
@SIN-ef5gm
@SIN-ef5gm 3 ай бұрын
はい。私に分かることであれば・・・
@ラーナーズ
@ラーナーズ 3 ай бұрын
@@SIN-ef5gm import cv2 import os import csv from ultralytics import YOLO from collections import defaultdict import numpy as np from datetime import datetime from shapely.geometry import Point from shapely.geometry.polygon import Polygon import threading import gc # 定期的にガベージコレクションを実行 gc.collect() # エリア設定 multiplier = 1 # カメラ1エリア設定[(右上), (右下), (左下), (左上)] area1_list = [(490, 180), (580, 280), (370, 500), (230, 420)] area2_list = [(350, 50), (470, 140), (220, 380), (100, 260)] area1 = [(x * multiplier, y * multiplier) for x, y in area1_list] area2 = [(x * multiplier, y * multiplier) for x, y in area2_list] polygon1 = Polygon(area1) polygon2 = Polygon(area2) # カメラ2エリア設定[(右上), (右下), (左下), (左上)] area3_list = [(450, 220), (580, 350), (390, 570), (170, 460)] area4_list = [(330, 50), (400, 200), (140, 430), (20, 300)] area3 = [(x * multiplier, y * multiplier) for x, y in area3_list] area4 = [(x * multiplier, y * multiplier) for x, y in area4_list] polygon3 = Polygon(area3) polygon4 = Polygon(area4) # カメラ3エリア設定[(右上), (右下), (左下), (左上)] area5_list = [(450, 220), (530, 350), (300, 570), (130, 460)] area6_list = [(280, 100), (370, 230), (80, 450), (10, 300)] area5 = [(x * multiplier, y * multiplier) for x, y in area5_list] area6 = [(x * multiplier, y * multiplier) for x, y in area6_list] polygon5 = Polygon(area5) polygon6 = Polygon(area6) # フォルダを作成してCSVファイルの保存パスを指定 output_folder = "./count" os.makedirs(output_folder, exist_ok=True) # CSVファイルの保存パス csv_file_path = "./count/overall_count.csv" # CSVファイルのヘッダー csv_header = ["Camera", "count", "area1_count", "area2_count", "Time"] # CSVファイルを開いてヘッダーを書き込み with open(csv_file_path, mode='w', newline='') as csv_file: csv_writer = csv.writer(csv_file) csv_writer.writerow(csv_header) # モデル読み込み model = YOLO('./best.pt') # カメラ情報 camera_sources = [ ("Camera1", "rtsp://root:[email protected]/axis-media/media.amp"), ("Camera2", "rtsp://root:[email protected]/axis-media/media.amp"), ("Camera3", "rtsp://root:[email protected]/axis-media/media.amp") ] # Cameraのエリア設定 camera_areas = { "Camera1": [polygon1, polygon2], "Camera2": [polygon3, polygon4], "Camera3": [polygon5, polygon6] } # ウィンドウサイズ window_sizes = { "Camera1": (640, 640), "Camera2": (640, 640), "Camera3": (640, 640) } # フォント設定 font = cv2.FONT_HERSHEY_SIMPLEX font_scale = 1.0 font_color = (255, 255, 255) font_thickness = 2 def process_camera(camera_name, camera_source): cap = cv2.VideoCapture(camera_source) track_id_to_csv = {} # idを保管する辞書 frame_count = 0 # ウィンドウの作成とサイズ設定 cv2.namedWindow(f"{camera_name} YOLOv8 Tracking", cv2.WINDOW_NORMAL) cv2.resizeWindow(f"{camera_name} YOLOv8 Tracking", *window_sizes[camera_name]) # カメラごとにエリアを設定 if camera_name == "Camera1": polygon1_camera = polygon1 polygon2_camera = polygon2 elif camera_name == "Camera2": polygon1_camera = polygon3 polygon2_camera = polygon4 elif camera_name == "Camera3": polygon1_camera = polygon5 polygon2_camera = polygon6 else: polygon1_camera = None polygon2_camera = None while cap.isOpened(): success, frame = cap.read() if success: frame_count += 1 #fram:カメラのフレーム画像 #persist=True:追跡維持 #conf=0.2:検出の信頼性のしきい値 results = model.track(frame, persist=True, conf=0.2, device='0', tracker="bytetrack.yaml") if results[0].boxes.id is None: continue boxes = results[0].boxes.xywh.cpu().numpy() # IDを取得する track_ids = results[0].boxes.id.cpu().numpy().astype(int) count = len(boxes) annotated_frame = results[0].plot() if camera_name == "Camera1": cv2.polylines(annotated_frame, [np.array(area1)], isClosed=True, color=(0, 0, 255), thickness=2) cv2.polylines(annotated_frame, [np.array(area2)], isClosed=True, color=(255, 0, 0), thickness=2) elif camera_name == "Camera2": cv2.polylines(annotated_frame, [np.array(area3)], isClosed=True, color=(0, 0, 255), thickness=2) cv2.polylines(annotated_frame, [np.array(area4)], isClosed=True, color=(255, 0, 0), thickness=2) elif camera_name == "Camera3": cv2.polylines(annotated_frame, [np.array(area5)], isClosed=True, color=(0, 0, 255), thickness=2) cv2.polylines(annotated_frame, [np.array(area6)], isClosed=True, color=(255, 0, 0), thickness=2) # 初期化 area_count1 = 0 area_count2 = 0 for box, track_id in zip(boxes, track_ids): x, y, w, h = box point = Point(float(x), float(y)) # トラックIDごとのCSVファイルを管理 if track_id not in track_id_to_csv: csv_file = os.path.join(output_folder, f"{camera_name}_track_{track_id}.csv") with open(csv_file, 'w', newline='') as csvfile: csv_writer = csv.writer(csvfile) csv_writer.writerow(["X", "Y", "area", "Time"]) # ヘッダを書き込む track_id_to_csv[track_id] = csv_file if polygon1_camera.contains(point): # cameraごとにエリアが異なるため、area1に人がいた場合 area_count1 += 1 if int(frame_count % cap.get(cv2.CAP_PROP_FPS)) == 0: # 1秒ごとに各idの位置座標を記録 with open(track_id_to_csv[track_id], 'a', newline='') as csvfile: csv_writer = csv.writer(csvfile) current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S") csv_writer.writerow([x, y, "1", current_time]) if polygon2_camera.contains(point): # cameraごとにエリアが異なるため、area2に人がいた場合 area_count2 += 1 if int(frame_count % cap.get(cv2.CAP_PROP_FPS)) == 0: # 1秒ごとに各idの位置座標を記録 with open(track_id_to_csv[track_id], 'a', newline='') as csvfile: csv_writer = csv.writer(csvfile) current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S") csv_writer.writerow([x, y, "2", current_time]) # 現在の時刻を取得 current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S") if int(frame_count % cap.get(cv2.CAP_PROP_FPS)) == 0: # 1秒ごとに各エリアの人数を記録 # CSVファイルにデータを書き込み with open(csv_file_path, mode='a', newline='') as csv_file: csv_writer = csv.writer(csv_file) csv_writer.writerow([camera_name, count, area_count1, area_count2, current_time]) # 統一されたフォント設定で表示 cv2.putText(annotated_frame, f"count: {count}", (10, 30), font, font_scale, font_color, font_thickness) cv2.putText(annotated_frame, f"area1: {area_count1}", (10, 90), font, font_scale, (0, 0, 255), font_thickness) cv2.putText(annotated_frame, f"area2: {area_count2}", (10, 150), font, font_scale, (255, 0, 0), font_thickness) cv2.putText(annotated_frame, current_time, (450, 620), font, 0.5, (0, 0, 255), 2) cv2.imshow(f"{camera_name} YOLOv8 Tracking", annotated_frame) if cv2.waitKey(1) & 0xFF == ord("q"): break else: break cap.release() cv2.destroyAllWindows() threads = [] # 各カメラを別スレッドで処理 for camera_name, camera_source in camera_sources: thread = threading.Thread(target=process_camera, args=(camera_name, camera_source)) thread.start() threads.append(thread) # 全てのスレッドが終了するのを待機 for thread in threads: thread.join() 上記のコードでも2020/9/15の動画の様に別カメラで映った同一人物に同じIDを振り分けられる様にしたいです。 どうすれば良いでしょうか
@kdmnr
@kdmnr 3 ай бұрын
@@SIN-ef5gm yolov8を用いて複数台のカメラから同一人物を判定する方法について教えていただきたいです。
@banaa.957
@banaa.957 5 ай бұрын
ADAM
@荒巻純子-b7j
@荒巻純子-b7j 7 ай бұрын
1234567890*#
@ดินสอเกตแก้ว
@ดินสอเกตแก้ว 8 ай бұрын
🛌🏻💾📱📟🔌🏪🏩
@albertinalaurindo6769
@albertinalaurindo6769 10 ай бұрын
1234567890😅
@ホーン-p8t
@ホーン-p8t Жыл бұрын
Alexa😂
@Khaled-fo7tr
@Khaled-fo7tr Жыл бұрын
Would you like to share this amazing scripts ?😊
@SIN-ef5gm
@SIN-ef5gm Жыл бұрын
The code will be released. I'm preparing a blog now. * I'm sorry, but it will be Japanese thank you
@SIN-ef5gm
@SIN-ef5gm Жыл бұрын
dev.classmethod.jp/articles/yolov5-nvidia-jetson-agx-orin/
@dfn808
@dfn808 Жыл бұрын
Cool!
@aisyjeff95
@aisyjeff95 2 жыл бұрын
Amazing video! But how do you connect the SPM1423 microphone via I2S? If possible, can I see the hardware setup of it? Also, is it possible to connect multiple SPM1423 microphone to the CORE2?
@leconghieu5738
@leconghieu5738 2 жыл бұрын
Can you send me the code for this post?
@MiguelAngel-mf3yu
@MiguelAngel-mf3yu 3 жыл бұрын
nice bro , please where is dowloand the code ? thanks
@SIN-ef5gm
@SIN-ef5gm 3 жыл бұрын
Here it is dev.classmethod.jp/articles/m5stack-core2-for-aws-dozing/
@MiguelAngel-mf3yu
@MiguelAngel-mf3yu 3 жыл бұрын
@@SIN-ef5gm Thanks, i can install in the version core2, or only for core2 Amazon?
@ミートボール-j4t
@ミートボール-j4t 3 жыл бұрын
もっと細かく撮る必要があるんだなってわかる動画
@tonyjames9596
@tonyjames9596 3 жыл бұрын
こんにちはボス、あなたはこのウェブサイト www.sms-verification.online/JP 無料の受信SMS検証プラットフォームを試すことができます、私は私のWhatsAppアカウントを作成するためにそれを使用しました。
@shreerangaraju1013
@shreerangaraju1013 4 жыл бұрын
Your code is no longer working. Could you be able to fix it?
@SIN-ef5gm
@SIN-ef5gm 4 жыл бұрын
sorry I don't have the time
@shreerangaraju1013
@shreerangaraju1013 4 жыл бұрын
@@SIN-ef5gm No worries. I'm stuck and need some help. Could you be able to help me though?
@iamduy
@iamduy 7 жыл бұрын
Can share me your source code.. Please!! Thanks you [email protected]