Skocz do zawartości

OpenCV i Visual Studio 2017 - analiza obrazu z kamery w czasie rzeczywistym


Belferek

Pomocna odpowiedź

Witam,

Jako posiadacz kamery IP chciałbym wykorzystać jej możliwości z poziomu własnego programu. Piszę własnego, gdyż to co oferuje producent (sprzedawca, dystrybutor) to woła o pomstę do nieba - kamera XBlitz ISee. Do tej pory korzystam z Pythona i jeśli chodzi o samo sterowanie pan - tilt kamerą, czy też zapis video to skrypty Pythona dają radę, lecz jeśli chodzi o analizę w czasie rzeczywistym strumienia wideo kamery już jest dużo gorzej. Jestem przekonany, że aplikacja napisana w C/C++ byłaby znacznie wydajniejszym rozwiązaniem i tu pojawia się mój brak doświadczenia w programowaniu PC w środowisku Windows. Zainstalowałem Visual Studio 2017 i OpenCV. Czy ktoś by mógł poprowadzić krok po kroku jak w tym środowisku zrealizować ten działający skrypt Pythona?

# -*- coding: utf-8 -*-
#from collections import deque
import cv2
import numpy as np
#import urllib 
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_alt2.xml')                         #klasifikator do rozpoznawania obiektow z wczytana baza twarzy

cap = cv2.VideoCapture('http://10.0.0.100:8081/videostream.cgi?loginuse=XXXXXXX&loginpas=XXXXXXXX') #DZIAŁA
#cap = cv2.VideoCapture(0)                                                                          #DZIAŁA
#cap = cv2.VideoCapture('rtsp://10.0.0.100:10554/udp/av0_0')                                        #NIE DZIAŁA

szer=cap.get(cv2.CAP_PROP_FRAME_WIDTH)
wys=cap.get(cv2.CAP_PROP_FRAME_HEIGHT)
fps=cap.get(cv2.CAP_PROP_FPS)

zmniejszenie=1
skala=float(1)/float(zmniejszenie)

print szer,"x",wys," fps:",fps
while(cap.isOpened()):
    ret, ramka = cap.read()
    gray = cv2.cvtColor(ramka, cv2.COLOR_BGR2GRAY)                                                  #zmiana zdjęcia (klatki) na skalę szarości
    gray = cv2.resize(gray, None, fx=skala, fy=skala, interpolation = cv2.INTER_CUBIC)             #zmniejszenie
    if 1: #detekcja==1: #wykrywanie twarzy
        faces = face_cascade.detectMultiScale(gray, 1.2,3,0,(20,20))                                #wyszukiwanie obiektów określonych przez bazę wczytaną w face_cascade
        for (x,y,w,h) in faces:                                                                     #rysowanie prostokątów wokół wykrytych twarzy
            cv2.rectangle(ramka,(x*zmniejszenie,y*zmniejszenie),((x+w)*zmniejszenie,(y+h)*zmniejszenie),(255,0,0),2)
    cv2.imshow('NetCam',ramka)
    cv2.imshow('Gray',gray)
    k = cv2.waitKey(1)
    if k==27: break
    
cap.release()
cv2.destroyAllWindows()
exit(0)    

 

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.