Skocz do zawartości
Belferek

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

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)    

 

Udostępnij ten post


Link to post
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »

×