Kamera USB opencv python

# pip install opencv-python

# podstawowe funkcje

# Wczytaj obraz (zamień 'obraz.jpg' na własną nazwę pliku)
image_path = "obraz.jpg" 
img = cv2.imread(image_path)

# Zapisz obraz z wykrytymi obiektami
cv2.imwrite("wynik.jpg", img) 

import cv2

image_path = "bok10.jpg"
img = cv2.imread(image_path)

cv2.imshow("newbok10",img)
cv2.imwrite("newimg.jpg",img)
cv2.waitKey(0)
cv2.destroyAllWindows()

Łączenie z kamerą i otwieranie okienka z obrazem z OPEN CV

# pip install opencv-python

import cv2

# Otwórz kamerę (0 to domyślna kamera)
cap = cv2.VideoCapture(1)

if not cap.isOpened():
    print("Błąd: Nie można otworzyć kamery")
    exit()

while True:
    ret, frame = cap.read()
    if not ret:
        print("Błąd: Nie można pobrać obrazu")
        break

    cv2.imshow("Podgląd kamery", frame)

    # Czekaj na klawisz 'q' do zamknięcia okna
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

Wykrywanie obiektów z YOLO

zdjęcie użyte w przykładach: https://pixabay.com/photos/street-sunset-building-urban-city-7544046/

# pip install ultralytics opencv-python numpy

import cv2
from ultralytics import YOLO

# Załaduj model YOLOv8 (pretrenowany na COCO)
model = YOLO("yolov8n.pt")  # Możesz użyć też "yolov8s.pt"

# Otwórz kamerę
cap = cv2.VideoCapture(1)

if not cap.isOpened():
    print("Błąd: Nie można otworzyć kamery")
    exit()

while True:
    ret, frame = cap.read()
    if not ret:
        print("Błąd: Nie można pobrać obrazu")
        break

    # Wykrywanie obiektów
    results = model(frame)

    # Rysowanie wykrytych obiektów na obrazie
    for r in results:
        for box in r.boxes:
            x1, y1, x2, y2 = map(int, box.xyxy[0])
            label = f"{model.names[int(box.cls[0])]} {box.conf[0]:.2f}"
            cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2)
            cv2.putText(frame, label, (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)

    # Pokaż obraz z wykrytymi obiektami
    cv2.imshow("YOLOv8 - Wykrywanie obiektów", frame)

    # Wyjdź po naciśnięciu 'q'
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

Wykrywanie obiektów na zdjęciu z open cv i YOLO

import cv2
from ultralytics import YOLO

# Załaduj model YOLOv8 (możesz użyć yolov8n.pt, yolov8s.pt itd.)
model = YOLO("yolov8n.pt")

# Wczytaj obraz (zamień 'obraz.jpg' na własną nazwę pliku)
image_path = "street.jpg"
img = cv2.imread(image_path)

if img is None:
    print("Błąd: Nie można załadować obrazu. Sprawdź ścieżkę do pliku!")
    exit()

# Wykrywanie obiektów na obrazie
results = model(img)

# Rysowanie wykrytych obiektów na obrazie
for r in results:
    for box in r.boxes:
        x1, y1, x2, y2 = map(int, box.xyxy[0])  # Współrzędne bounding boxa
        label = f"{model.names[int(box.cls[0])]} {box.conf[0]:.2f}"  # Nazwa obiektu + pewność
        cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0), 2)
        cv2.putText(img, label, (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)

# Pokaż obraz z wykrytymi obiektami
cv2.imshow("Wykryte obiekty", img)
cv2.imwrite("wynik.jpg", img)  # Zapisz obraz z wykrytymi obiektami
cv2.waitKey(0)  # Czeka na klawisz
cv2.destroyAllWindows()

Obliczanie ilości osób na zdjęciu

import cv2
from ultralytics import YOLO

# Załaduj model YOLOv8
model = YOLO("yolov8n.pt")  # Możesz użyć dokładniejszego np. "yolov8s.pt"

# Wczytaj obraz
image_path = "street.jpg"  # Podmień na własny plik
img = cv2.imread(image_path)

if img is None:
    print("Błąd: Nie można załadować obrazu!")
    exit()

# Wykrywanie obiektów
results = model(img)

# Licznik osób
person_count = 0

# Rysowanie wykrytych obiektów i liczenie osób
for r in results:
    for box in r.boxes:
        class_id = int(box.cls[0])  # Pobierz ID klasy
        label = model.names[class_id]  # Pobierz nazwę klasy
        
        if label == "person":  # Sprawdź, czy to osoba
            person_count += 1
            x1, y1, x2, y2 = map(int, box.xyxy[0])  # Pobierz współrzędne
            cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0), 2)
            cv2.putText(img, label, (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)

# Pokaż wynik
print(f"Liczba osób na zdjęciu: {person_count}")
cv2.imshow("Wykryte osoby", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

Leave a Comment

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Scroll to Top